2010tljabc 发表于 2016-2-1 10:21:56

自己定制Slitaz 5.0

在别人的经验上,自己曾经定制过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?shareid=3269092721&uk=2098012847#path=%252F
4、SISO使用说明: http://bbs.wuyou.net/forum.php?mod=viewthread&tid=205934&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文件中的域内添加"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.imgsubdir=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
tazboxlocale

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.4esound-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
\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
    mkmd      压缩文件夹为*.md文件
                用法: `basename $0` mkmd dir [*.md]
    unmd      解压*.md文件到指定路径
                用法: `basename $0` unmd *.md
    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\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"
        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.so* /lib/lib-* ; 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=\\(*\\).*/-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保存在 $TOP_DIR文件夹中\n\n"
        ;;

   mkrootfs)
# usage: tazto mkrootfs rootfs.gz
        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已成功压缩成 $2文件\n\n"
        ;;

    unrootfs)
# extract rootfs.gz somewhere
# usage: tazto unrootfs rootfs.gz
                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已成功解压到 $TARGET文件夹中\n\n"
        ;;

        unmd)
# usage: tazto unmd*.md
        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
        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.69114.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=.*&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保存在 $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脚本结束####

2046523 发表于 2016-2-1 10:48:58

神雕放出一个后又没信息了 支持楼主折腾

pcfan120 发表于 2016-2-1 14:51:46

支持楼主更新

devilma 发表于 2016-2-1 16:30:26

学习一下!够详细……希望有人解决中文输入问题

1328558 发表于 2016-2-2 18:02:44

支持楼主更新

wangxiongfang 发表于 2016-2-3 02:33:14

屮也非常喜物slitaz,小巧,快速,还可iso不解包直接引导。现在还在用神雕定制的4。0版。
去年见他放了一个5。0的测试版,不过中文化、中文输入都没搞全。
多谢楼主分享经验,有时间时多学习下。

my9823 发表于 2016-2-18 22:52:09

安装中文字体可以复制到/usr/share/fonts目录,中文输入建议使用小小输入法!fcitx过于庞大@

nrywlm 发表于 2016-2-19 08:01:06

网盘地址,没有了?

2012852253701 发表于 2016-2-22 23:29:45

几十年没上无忧了,看到这贴必须登录账号回复一句,楼主太厉害了

pcfan120 发表于 2016-2-23 09:09:19

技术贴。。支持
页: [1] 2 3
查看完整版本: 自己定制Slitaz 5.0