|
在别人的经验上,自己曾经定制过Slitaz4.0,比较成功,该Linux 小巧,完全内存运行,可以上网、看电影等。
自出现Slitaz5.0后,我也先后定制过,上网看电影也可以,但美中不足的是中文输入法的问题未得到解决,在
此希望各位大侠帮帮忙,看能不能解决此问题。现将我定制的过程供大家分享,定制过程如下:
本文是针对LiveCD - 开发版slitaz-RC-3.iso(slitaz-5.0-rc3.iso)进行的定制:
添加中文支持、中文输入法以及安装应用软件。
一、所需软件的下载
1、LiveCD - 开发版slitaz-RC-3.iso(slitaz-5.0-rc3.iso)下载地址:http://www.slitaz.org/cn/get/
2、grldr、grldr.mbr下载地址: http://grub4dos.chenall.net/
3、SISO下载地址: http://yun.baidu.com/share/link? ... 98012847#path=%252F
4、SISO使用说明: http://bbs.wuyou.net/forum.php?m ... p;page=1#pid2383133
二、启动Slitaz Linux
1、各种启动方式的结构及其所需文件
(ud)C:\grldr、grldr.mbr (Grldr方式)
(ud)C:\Boot\GRUB\message、SISO、USB_ACC.0PE、MENU.LST (Grldr方式)
C:\bootmgr (bootmgr方式)
C:\Boot\BCD、boot.sdi、memtest.exe、BOOTSTAT.DAT (bootmgr方式)
C:\Boot\Fonts\chs_boot.ttf、wgl4_boot.ttf (bootmgr方式)
C:\Boot\zh-CN\bootmgr.exe.mui、memtest.exe.mui (bootmgr方式)
C:\NTDETECT.COM、ntldr、bootfont.bin、boot.ini (ntldr方式)
(ud)C:\Boot\ISO\win7pe.ISO (启动Win7PE-ISO方式)
(ud)C:\Boot\ISO\boot.WIM (启动Win7PE-WIM方式)
(ud)C:\Boot\ISO\Slitaz.iso //Slitaz Linux 中文版(ISO方式)
(ud)C:\Boot\ISO\bzImage //bzImage从Slitaz.iso解压出来
(ud)C:\Boot\ISO\rootfs.gz //rootfs.gz从Slitaz.iso解压出来(gz方式)
2、在原启动系统中添加Grub启动方式
1)、在以NT5方式启动的WinXP系统中添加
在Boot.ini文件中的[operating systems]域内添加"C:\GRLDR=Grub 启动方式"
2)、在以NT6方式启动的Win7系统中添加
在BCD中添加实模式启动方式,将的grldr、grldr.mbr文件复制到C:\盘
3)、修改Grub的菜单中完成Slitaz的启动。
title 【01】 Slitaz Linux 中文版-ISO方式/Boot/iso/slitaz-5.0-rc3.iso
map --mem (bd)/Boot/iso/slitaz-5.0-rc3.iso (0xff)
map --hook
chainloader (0xff)
boot
title 【02】 Slitaz Linux 中文版-ISO方式/Boot/iso/slitaz-5.0-rc3.iso
SISO RUN --mem (bd)/Boot/iso/slitaz-5.0-rc3.iso
title 【03】 Slitaz Linux 中文版-gz方式/Boot/iso/rootfs.gz
# 将bzImage和rootfs.gz文件从slitaz-5.0-rc3.iso文件中提取出来存放在/Boot/iso/下
find --set-root --ignore-cd /Boot/iso/bzImage
kernel (bd)/Boot/iso/bzImage root=/dev/null vga=normal autologin
initrd (bd)/Boot/iso/rootfs.gz
title 【04】 启动/Boot/iso/目录下*.iso *.img文件(菜单形式)
set showpath=1
set showdir=0
siso run --automenu-all show.iso.img subdir=2 /Boot/iso/ --end exit
#启动/Boot/Slitaz/目录下*.iso *.img文件(列表形式)
#siso run --autolist-all show.iso.img subdir=2 /Boot/iso/ --end exit
查看支持的分辨率:915resolution -l
修改分辨率:915resolution 38 1280 800
二、Slitaz 的定制修改详细过程
1、下载矢量字体、中文locale、输入法及所需软件包
下载地址:http://mirror.switch.ch/ftp/mirror/slitaz/packages/5.0/
wqy-microhei-0.2.0-beta.tazpkg 文泉驿微米黑矢量字体
locale-zh_CN-5.0.tazpkg 中文locale
sudo-1.8.10p2.tazpkg tux用户使用root权限
2、利用已下载的slitaz-5.0-rc3.iso,按照上面的方法启动到Slitaz linux系统,
在root权限的终端下运行ins5zh_CN.sh脚本,完成中文支持的安装。
####ins5zh_CN.sh内容开始####
#!/bin/sh
TDIR=`pwd`
if test $(id -u) != 0 ; then
echo -e "该脚脚本需要root权限的终端下运行。"
echo -e "请运行: subox sh ./`basename $0`或sudo sh ./`basename $0`"
echo -e "或输入su(密码root)后运行: sh ./`basename $0` \n"
exit 0
fi
ins(){
#本文是针对LiveCD - 开发版slitaz-RC-3.iso(slitaz-5.0-rc3.iso)进行的定制
#下载地址:http://www.slitaz.org/cn/get/
#矢量字体、中文locale、输入法及所需软件包
#下载地址:http://mirror.switch.ch/ftp/mirror/slitaz/packages/5.0/
#第一步:安装字体以及中文支持,修正时间(无网需下载所需tazpkg文件;联网状态将 -i改为 -gi)
tazpkg -i wqy-microhei-0.2.0-beta.tazpkg --forced
tazpkg -i locale-zh_CN-5.0.tazpkg --forced
echo LANG=zh_CN > /etc/locale.conf
echo LC_ALL=zh_CN >> /etc/locale.conf
echo us > /etc/keymap.conf
echo Asia/Shanghai > /etc/TZ
echo "hwclock -l -s" >> /etc/init.d/local.sh
#删除无用包:alsaplayer、asunder、locale-de、locale-es、
# locale-fr、locale-pt_BR、grub4dos-linux包
echo "Del alsaplayer、asunder、locale-de、locale-es、\
locale-fr、locale-pt_BR、grub4dos-linux OK!"
for i in alsaplayer asunder locale-de locale-es locale-fr \
locale-pt_BR grub4dos-linux ; do
echo y | tazpkg -r $i
done
##设置打开文件夹的右键
echo file:/// / >$TDIR/.gtk-bookmarks
echo file:///media /media >>$TDIR/.gtk-bookmarks
echo file:///mnt /mnt >>$TDIR/.gtk-bookmarks
echo file:///home/tux tux >>$TDIR/.gtk-bookmarks
cp -ar $TDIR/.gtk-bookmarks /root/.gtk-bookmarks
chown root:root /root/.gtk-bookmarks
chmod a=rwx /root/.gtk-bookmarks
#chmod 666 /root/.gtk-bookmarks
#删除除zh_CN外的语言,设置系统语言为zh_CN
echo "Del other language,set language=zh_CN OK!"
rm -rf /usr/share/i18n/locales/de* /usr/share/i18n/locales/es*
rm -rf /usr/share/i18n/locales/fr* /usr/share/i18n/locales/pt*
rm -rf /usr/share/i18n/locales/en_CA
tazbox locale
tazpkg -i sudo-1.8.10p2.tazpkg --forced
#安装sudo-1.8.10p2.tazpkg需后在root权限下修改/etc/sudoers文件
#在root ALL=(ALL) ALL行后添加tux ALL = NOPASSWD: ALL
#第二步:安装应用程序
mv prog/* ./
#1、安装应用程序(ins5prog.sh内容附后)
sh ./ins5prog.sh
#2、安装flashplayer插件flashplayer-11.2.tar.gz(insflash.sh内容附后)
sh ./insflash.sh
#3、安装自制工具mytool.tar.gz和修改后的配置文件myconf.tar.gz(ins5my.sh内容附后)
sh ./ins5my.sh
#修正时间日期
hwclock -l -s
#安装bash--无网需下载所需tazpkg文件;联网状态将 -i改为 -gi
for i in readline-6.3 bash-4.3.39; do
tazpkg -i $i.tazpkg --forced
done
rm -rf prog *.tazpkg ins5prog.sh insflash.sh ins5my.sh ins5zh_CN.sh
echo "Change Slitaz 5.0 OK!"
}
ins | sed -e s'/\[^Gm]*./ /g' -e s'/^=.*//' | \
yad --text-info \
--width=480 --height=260 --center --on-top \
--title="Install Slitaz5.0 zh_CN" --window-icon=$icon \
--margins=4 --button="gtk-close:0"
exit 0
####ins5zh_CN.sh内容结束####
#------------------------------------------------------------------------------
####ins5prog.sh内容开始####
#!/bin/sh
TDIR=`pwd`
if test $(id -u) != 0 ; then
echo -e "该脚脚本需要root权限的终端下运行。"
echo -e "请运行: subox sh ./`basename $0`或sudo sh ./`basename $0`"
echo -e "或输入su(密码root)后运行: sh ./`basename $0` \n"
exit 0
fi
#应用程序下载地址http://mirror.slitaz.org/packages/5.0/
#1、安装音乐播放器deadbeef-0.5.6--无网需下载所需tazpkg文件;联网状态将 -i改为 -gi
for i in libsamplerate-0.1.8 deadbeef-0.5.6 ; do
tazpkg -i $i.tazpkg --forced
done
#2、安装iso镜像大师isomaster-1.3.13.tazpkg
tazpkg -i isomaster-1.3.13.tazpkg --forced
#3、安装文件属性查看file-5.22--无网需下载所需tazpkg文件;联网状态将 -i改为 -gi
for i in libmagic-5.22 file-5.22 ; do
tazpkg -i $i.tazpkg --forced
done
#4、安装网页浏览器midori-0.5.2--无网需下载所需tazpkg文件;联网状态将 -i改为 -gi
for i in libnotify-0.7.6 libunique-1.1.6 xorg-libXss-1.2.1 midori-0.5.2 ; do
tazpkg -i $i.tazpkg --forced
done
#5、安装视频播放器mplayer-1.1.1--无网需下载所需tazpkg文件;联网状态将 -i改为 -gi
tazpkg -i ./mplayer-1.1.tazpkg --forced
#此处 mplayer-1.1.tazpkg是将mplayer-1.1.1所需的tazpkg文件解压合并后重新打包生成的tazpkg文件。
#for i in xorg-libXv-1.0.8 libtheora-1.1.1 lame-3.99.4 giflib-4.1.6 enca-1.13 \
# libusb-1.0.18 libusb-compat-0.1.4 libftdi-0.18 libirman-0.4.5 ; do
# tazpkg -i $i.tazpkg --forced
#done
#for i in readline-6.3 libsndfile-1.0.23 libsamplerate-0.1.8 jack-audio-connection-kit-0.121.3 \
# portaudio-v19_20110326 lirc-0.9.0 audiofile-0.3.4 esound-0.2.41 libmng-1.0.10 \
# xvidcore-1.3.2 x264-20120522-2245 xorg-libXss-1.2.1 mplayer-1.1.1 ; do
# tazpkg -i $i.tazpkg --forced
#done
#echo Type=Application >>/usr/share/applications/mplayer.desktop
echo "Install slitaz 5.0 program OK!!!"
####ins5prog.sh内容结束####
#------------------------------------------------------------------------------
####insflash.sh内容开始####
#!/bin/sh
TDIR=`pwd`
if test $(id -u) != 0 ; then
echo -e "该脚脚本需要root权限的终端下运行。"
echo -e "请运行: subox sh ./`basename $0`或sudo sh ./`basename $0`"
echo -e "或输入su(密码root)后运行: sh ./`basename $0` \n"
exit 0
fi
#解压flashplayer-11.2.tar.gz文件
tar xzf ./flashplayer-11.2.tar.gz
cp -ar ./flashplayer-11.2/usr/* /usr/
#设置权限
chmod 755 /usr/share/flash/libflashplayer.so
chown root.root /usr/share/flash/libflashplayer.so
for i in /usr/lib/firefox/*.so ; do
[ -f $i ] && [ -z "`ls /usr/lib/$(basename $i)`" ] && ln -sf $i /usr/lib/
done
[ -d /usr/lib/mozilla/plugins ] || mkdir -p /usr/lib/mozilla/plugins
ln -s /usr/share/flash/libflashplayer.so /usr/lib/mozilla/plugins
[ -d /usr/lib/opera/plugins ] || mkdir -p /usr/lib/opera/plugins
ln -s /usr/share/flash/libflashplayer.so /usr/lib/opera/plugins/libflashplayer.so
rm ./flashplayer-11.2 ./flashplayer-11.2.tar.gz -r -f
echo -e "Install Flashplayer-11.2 plugin OK!!\n"
####insflash.sh内容结束####
#------------------------------------------------------------------------------
####ins5my.sh内容开始####
#!/bin/sh
TDIR=`pwd`
if test $(id -u) != 0 ; then
echo -e "该脚脚本需要root权限的终端下运行。"
echo -e "请运行: subox sh ./`basename $0`或sudo sh ./`basename $0`"
echo -e "或输入su(密码root)后运行: sh ./`basename $0` \n"
exit 0
fi
#安装myconf.tar.gz(已修改好的开始菜单、右键菜单、desktop文件)
#生成myconf.tar.gz命令tar -ca myconf/* -f myconf.tar.gz
#解压myconf.tar.gz命令tar -xvf myconf.tar.gz
tar -xvf ./myconf.tar.gz
#修正tazusb打包后不能启动的错误
rm -rf /usr/bin/tazusb
cp -ar ./myconf/usr/bin/* /usr/bin/
chown root:root /usr/bin/tazusb
chmod u=rwx,g=rx,o=rx /usr/bin/tazusb
#修改开始菜单、右键菜单、desktop文件
rm -rf /home/tux/.config/lxpanel
rm -rf /home/tux/Desktop/slitaz-doc.desktop
cp -ar ./myconf/config/* /home/tux/.config/
cp -ar ./myconf/usr/share/applications/pcmanfm-root.desktop /usr/share/applications/
cp -ar ./myconf/usr/share/icons/* /usr/share/icons/
#设置root用户的桌面、开始菜单栏与右键与tux用户一致
cp -ar /home/tux/.config /root/
echo "Install myconf.tar.gz OK!!!"
#---------------------------------------------------------------------------------------------------------------------------
#安装自制工具mytool.tar.gz(adsl\tazto\myrootfs),并修改其的权限
#生成mytool.tar.gz命令tar -ca mytool/* -f mytool.tar.gz
#解压mytool.tar.gz命令tar -xvf mytool.tar.gz
#adsl 网络设置工具:adsl、动态IP、静态IP、禁用IP(内容附后)
#tazto 根据tazusb修改的工具(tazto rootfs打包rootfs.gz)(内容附后)
#myrootfs 将当前系统打包成rootfs.gz(不需卸载硬盘)(内容附后)
tar -xvf ./mytool.tar.gz
cp -ar ./mytool/bin/* /usr/bin/
chown root:root /usr/bin/tazto
chmod u=rwx,g=rx,o=rx /usr/bin/tazto
chown root:root /usr/bin/adsl
chmod u=rwx,g=rx,o=rx /usr/bin/adsl
chown root:root /usr/bin/adsl1
chmod u=rwx,g=rx,o=rx /usr/bin/adsl1
chown root:root /usr/bin/myrootfs
chmod u=rwx,g=rx,o=rx /usr/bin/myrootfs
#chmod 755 /usr/bin/myrootfs
#添加常用网站打开方式
cp -ar ./mytool/desk/*.desktop /home/tux/Music/
rm -rf /usr/share/applications/ads*.desktop
mv /home/tux/Music/ads*.desktop /usr/share/applications/
#添加桌面背景图片
cp -ar ./mytool/images/* /usr/share/images/
cp -ar ./mytool/mirrors /var/lib/tazpkg/
cp -ar ./mytool/oprootfs.sh /home/tux/
echo "Install mytool.tar.gz OK!!!"
#---------------------------------------------------------------------------------------------------------------------------
#在桌面添加deadbeef\midori\mplayer\adsl工具
cp -ar /usr/share/applications/deadbeef.desktop /home/tux/Desktop/
cp -ar /usr/share/applications/midori.desktop /home/tux/Desktop/
cp -ar /usr/share/applications/mplayer.desktop /home/tux/Desktop/
cp -ar /usr/share/applications/adsl.desktop /home/tux/Desktop/
rm -rf /home/tux/Desktop/slitaz-doc.desktop
rm -rf ./*.tar.gz ./mytool/
####ins5my.sh内容结束####
#------------------------------------------------------------------------------
第三步:修改开始菜单、右键快捷菜单及其中文显示
linux菜单由三个部分来完成。
menu文件:用来把desktop文件集中起来形成菜单的样式。
位置 全局:/etc/xdg/menus/applications.menu
个人:~/.config/menus/
directory文件:用来描述菜单的目录层次结构,文件中name的值就是菜单项名称
/usr/share/desktop-directories/*.directory
desktop文件:用来对应具体的应用程序,文件中Categories的值对应*.directory文件中name的值
/usr/share/applications/*.desktop
开始菜单任务栏的位置(个人优先全局)
个人:/home/tux/.config/lxpanel/slitaz/panels/bottom
全局:/etc/lxpanel/slitaz/panels/bottom和panel
右键菜单的位置(个人优先全局)
个人:/home/tux/.config/openbox/menu.xml
全局:/etc/xdg/openbox/menu.xml
修改desktop文件(显示中文名称)
位置: /usr/share/applications/*.desktop
将修改后的开始菜单、右键菜单以及desktop文件打包到myconf.tar.gz文件
生成myconf.tar.gz命令tar -ca myconf/* -f myconf.tar.gz
解压myconf.tar.gz命令tar -xvf myconf.tar.gz
第四步:添加应用程序
squashfs-4.3.tazpkg md压缩解压工具
abiword2.8.6.tazpkg 办公软件
第五步:安装fcitx输入法(未通过)???????????????????
tazpkg -i libfcitx-4.1.2.tazpkg --forced
tazpkg -i fcitx-skin-default-4.1.2.tazpkg --forced
tazpkg -i fcitx-4.1.2.tazpkg --forced
#tazpkg get-install fcitx #从镜像网站上下载fcitx输入法并安装
修改家目录下的.xinitrc文件,在开头加入
echo export LANG="zh_CN.UTF-8" >./tmpfc
echo export LC_ALL="zh_CN.UTF-8" >>./tmpfc
echo export LC_CTYPE="zh_CN.UTF-8" >>./tmpfc
echo export XMODIFIERS="@im=fcitx" >>./tmpfc
echo export QT_IM_MODULE=fcitx >>./tmpfc
echo export GTK_IM_MODULE=fcitx >>./tmpfc
echo "fcitx &" >>./tmpfc
cat ./.xinitrc >>tmpfc
rm -rf ./.xinitrc
mv ./tmpfc .xinitrc
第六步:将rootfs.gz打包进去iso
1、利用tazto脚本将修改后的当前文件系统打包成rootfs.gz(删除声卡和屏幕设置)进行测试通过。
2、利用myrootfs脚本将修改后的当前文件系统打包成rootfs.gz(删除声卡和屏幕设置)进行测试通过。
3、利用tazusb脚本将修改后的当前文件系统打包成rootfs.gz(删除声卡和屏幕设置)进行测试通过。
4、使用iso-master大师,双击打开原来的iso,在下框中进入boot,将原来
的rootfs.gz删掉,添加新的rootfs.gz到boot,最后另存为,搞定。
ADSL/宽带账户拨号指南
先用root权限运行pppoe-setup设置好账号和密码及DNS域名服务器,
再用pppoe-start运行就能上网了。
第一步:用root权限运行pppoe-setup设置好账号和密码及DNS域名服务器
1.Enter your PPPoE user name:输入您的ADSL/宽带账号:
2.Enter the Ethernet interface connected to the DSL modem:选择网卡,用默认的eth0就可以了
3.Enter the demand value:问你要不要设置空闲多少秒后自动断线的时间。用默认的no就可以了
4.Enter the DNS information here:设置域名服务器的地址,这步很重要一定要设置。
添入114.114.114.114,备用服务器地址填入61.139.2.69(202.98.96.68)
5.Please enter your PPPoE password:请输入您账户的密码,会要求你输俩次
6.Choose a type of firewall:选择防火墙的安全等级,选0就可以了
7.Accept these settings and adjust configuration files:核对账号密码,DNS地址无误后,填y即可
第二步:运行pppoe-start
运行pppoe-status 查看网络连接的状态。
运行pppoe-stop 断开连接。
第三步:测试DNS是否连通:
ping 114.114.114.114
ping 61.139.2.69
ping 202.98.96.68
第四步:解析外网是否连通
nslookup www.baidu.com
注意:/etc/resolv.conf的权限问题,否则在root用户下能上网,tux用户下不能上网。
mo文件的汉化
slitaz安装POEDIT后,提供了msgunfmt 用于将mo文件转化为po文件,po文件可
用文本编辑器打开汉化。或用poedit打开后进行汉化,保存后产生mo文件。
msgfmt用于将po文件转化为mo文件,xgettext用于产生脚本的po文件。
用法:
转换mo为po文件:msgunfmt /usr/share/locale/zh_CN/LC_MESSAGES/a.mo -o /usr/share/locale/zh_CN/LC_MESSAGES/a.po
转换po为mo文件:msgfmt -o /usr/share/locale/zh_CN/LC_MESSAGES/a.mo /usr/share/locale/zh_CN/LC_MESSAGES/a.po
创建po文件: xgettext -d /usr/share/bin/a.po /usr/share/bin/a.sh]
需要脚本已作国际化的处理(我看slitaz中的脚本大部分已作国际化处理,只是部分按钮未作处理)。
创建po文件时可能需要将脚本重命名加上.sh的后缀(否则可能出错),生成po文件后改回原文件名。
如果直接在脚本文件中进行了部分汉化,会导致生成po文件时出错。
======================================================================================
######tazto的内容开始#####
#!/bin/sh
# Tazto - SliTaz Tool.
#保存位置/usr/bin/tazto
VERSION=4.0
# Tazlito configuration variables to be shorter
# and to use words rather than numbers.
COMMAND=$1
TOP_DIR=`pwd`
INITRAMFS=rootfs.gz
TMP_DIR=/tmp/tazlito-$$-$RANDOM
#####################
# Tazto functions #
#####################
# Print the usage.
usage (){
echo -e "\nSliTaz Tool - Version: $VERSION\n
\033[1mUsage: \033[0m `basename $0` [command] [compression] [dir]
\033[1mCommands: \033[0m\n
usage 显示这个简短的用法介绍
rootfs 使用当前运行的系统生成rootfs.gz文件
用法: `basename $0` rootfs
mkrootfs 使用指定目录下的系统生成rootfs.gz文件
用法: `basename $0` mkrootfs rootfs.gz 目录路径
unrootfs 解压rootfs.gz文件到指定路径
用法: `basename $0` unrootfs rootfs.gz [dir]
mkmd 压缩文件夹为*.md文件
用法: `basename $0` mkmd dir [*.md]
unmd 解压*.md文件到指定路径
用法: `basename $0` unmd *.md [dir]
motopo 将.mo文件转化为.po文件,便于poedit进行汉化
用法: `basename $0` motopo *.mo [*.po]
potomo 将.po文件转化为.mo文件
用法: `basename $0` potomo *.po [*.mo]
addrar 将文件或文件夹压缩成.rar文件
用法: `basename $0` addrar dir|file [*.rar]
unrar 将.rar文件解压出来
用法: `basename $0` unrar *.rar [dir|temp]\n\n"
}
# Status function.
status(){
local CHECK=$?
echo -en "\\033[70G[ "
if [ $CHECK = 0 ]; then
echo -en "\\033[1;33m成功"
else
echo -en "\\033[1;31m失败"
fi
echo -e "\\033[0;39m ]"
return $CHECK
}
# Check if user is root.
check_root(){
if test $(id -u) != 0 ; then
echo -e "\n此选项需要root权限运行 `basename $0`."
echo -e "请输入 su 和root密码成为超级用户.\n"
exit 0
fi
}
# Compression functions for writeiso.
write_rootfs(){
echo -n "用lzma格式生成 rootfs.gz... "
cat /tmp/list | cpio -o -H newc | lzma e -si -so > /rootfs.gz
echo 1 > /tmp/rootfs
}
# Build initial rootfs for loram ISO ram
build_initfs(){
urliso="mirror.slitaz.org mirror.switch.ch/ftp/mirror/slitaz \
download.tuxfamily.org/slitaz slitaz.c3sl.ufpr.br"
version=$(ls $TMP_DIR/iso/boot/vmlinuz-* | sed 's/.*vmlinuz-//')
mkdir -p $TMP_DIR/initfs/bin $TMP_DIR/initfs/dev $TMP_DIR/initfs/lib \
$TMP_DIR/initfs/mnt $TMP_DIR/initfs/proc $TMP_DIR/initfs/tmp $TMP_DIR/initfs/sys
# bootfloppybox will need floppy.ko.gz, /dev/fd0, /dev/tty0
cp /lib/modules/$version/kernel/drivers/block/floppy.ko.gz $TMP_DIR/initfs/lib 2> /dev/null
cp -a /dev/tty0 /dev/fd0 $TMP_DIR/initfs/dev 2> /dev/null
cp /lib/modules/$version/kernel/fs/aufs/aufs.ko.gz $TMP_DIR/initfs/lib
cp /lib/modules/$version/kernel/fs/squashfs/squashfs.ko.gz $TMP_DIR/initfs/lib
cp /bin/busybox $TMP_DIR/initfs/bin
for i in $($TMP_DIR/initfs/bin/busybox | awk \
'{ if (s) printf "%s",$0 } /Currently/ { s=1 }' | sed 's/,//g'); do
ln $TMP_DIR/initfs/bin/busybox $TMP_DIR/initfs/bin/$i
done
for i in /dev/console /dev/loop* /dev/null /dev/tty /dev/zero \
/dev/kmem /dev/mem /dev/random /dev/urandom; do
cp -a $i $TMP_DIR/initfs/dev
done
for i in /lib/ld-* /lib/lib[cm].so* /lib/lib[cm]-* ; do
cp -a $i $TMP_DIR/initfs/lib
done
cat > $TMP_DIR/initfs/init <<EOTEOT
#!/bin/sh
getarg()
{
grep -q " \$1=" /proc/cmdline || return 1
eval \$2=\$(sed "s/.* \$1=\\\\([^ ]*\\\\).*/\\\\1/" < /proc/cmdline)
return 0
}
copy_rootfs()
{
total=\$(grep MemTotal /proc/meminfo | sed 's/[^0-9]//g')
need=\$(du -c \${path}rootfs* | tail -n 1 | cut -f1)
[ \$(( \$total / \$need )) -gt 1 ] || return 1
if ! grep -q " keep-loram" /proc/cmdline && cp \${path}rootfs* /mnt; then
path=/mnt/
return 0
else
rm -f /mnt/rootfs*
return 1
fi
}
echo "Switching / to tmpfs..."
mount -t proc proc /proc
size="\$(grep rootfssize= < /proc/cmdline | \\
sed 's/.*rootfssize=\\([0-9]*[kmg%]\\).*/-o size=\\1/')"
[ -n "\$size" ] || size="-o size=90%"
if [ -x /bin/httpfs ]; then # loram-http
while read var default; do
eval \$var=\$default
getarg \$var \$var
done <<EOT
eth eth0
dns 61.139.2.69,218.2.139.200
netmask 255.255.255.0
gw
ip
EOT
if [ -n "\$ip" ]; then
ifconfig \$eth \$ip netmask \$netmask up
route add default gateway \$gw
for i in \$(echo \$dns | sed 's/,/ /g'); do
echo "nameserver \$i" >> /etc/resolv.conf
done
else
udhcpc -f -q -s /lib/udhcpc -i \$eth
fi
for i in $urliso ; do
[ -n "\$URLISO" ] && URLISO="\$URLISO,"
URLISO="\${URLISO}http://\$i/iso/\$(cat /etc/slitaz-release)/flavors/slitaz-loram-cdrom.iso,http://\$i/iso/\$(cat /etc/slitaz-release)/flavors/slitaz-\$(cat /etc/slitaz-release)-loram-cdrom.iso"
done
getarg urliso URLISO
DIR=fs
if getarg loram DIR; then
DEVICE=\${DIR%,*}
DIR=/\${DIR#*,}
fi
mount -t tmpfs \$size tmpfs /mnt
path2=/mnt/.httpfs/
path=/mnt/.cdrom/
mkdir -p /mnt/.rw \$path \$path2
while [ ! -d \$path/boot ]; do
for i in \$(echo \$URLISO | sed 's/,/ /g'); do
httpfs \$i \$path2 && break
done
mount -o loop,ro -t iso9660 \$path2/*.iso \$path
done
#copy_rootfs && umount -d \$path && umount -d \$path2
elif [ -f \$(echo /rootfs*.gz | cut -f1 -d' ') ]; then # loram-ram
total=\$(grep MemTotal /proc/meminfo | sed 's/[^0-9]//g')
free=\$(grep MemFree /proc/meminfo | sed 's/[^0-9]//g')
if [ \$(( \$total/\$free )) -gt 1 ] || ! mount -t tmpfs \$size tmpfs /mnt; then
echo "No tmpfs for /mnt"
mkdir -p /mnt/.rw
mount -t tmpfs tmpfs /mnt/.rw
mkdir -p /mnt/.rw/mnt/.rw
path=/
else
mkdir -p /mnt/.rw
path=/mnt/.
for i in rootfs* ; do
mv /\$i \$path\$i
done
fi
else # loram-cdrom
getarg cdrom DRIVE_NAME ||
DRIVE_NAME=\$(grep "drive name" < /proc/sys/dev/cdrom/info | cut -f 3)
DEVICE=/dev/\$DRIVE_NAME
DIR=fs
if getarg loram DIR; then
DEVICE=\${DIR%,*}
DIR=/\${DIR#*,}
fi
mount -t tmpfs \$size tmpfs /mnt
mkdir -p /mnt/.rw /mnt/.cdrom /mnt/mnt/.cdrom
i=0
while [ \$i -lt 5 ] && ! mount -r \$DEVICE /mnt/.cdrom; do
case "\$DEVICE" in
/dev/sd*|UUID=*|LABEL=*)
mount -t sysfs sysfs /sys
USBDELAY=\$(cat /sys/module/usb_storage/parameters/delay_use)
umount /sys
sleep \$((1+\$USBDELAY)) ;;
esac
i=\$((i+1))
done
path=/mnt/.cdrom/
copy_rootfs && umount -d /mnt/.cdrom
fi
memfree=\$(grep MemFree /proc/meminfo | sed 's/[^0-9]//g')
umount /proc
branch=br=/mnt/.rw:/mnt/.cdrom/\$DIR
if [ ! -d /mnt/.cdrom/\$DIR/etc ]; then
branch=br=/mnt/.rw
for i in \${path}rootfs* ; do
fs=\${i#*root}
branch=\$branch:/mnt/.\$fs
mkdir -p /mnt/.rw/mnt/.\$fs /mnt/.\$fs /mnt/.rw/mnt/.cdrom
if [ -f /bin/cromfs-driver ]; then
cromfs-driver \${path}root\$fs /mnt/.\$fs -o ro,dev,suid,allow_other
else
insmod /lib/squashfs.ko.gz 2> /dev/null
mount -o loop,ro -t squashfs \${path}root\$fs /mnt/.\$fs
fi
done
else
mkdir -p /mnt/.rw/mnt/.httpfs
fi
insmod /lib/aufs.ko.gz
mount -t aufs -o \$branch none /mnt
[ -x /bin/httpfs ] && sed -i 's/DHCP="yes"/DHCP="no"/' /mnt/etc/network.conf
[ \$memfree -lt 30000 ] && sed -i 's/ slim//' /mnt/etc/rcS.conf
[ -x /mnt/sbin/init ] && exec /bin/switch_root mnt /sbin/init || sh
EOTEOT
chmod +x $TMP_DIR/initfs/init
( cd $TMP_DIR/initfs ; find | busybox cpio -o -H newc 2> /dev/null) | lzma e $TMP_DIR/initfs.gz -si
rem=$(( $(stat -c "%s" $TMP_DIR/initfs.gz) % 4 ))
[ $rem -ne 0 ] &&
dd if=/dev/zero bs=1 count=$(( 4 - $rem )) >> $TMP_DIR/initfs.gz 2> /dev/null
rm -rf $TMP_DIR/initfs
rm -rf $TMP_DIR/iso
return 0
}
# Move each initramfs to squashfs (or cromfs)
build_loram_rootfs()
{
rootfs_sizes=""
for i in $TMP_DIR/iso/boot/rootfs*.gz; do
mkdir -p $TMP_DIR/fs
cd $TMP_DIR/fs
( zcat $i 2> /dev/null || unlzma -c $i) | cpio -idm
cd - > /dev/null
rootfs=$TMP_DIR/$(basename $i)
if [ -x /usr/bin/mkcromfs ]; then
/usr/bin/mkcromfs -qq -f 262144 -b 16384 $TMP_DIR/fs $rootfs
else
/usr/sbin/mksquashfs $TMP_DIR/fs $rootfs -comp xz -Xbcj x86
fi
cd $TMP_DIR
rootfs_sizes="$rootfs_sizes $(( $(du -s $TMP_DIR/fs | cut -f1) - $(du -s $rootfs | cut -f1) ))"
( cd $(dirname $rootfs); echo $(basename $rootfs) | cpio -o -H newc ) > $rootfs.cpio
rm -f $rootfs
mv $rootfs.cpio $rootfs
cd - > /dev/null
rm -rf $TMP_DIR/fs
done
}
####################
# Tazto commands #
####################
case "$COMMAND" in
rootfs)
#usage: tazto rootfs
check_root
# Start info
echo ""
echo -e "\033[1mWrite filesystem to rootfs.gz\033[0m
===============================================================================
命令rootfs将会把当前文件系统写入到相应cpio格式文件中(rootfs.gz)。
\e[40;31;1m注意:\033[0m \033[1;33m执行此命令时不要进行其他操作,否则rootfs.gz启动会失败!!\\033[0;39m
Archive compression: lzma"
echo ""
#Clear cache
rm /var/cache/tazpkg/* /var/cache/fontconfig/* -r -f
rm /var/cache/hald/* /var/log/*
rm -rf /tmp/list
# Optionally remove sound card selection and screen resolution.
echo "想要清除声卡和屏幕设置选项吗 ? "
echo -n "按 ENTER保持当前设置,或回答 (No|yes|exit): "
read anser
case $anser in
e|E|"exit"|Exit)
exit 0 ;;
y|Y|yes|Yes)
echo -n "删除当前声卡和屏幕设置..."
rm -f /var/lib/sound-card-driver
rm -f /etc/asound.state
rm -f /etc/X11/screen.conf
rm -f /etc/X11/xorg.conf ;;
*)
echo -n "保持当前声卡和屏幕设置..." ;;
esac
status
cd /
find bin etc init sbin var dev lib root usr home >/tmp/list
for dir in proc sys tmp mnt media media/cdrom media/flash media/usbdisk
do
echo $dir >>/tmp/list
done
# Generate initramfs with specified compression and display rootfs
# size in realtime.
rm -f /tmp/rootfs
write_rootfs &
sleep 2
cd - > /dev/null
echo -en "\n文件系统大小:"
while [ ! -f /tmp/rootfs ]
do
sleep 1
echo -en "\\033[18G`du -sh /rootfs.gz | awk '{print $1}'` "
done
mv -f /rootfs.gz $TOP_DIR
echo -en "\n[\\033[1;33mrootfs.gz\\033[0;39m]保存在 $TOP_DIR文件夹中\n\n"
;;
mkrootfs)
# usage: tazto mkrootfs rootfs.gz [path]
check_root
echo "正在将$TOP_DIR/$3目录压缩为$2文件..."
if [ ! -d "$TOP_DIR/$3" ] ; then
echo -e "\n未能找到$TOP_DIR/$3目录...\n"
exit 0
fi
( cd $TOP_DIR/$3;find | busybox cpio -o -H newc)|lzma e $2 -si
echo -en "\n[\\033[1;33m$TOP_DIR/$3\\033[0;39m]已成功压缩成 $2文件\n\n"
;;
unrootfs)
# extract rootfs.gz somewhere
# usage: tazto unrootfs rootfs.gz [dir]
check_root
if [ -n "$3" ] ; then
TARGET=$3
else
TARGET=$TOP_DIR/rootfs
fi
mkdir -p $TARGET
(zcat $2 || unlzma -c $2 || cat $2) 2>/dev/null | (cd $TARGET; cpio -idm > /dev/null)
echo -en "\n[\\033[1;33m$2\\033[0;39m]已成功解压到 $TARGET文件夹中\n\n"
;;
unmd)
# usage: tazto unmd *.md [dir]
if [ ! -f "/usr/bin/unsquashfs" ] ; then
echo -e "\n未能找到/usr/bin/unsquashfs文件...\n"
usage
exit 0
fi
if [ -n "$2" ] ; then
rm -rf /home/tux/squashfs-root/
/usr/bin/unsquashfs $2
echo "已将$2文件解压$TOP_DIR/squashfs-root文件夹。"
else
usage
exit 0
fi
;;
mkmd)
# usage: tazto mkmd dir [*.md]
if [ ! -f "/usr/bin/mksquashfs" ] ; then
echo -e "\n未能找到/usr/bin/mksquashfs文件...\n"
usage
exit 0
fi
if [ -n "$3" ] ; then
TAR=$3
else
if [ -n "$2" ] ; then
TAR=$2.md
else
usage
exit 0
fi
fi
/usr/bin/mksquashfs $2 $TAR -comp xz
echo "已将$2文件夹压缩为$TAR文件."
;;
motopo)
# usage: tazto motopo *.mo [*.po]
if [ ! -f "/usr/bin/msgunfmt" ] ; then
echo -e "\n未能找到/usr/bin/msgunfmt文件...\n"
usage
exit 0
fi
if [ -n "$3" ] ; then
TAR=$3
else
if [ -n "$2" ] ; then
TAR=$2.po
else
usage
exit 0
fi
fi
/usr/bin/msgunfmt $2 -o $TAR
echo "已将$2文件转化为$TAR文件。"
;;
potomo)
# usage: tazto potomo *.po [*.mo]
if [ ! -f "/usr/bin/msgfmt" ] ; then
echo -e "\n未能找到/usr/bin/msgfmt文件...\n"
usage
exit 0
fi
if [ -n "$3" ] ; then
TAR=$3
else
if [ -n "$2" ] ; then
TAR=$2.mo
else
usage
exit 0
fi
fi
/usr/bin/msgfmt $2 -o $TAR
echo "已将$2文件转化为$TAR文件。"
;;
addrar)
# usage: tazto addrar dir|file [*.rar]
if [ ! -f "/usr/bin/rar" ] ; then
echo -e "\n未能找到/usr/bin/rar文件...\n"
usage
exit 0
fi
if [ -n "$3" ] ; then
TAR=$3
else
if [ -n "$2" ] ; then
TAR=$2.rar
else
usage
exit 0
fi
fi
/usr/bin/rar a $TAR $2
echo "已将$2文件或文件夹压缩成$TAR文件。"
;;
unrar)
# usage: tazto unrar *.rar [dir|temp]
if [ ! -f "/usr/bin/unrar" ] ; then
echo -e "\n未能找到/usr/bin/rar文件...\n"
usage
exit 0
fi
if [ -n "$3" ] ; then
TAR=$3
else
if [ -n "$2" ] ; then
TAR=temp
else
usage
exit 0
fi
fi
if [ ! -d "$TAR" ] ; then
mkdir -p $TAR
fi
/usr/bin/unrar e $2 $TAR
echo "已将$2文件解压到$TAR文件夹。"
;;
usage|*)
# Clear and print usage also for all unknown commands.
#
clear
usage ;;
esac
exit 0
####tazto的内容结束####
======================================================================================
####adsl脚本开始#############################################
#!/bin/sh
#***********************************************************************
#保存位置/usr/sbin/adsl
# pppoe-setup
#
# All-purpose slicing/dicing shell script to configure rp-pppoe.
#
# LIC: GPL
#
# Copyright (C) 2000 Roaring Penguin Software Inc.
#
# $Id$
#***********************************************************************
# Check if user is root.
if test $(id -u) != 0 ; then
echo -e "\e[31;40;1m对不起,你不能运行`basename $0`.
请使用sudo `basename $0`或
使用'su'命令(密码root)切换到root用户.\033[0m"
exit 0
fi
# From AUTOCONF
prefix=/usr
exec_prefix=${prefix}
# Paths to programs
IFCONFIG=/sbin/ifconfig
PPPD=/usr/sbin/pppd
PPPOE=${exec_prefix}/sbin/pppoe
ECHO=/bin/echo
LOGGER="/usr/bin/logger -t `basename $0`"
# Set to "C" locale so we can parse messages from commands
LANG=C
export LANG
CONFIG=/etc/ppp/pppoe.conf
# Set default interface.
INTERFACE="eth0"
NETMASK="255.255.255.0"
# Protect created files
umask 077
copy() {
cp $1 $2
if [ "$?" != 0 ] ; then
$ECHO "*** Error copying $1 to $2"
$ECHO "*** Quitting."
exit 1
fi
}
setip(){
# 静态获取IP地址
ifconfig $INTERFACE up
echo -e "\e[40;36;1m请输入要设置的IP地址(默认10.32.0.119):\033[0m"
printf "%s" ">>> : "
read IP
if [ "$IP" = "" ] ; then
IP="10.32.0.119"
fi
echo -e "\e[40;36;1m请输入要设置的网关IP地址(默认10.32.0.1):\033[0m"
printf "%s" ">>> : "
read GATEWAY
if [ "$GATEWAY" = "" ] ; then
GATEWAY="10.32.0.1"
fi
echo "设置的IP地址为:$IP 网关IP地址:$GATEWAY"
ifconfig $INTERFACE up
ifconfig $INTERFACE $IP netmask $NETMASK up
route add default gateway $GATEWAY
echo "测试网络连接情况......"
if [ "$IP" != "" ] ; then
ping -c 3 $IP
fi
if [ "$GATEWAY" != "" ] ; then
ping -c 3 $GATEWAY
fi
setdns
}
setdns(){
# 设置路由DNS地址
echo 显示网络连接情况
ifconfig -a
echo 查看路由表信息
netstat -nr
echo -e "路由配置文件为:\e[40;36;1m/etc/resolv.conf\033[0m"
echo -e "\e[40;36;1m请输入DNS地址(默认61.139.2.69 114.114.114.114):\033[0m"
printf "%s" ">>> : "
read DNS_SERVER
if [ "$DNS_SERVER" = "" ] ; then
DNS_SERVER="61.139.2.69 114.114.114.114"
fi
mv /etc/resolv.conf /tmp/resolv.conf.$$
for NS in $DNS_SERVER ; do
ping -c 3 $NS
echo "nameserver $NS" >> /etc/resolv.conf
done
chmod 644 /etc/resolv.conf
echo 解析外网
nslookup www.slitaz.org
}
####初始操作选单开始
adsl(){
while [ true ] ; do
$ECHO ""
$ECHO " 功能选单"
$ECHO -e "\e[40;32;1m ==========================================="
$ECHO " 1 - 配置ADSL 3 - 停止ADSL"
$ECHO " 2 - 重启ADSL 4 - 查看ADSL连接状态"
$ECHO " 5 - 设置 DNS 地址(测试网络连接情况)"
echo -e " --------------------------------------"
echo " 6 - 动态获取IP地址 7 - 静态获取IP地址"
echo " 8 - 禁用网络 9 - 重启网络"
echo " 0 - 退出(q) c = 清屏"
echo -e " ===========================================\033[0m"
$ECHO -e "\e[40;31;1m 请输入(1,2,3,4,5,6,7,8,9,0):\033[0m"
printf "%s" ">>> : "
read aa
case "$aa" in
1)
# 配置ADSL
break ;;
2)
# 重启ADSL
echo -e "ADSL配置文件为:\e[40;36;1m/etc/ppp/\033[0m下\e[40;31;1mchap-secrets、pap-secrets、pppoe.conf\033[0m"
pppoe-stop
ifconfig $INTERFACE down
killall -q udhcpc
pppoe-start
udhcpc -b -T 1 -A 12 -i $INTERFACE -p /var/run/udhcpc.$INTERFACE.pid
setdns
adsl ;;
3)
pppoe-stop
adsl ;;
4)
pppoe-status
adsl ;;
5)
# 设置路由DNS地址
setdns
adsl ;;
6)
# 动态获取IP地址
udhcpc -b -T 1 -A 12 -i $INTERFACE -p /var/run/udhcpc.$INTERFACE.pid
adsl ;;
7)
# 静态获取IP地址
setip
adsl;;
8)
# 禁用网络
ifconfig $INTERFACE down
killall udhcpc
adsl ;;
9)
# 重新启动网络 Config file is: /etc/network.conf
echo -e "网络配置文件为:\e[40;36;1m/etc/network.conf\033[0m"
ifconfig lo down
ifconfig \$INTERFACE down
. /etc/init.d/network.sh
adsl;;
c|C|clear|Clear|cls|Cls)
clear ;;
0|q|Q|quit|Quit|E|e|exit|Exit)
exit 0 ;;
esac
done
}
adsl
#初始操作选单结束
while [ -e /etc/ppp/ppp.lock ] ; do
$ECHO -e "\e[40;33;1m你已经配置过ADSL了,重新配置请输入\e[40;31;1my\e[40;33;1m,不再重新配置请输入\e[40;31;1mn\033[0m"
printf "%s" '>>> : '
read ANS2
case "ANS2" in
Y|y|yes|Yes|oui|Oui)
ANS2=y ;;
N|n|no|No|non|Non)
ANS2=n ;;
esac
if [ "$ANS2" = "y" -o "$ANS2" = "n" ] ; then
break
fi
done
if [ "$ANS2" = "n" ] ; then
adsl
fi
#检测重复设置完毕
clear
$ECHO -e "\e[33;40;1m 欢迎使用 Roaring Penguin PPPoE 客户端安装. 首先, 我会运行"
$ECHO -e "\033[33;40m 一些检查在您的系统上确保 PPPoE 客户端安装与否。\033[0m"
$ECHO ""
# Must be root
if [ "`/usr/bin/id -u`" != 0 ] ; then
$ECHO -e "\e[31;40;1m对不起,你必须先切换为root用户\033[0m"
exit 1
fi
# Prototype config file must exist
if [ ! -r "$CONFIG" ] ; then
$ECHO -e "\e[31;40;1m没有找到'$CONFIG' 文件,请重新安装 PPPoE 客户端.\033[0m"
exit 1
fi
# Must have pppd
if [ ! -x $PPPD ] ; then
$ECHO -e "\e[31;40;1m没有找到'$PPPD'程序,请安装PPP 2.3.10或以后版本软件.\033[0m"
exit 1
fi
export CONFIG
. $CONFIG
if [ "$DEMAND" = "" ] ; then
DEMAND=no
fi
# pppoe must exist
if [ ! -x "$PPPOE" ] ; then
$ECHO -e "\e[31;40;1m没有找到'$PPPOE'程序,请重新安装 rp-pppoe 客户端.\033[0m"
exit 1
fi
$ECHO -e "\e[032;40;1m检查完毕,环境检测无误,现在开始配置PPPOE:\033[0m"
$ECHO ""
$ECHO -e "\e[032;40;1m配置过程中如果需要强行中止,请按Ctrl+C\033[0m"
while [ true ] ; do
$ECHO ""
$ECHO ""
$ECHO -e "\e[36;40;1m请输入您的ADSL/宽带帐号(默认:$USER):\033[0m"
printf "%s" ">>> : "
read U
if [ "$U" = "" ] ; then
U="$USER"
fi
if test `uname -s` = "Linux" ; then
$IFCONFIG $ETH > /dev/null 2>&1 || ETH=eth0
fi
$ECHO ""
$ECHO -e "\e[36;40;1m请选择网卡,一般用eth0即可(默认:$ETH):\033[0m"
printf "%s" ">>> : "
read E
if [ "$E" = "" ] ; then
E="$ETH"
fi
$ECHO ""
$ECHO -e "\e[36;40;1m设置空闲多少秒后自动短线?用默认的no就可以(默认:$DEMAND):\033[0m"
printf "%s" ">>> : "
read D
if [ "$D" = "" ] ; then
D=$DEMAND
fi
$ECHO ""
$ECHO ""
$ECHO -e "\e[40;31;1m现在开始配置域名服务器(DNS),这一步非常重要\033[0m"
$ECHO -e "\e[40;31;1m如果你没有输入DNS的话,将会使用默认DNS服务器.\033[0m"
$ECHO ""
$ECHO -e "\e[40;36;1m输入主DNS服务器地址(默认电信61.139.2.69)\033[0m"
printf "%s" ">>> : "
read DNS1
if [ "$DNS1" = "" ] ; then
DNS1=61.139.2.69
fi
if [ "$DNS1" != "server" ] ; then
$ECHO -e "\e[40;36;1m输入辅DNS服务器地址(默认移动114.114.114.114)\033[0m"
printf "%s" ">>> : "
read DNS2
if [ "$DNS2" = "" ] ; then
DNS2=114.114.114.114
fi
fi
while [ true ] ; do
$ECHO ""
$ECHO ""
stty -echo
$ECHO -e "\e[40;36;1m请输入您ADSL账户的密码\033[0m"
printf "%s" ">>> : "
read PWD1
$ECHO ""
$ECHO -e "\e[40;36;1m请再次输入ADSL账户密码\033[0m"
printf "%s" ">>> : "
read PWD2
$ECHO ""
stty echo
if [ "$PWD1" = "$PWD2" ] ; then
break
fi
$ECHO -e "\e[40;31;1m对不起,两次输入的密码不一致,再试一次?(y/n)\033[0m"
printf "%s" ">>> : "
read ANS
case "$ANS" in
N|No|NO|Non|n|no|non)
$ECHO "你已经选择了退出,再见."
exit 1
esac
done
# Firewalling
$ECHO ""
$ECHO ""
if test `uname -s` != "Linux" ; then
$ECHO "Sorry, firewalling is only supported under Linux. Consult"
$ECHO "your operating system manuals for details on setting up"
$ECHO "packet filters for your system."
FIREWALL=NONE
else
$ECHO ""
while [ true ] ; do
$ECHO -e "\e[40;36;1m防火墙\033[0m"
$ECHO "0 - 无"
$ECHO "1 - 独立: 适合单独的上网计算机"
$ECHO "2 - 伪装: 适合充当互联网网关"
$ECHO ""
$ECHO -e "\e[40;36;1m请选择防火墙的安全等级(0,1,2),如果你是直接pppoe拨号,建议选0就可以了,默认值:0\033[0m"
printf "%s" ">>> : "
read a
echo $a
if [ "$a" = "" -o "$a" = 0 -o "$a" = 1 -o "$a" = 2 ] ; then
break
fi
clear
$ECHO -e "\e[40;31;1m请输入数字0或1或2\033[0m"
done
case "$a" in
0)
FIREWALL=NONE
;;
1)
FIREWALL=STANDALONE
;;
2)
FIREWALL=MASQUERADE
;;
*)
FIREWALL=NONE
;;
esac
fi
clear
$ECHO ""
$ECHO -e "\e[40;36;1m请核对帐号密码和DNS地址:\033[0m"
$ECHO -e "\e[40;35;1m***************************************"
$ECHO "网卡: $E"
$ECHO "ADSL用户: $U"
if [ "$D" = "no" ] ; then
$ECHO "按需拨号: No"
else
$ECHO "按需拨号: Yes; 自动断线时间: $D 秒"
fi
if [ "$DNS1" != "" ] ; then
if [ "$DNS1" = "server" ] ; then
$ECHO "DNS服务器: 由ISP提供"
else
$ECHO "主DNS服务器: $DNS1"
if [ "$DNS2" != "" ] ; then
$ECHO "辅DNS服务器: $DNS2"
fi
fi
else
$ECHO "主DNS服务器: 61.139.2.69(电信)"
$ECHO "辅DNS服务器: 114.114.114.114(移动)"
fi
$ECHO "防火墙等级: $FIREWALL"
$ECHO -e "***************************************\033[0m"
while [ true ] ; do
$ECHO -e "\e[40;36;1m如果设置无误请输入\e[40;31;1my\e[40;36;1m,要重新设置请输入\e[40;31;1mn\033[0m"
printf "%s" '>>> : '
read ANS
case "ANS" in
Y|y|yes|Yes|oui|Oui)
ANS=y
;;
N|n|no|No|non|Non)
ANS=n
;;
esac
if [ "$ANS" = "y" -o "$ANS" = "n" ] ; then
break
fi
done
if [ "$ANS" = "y" ] ; then
break
fi
done
# Adjust configuration files. First to $CONFIG
copy $CONFIG $CONFIG-bak
if [ "$DNS1" = "server" ] ; then
DNSTYPE=SERVER
DNS1=""
PEERDNS=yes
else
PEERDNS=no
if [ "$DNS1" = "" ] ; then
DNSTYPE=NOCHANGE
else
DNSTYPE=SPECIFY
fi
fi
# Where is pppd likely to put its pid?
if [ -d /var/run ] ; then
VARRUN=/var/run
else
VARRUN=/etc/ppp
fi
# Some #$(*& ISP's use a slash in the user name...
sed -e "s&^USER=.*&USER='$U'&" \
-e "s&^ETH=.*Ð='$E'&" \
-e "s&^PIDFILE=.*&PIDFILE=\"$VARRUN/\$CF_BASE-pppoe.pid\"&" \
-e "s/^FIREWALL=.*/FIREWALL=$FIREWALL/" \
-e "s/^DEMAND=.*/DEMAND=$D/" \
-e "s/^DNSTYPE=.*/DNSTYPE=$DNSTYPE/" \
-e "s/^DNS1=.*/DNS1=$DNS1/" \
-e "s/^DNS2=.*/DNS2=$DNS2/" \
-e "s/^PEERDNS=.*/PEERDNS=$PEERDNS/" \
< $CONFIG-bak > $CONFIG
if [ $? != 0 ] ; then
$ECHO "** Error modifying $CONFIG"
$ECHO "** Quitting"
exit 1
fi
if [ "$DNS1" != "" ] ; then
if [ "$DNS1" != "server" ] ; then
## $ECHO "Adjusting /etc/resolv.conf"
if [ -r /etc/resolv.conf ] ; then
grep -s "MADE-BY-RP-PPPOE" /etc/resolv.conf > /dev/null 2>&1
if [ "$?" != 0 ] ; then
## $ECHO " (But first backing it up to /etc/resolv.conf-bak)"
copy /etc/resolv.conf /etc/resolv.conf-bak
fi
fi
$ECHO "# MADE-BY-RP-PPPOE" > /etc/resolv.conf
$ECHO "nameserver $DNS1" >> /etc/resolv.conf
if [ "$DNS2" != "" ] ; then
$ECHO "nameserver $DNS2" >> /etc/resolv.conf
fi
fi
fi
##$ECHO "Adjusting /etc/ppp/pap-secrets and /etc/ppp/chap-secrets"
if [ -r /etc/ppp/pap-secrets ] ; then
## $ECHO " (But first backing it up to /etc/ppp/pap-secrets-bak)"
copy /etc/ppp/pap-secrets /etc/ppp/pap-secrets-bak
else
cp /dev/null /etc/ppp/pap-secrets-bak
fi
if [ -r /etc/ppp/chap-secrets ] ; then
## $ECHO " (But first backing it up to /etc/ppp/chap-secrets-bak)"
copy /etc/ppp/chap-secrets /etc/ppp/chap-secrets-bak
else
cp /dev/null /etc/ppp/chap-secrets-bak
fi
egrep -v "^$U|^\"$U\"" /etc/ppp/pap-secrets-bak > /etc/ppp/pap-secrets
$ECHO "\"$U\" * \"$PWD1\"" >> /etc/ppp/pap-secrets
egrep -v "^$U|^\"$U\"" /etc/ppp/chap-secrets-bak > /etc/ppp/chap-secrets
$ECHO "\"$U\" * \"$PWD1\"" >> /etc/ppp/chap-secrets
$ECHO ""
$ECHO ""
$ECHO ""
$ECHO -e "\e[40;31;1m恭喜,所有设置已经完成!\033[0m"
touch /etc/ppp/ppp.lock
#$ECHO ""
#$ECHO -e "\e[40;32m输入pppoe-start连接宽带网络"
#$ECHO "输入pppoe-status查看网络连接的状态"
#$ECHO -e "输入pppoe-stop关闭宽带网络.\033[0m"
#$ECHO ""
$ECHO -e "\e[40;32;1m如需修改ADSL配置,也可手动编辑/etc/ppp/pppoe.conf.\033[0m"
$ECHO ""
while [ true ] ; do
$ECHO -e "\e[40;33;1m如需立即连接ADSL,请输入\e[40;31;1my\e[40;33;1m,退出请输入\e[40;31;1mn\033[0m"
$ECHO ""
printf "%s" '>>> : '
read LINKNOW
case "LINKNOW" in
Y|y|yes|Yes|oui|Oui)
LINKNOW=y
;;
N|n|no|No|non|Non)
LINKNOW=n
;;
esac
if [ "$LINKNOW" = "y" -o "$LINKNOW" = "n" ] ; then
break
fi
done
if [ "$LINKNOW" = "y" ] ; then
clear
$ECHO "开始连接,pppoe-start..."
ifconfig $INTERFACE down
killall -q udhcpc
udhcpc -b -T 1 -A 12 -i $INTERFACE -p /var/run/udhcpc.$INTERFACE.pid
pppoe-start
setdns
adsl
fi
clear
$ECHO "设置已经保存,请选择后续操作或退出"
adsl
####adsl脚本结束####
======================================================================================
####myrootfs脚本开始####
#!/bin/sh
#保存位置/usr/bin/myrootfs
TOP_DIR=`pwd`
#检查用户的权限是否为root权限
check_root(){
if test $(id -u) != 0 ; then
echo -e "\n此脚本仅适合在SliTaz系统root权限下操作."
echo -e "\n脚本需要root权限运行 `basename $0`."
echo -e "请使用su命令(密码:root)切换到root用户.\n"
exit 0
fi
}
write_rootfs(){
cd /tmp/root
echo -e "\n正在用lzma格式压缩生成 rootfs.gz文件,请耐心等待几分钟......"
find . -print | cpio -o -H newc | lzma e -si -so > ../rootfs.gz
echo 1 > /tmp/rootfs
}
check_root
echo -e "\n\033[1mWrite filesystem to rootfs.gz\033[0m"
echo -e "=================================================================="
echo -e "\e[40;31;1m命令\033[0m \033[1;33mmyrootfs\\033[0;39m将会把当前文件系统写入到相应cpio格式文件中(rootfs.gz)。"
echo -e "\nArchive compression: lzma"
echo -e "\n删除缓存..."
rm /home/tux/.cache -r -f
rm /var/cache/tazpkg/* -r -f
rm -f /etc/blkid.tab
rm -f /etc/udev/rules.d/70-persistent-net.rules
# display harddisk
mv /var/run/dbus/pid /var/run/dbus/pid.bak
echo -e "\n想要清除声卡和屏幕设置选项吗 ? "
echo -n "按 ENTER保持当前设置,或回答 (No|Yes|Exit): "
read anser
case $anser in
e|E|"exit"|Exit)
exit 0 ;;
y|Y|yes|Yes)
echo -e "\n删除当前声卡和屏幕设置..."
rm -f /var/lib/sound-card-driver
rm -f /etc/asound.state
rm -f /etc/X11/screen.conf
rm -f /etc/X11/xorg.conf ;;
*)
echo -e "\n保持当前声卡和屏幕设置..." ;;
esac
echo -e "\n新建/tmp/root文件夹"
mkdir /tmp/root
echo -e "同步目录到/tmp/root........."
mount -o bind / /tmp/root
rm -f /tmp/rootfs
write_rootfs &
sleep 2
cd - > /dev/null
echo -en "\n文件系统大小:"
while [ ! -f /tmp/rootfs ]
do
sleep 1
echo -en "\\033[18G`du -sh /tmp/rootfs.gz | awk '{print $1}'` "
done
mv -f /tmp/rootfs.gz $TOP_DIR
echo -e "\n[\\033[1;33mrootfs.gz\\033[0;39m]保存在 $TOP_DIR文件夹中\n\n"
mv /var/run/dbus/pid.bak /var/run/dbus/pid
sakura -e "sudo umount -f /tmp/root"
sakura -e "sudo rmdir /tmp/root"
exit
####myrootfs脚本结束#### |
评分
-
查看全部评分
|