找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4441|回复: 5

老大们能解释一下CL的引导过程吗?

[复制链接]
发表于 2005-1-16 09:53:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
老大们,CL的引导是由哪些文件组成的?顺序如何?如果我要在CL里让它启动就加载某个特定的应用,可以怎样做?大家对MS DOS的引导应该就比较熟悉了,io.sys/msdos.sys后,就引导 config.sys的设置,然后再启动 autoexec.bat 的各行,而 command.com 则提供内含的命令。要设置自己的应用,在config.sys 和autoexec.bat作配置即可。要把应用做到CD上,也很容易,用内存建立一个虚拟盘,在引导时把应用复制到虚拟盘上再运行,即使该应用需要写入和存盘都没有任何问题。command.com也复制到和指向虚拟盘,启动完成后,就不再对CD有任何操作。我把CL做到了CD上,启动时有不少错误信息,表示(1)不能找到某文件,或(2)不能写入。CL的启动是要写入的。而且在 syslinux.cfg 修改 root 为 /dev/hdc,iso9660 就表示以CD为root,在启动和运行CL时,对root的读、写就是对 CD,就可能出错。我在想,既然CL已经建立ramdisk,大小还可调,那末,我们完全可以把所有文件复制到ramdisk后才开始引导各应用,所有操作都是对内存的,读、写就不会有问题。我对CL和linux都不熟悉,还请各位老大指点。
routeros
发表于 2005-1-16 12:58:08 | 显示全部楼层
CL的引导过程写出来会很多的,等论坛的开发团队成立后我会写的。看你的意思是要做成光盘版的吧?你先仔细看关于光盘版的制作说明。另外特别说明一下。CL第一次启动过程中会向软盘写入修改的etc.tgz文件。它要生成两个key的。所以在制作光盘之前必须用软盘先启动,然后再用这个软盘做。understand?
routeros
回复

使用道具 举报

发表于 2005-1-16 17:29:30 | 显示全部楼层
呵呵,研究启动过程,恩比较高层的东西了啊。想用 DOS 做启动也是可以的,不过仍旧需要加载LINUX 的启动程序的。你如果有兴趣的可以研究一下 K7/G 的 IPCOP 的 GHO 文件,里面就是使用的 DOS 引导,没有使用 LILO 或 GRUB 引导。
routeros
回复

使用道具 举报

 楼主| 发表于 2005-1-17 05:11:24 | 显示全部楼层
QUOTE (哈啤猫 @ Jan 16 2005, 12:58 PM)
CL的引导过程写出来会很多的,等论坛的开发团队成立后我会写的。看你的意思是要做成光盘版的吧?你先仔细看关于光盘版的制作说明。另外特别说明一下。CL第一次启动过程中会向软盘写入修改的etc.tgz文件。它要生成两个key的。所以在制作光盘之前必须用软盘先启动,然后再用这个软盘做。understand?  
  谢老大。我继续试。我还是很想知道有哪些文件可以修改来配置我自己的启动环境。
routeros
回复

使用道具 举报

发表于 2005-1-17 08:19:15 | 显示全部楼层
让我来把启动要执行的几个文件贴出来吧.看不懂的再由高手们解释吧.第一个要执行的文件:inittab

CODE
::sysinit:/etc/rc.d/rc.sysinit::respawn:/sbin/getty 38400 tty1tty2::respawn:/sbin/getty 38400 tty2tty3::respawn:/sbin/getty 38400 tty3
第二个要执行的文件:rc.sysinit

CODE
#!/bin/sh## rc.sysinit - unpacks additional archives and starts system# scripts#install_config() {        if [ ! -r "$MNT/config/$1" ]; then  return        fi        cat $MNT/config/$1 | dos2unix -u > /etc/coyote/$2        chmod 600 /etc/coyote/$2        chown root.root /etc/coyote/$2}#Uncomment for debug mode (don't suppress STDOUT and STDERR)#DEBUG=1if [ $DEBUG ]; then        qt () { "$@"; }else        qt () { "$@" >>/linuxrc.err 2>&1; }fisource () { . $@; }qt mount -t proc /proc /proc#qt mount -t devfs none /devSYM="-s"VERSION="`cat /var/lib/lrpkg/root.version`"qt mkdir /devqt mkdir /dev/inetqt mkdir /tmpqt mkdir /mntqt mkdir /var/lockqt mkdir /var/runqt mkdir /usrqt mkdir /usr/binMNT="/var/lib/lrpkg/mnt"qt mkdir $MNTqt ln -s /tmp /var/tmpqt ln -s /tmp /usr/tmp# Have busybox create the symbolic links/bin/busybox --install -s. /var/lib/lrpkg/root.dev.mk#Incase makedev fails, maybe we can recover#qt mknod /dev/tty1 c 4 1#Set some permissionschmod 1777 /var/lockchmod 1777 /tmp#Clear this fileecho "root">/var/lib/lrpkg/packages#Query /proc/cmdline line for a 'boot' option.#This will solve the chicken and egg problem of specing boot devices#not in root.mount. Falls back to root.mount (and /proc/filesystems)#if boot= entry fails.  IE  boot=/dev/device[,filesystem]DEVICE="`sed s/.*boot=// /proc/cmdline`"#Coyote only supports MS-DOS formatted floppiesFSTYPE="`echo $DEVICE | sed s/\ /,/ | cut -f 2 -d ,`"DEVICE="`echo $DEVICE | cut -f 1 -d ,`"echo "Using: $DEVICE as boot device with $FSTYPE filesystem."echo $FSTYPE > /var/lib/lrpkg/boot.fstypeln -sf $DEVICE /dev/bootqt mount -o ro -t $FSTYPE $DEVICE $MNTif [ $? -ne 0 ]; then        echo "LINUXRC: Could not mount the boot device. Can't install packages."        sh        exit 1fi# Install the additional software packagesif [ -f /var/lib/lrpkg/root.packages ]; then        cat /var/lib/lrpkg/root.packages > /tmp/pkg.listfi# Build a list of all non-root packagesfor F in `ls $MNT/*.tgz`; do        F=`basename $F .tgz`        if [ -z "`grep $F /tmp/pkg.list`" ] && [ "$F" != "root" ]; then  echo $F >> /tmp/pkg.list        fidoneif [ -f /tmp/pkg.list ]; then        echo -n "Installing packages: "        OIFS=$IFS; IFS=','        cat /tmp/pkg.list | while read f; do  if [ ! -z "$f" ]; then          if [ -f $MNT/$f.tgz ]; then    qt gunzip -t $MNT/$f.tgz > /dev/null    if [ $? -eq 0 ]; then            echo -n " $f"            tar -xzf $MNT/$f.tgz            echo "$f">>/var/lib/lrpkg/packages        #Update installed packages file    else            echo -n " $f(cpt!)"    fi          else    echo -n " $f(nf!)"          fi  fi        done        IFS=$OIFS        echo " - Finished."        rm -f /tmp/pkg.listelse        echo "Package list is empty. Can't install packages."fiinstall_config coyote.cfg coyote.confinstall_config firewall.cfg firewallinstall_config portfw.cfg portforwardsinstall_config fireloc.cfg firewall.localinstall_config qosfilt.cfg qos.filtersinstall_config qosclass.cfg qos.classesinstall_config hosts.dns ../hosts.dnsinstall_config reserve.cfg ../dhcpd.reservations#We need to set permissons after etc is installed, so it sets owner and#group correctly. (No /etc/passwd and /etc/group on the first run). /var/lib/lrpkg/root.dev.own. /var/lib/lrpkg/root.dev.modqt umount $MNTrm /linuxrc.err#echo "Leaving LINUXRC"# sysinit completed. Start sysconfig/etc/rc.d/rc.S
执行完rc.sysinit后,再执行rc.S

CODE
#! /bin/sh## Coyote single user startup scriptPATH=/sbin:/bin:/usr/sbin:/usr/binumask 022##        Trap CTRL-C &c only in this shell so we can interrupt subprocesses.#trap ":" 2 3 20# Mount devptsmount -t devpts devpts /dev/pts# Load the modulesif [ -x /etc/rc.d/rc.modules ]; then        . /etc/rc.d/rc.modulesfi# Clean up /var/run and create /var/run/utmp so that we can login.: > /var/run/utmp# Set pseudo-terminal access permissions.chmod 666 /dev/tty[p-za-e][0-9a-f]chown root.tty /dev/tty[p-za-e][0-9a-f]# Start the software watchdogecho "Starting software watchdog..."insmod softdog/sbin/watchdog -t 30 /dev/watchdog# Start the Multi-user configuration/etc/rc.d/rc.M
在rc.S中再调用/etc/rc.d/rc.modules,执行硬件驱动,来驱动网卡等.最后执行/etc/rc.d/rc.M,从coyote.cfg中读取系统设置,初始化网络服务等 .

CODE
#!/bin/sh## Coyote init scriptecho "Starting network subsystems..."# Start the inet systemif [ ! -f /etc/coyote/coyote.conf ]; then        echo        echo "-------------------------ERROR--------------------------"         echo "This Coyote boot disk does not appear to have been"        echo "properly configured.  The network subsystem can not be"        echo "configured.  Please rerun the Coyote Disk Creator."        echo "--------------------------------------------------------"        echo        exitfi# Ensure basic filesystem sanitychmod 755 /chmod 1777 /tmp# Load the coyote configuration file. /etc/coyote/coyote.confCONFIG_LOADED=YES# Configure the root passwordif [ ! -z "$ADMIN_AUTH" ]; then    if [ -r /etc/shadow.tmp ]; then        rm /etc/shadow.tmp    fi    touch /etc/shadow.tmp    chown root.root /etc/shadow.tmp    chmod 600 /etc/shadow.tmp        echo "root:\$1\$\$${ADMIN_AUTH}:10091:0:99999:7:::" >> /etc/shadow.tmp    grep -v root: /etc/shadow >> /etc/shadow.tmp    rm /etc/shadow    mv /etc/shadow.tmp /etc/shadowfi# Check for the SSH host keysif [ ! -r /etc/dropbear_dss_host_key ]; then    /usr/sbin/ssh-keygen -t dss -f /etc/dropbear_dss_host_key    NEW_KEYS=YES    touch /tmp/need.savefiif [ ! -r /etc/dropbear_rsa_host_key ]; then    /usr/sbin/ssh-keygen -t rsa -f /etc/dropbear_rsa_host_key    NEW_KEYS=YES    touch /tmp/need.savefi# Set the system clockif [ -z "$TZ" ]; then        TZ="$(cat /etc/timezone)"        echo "TZ=$TZ" >> /etc/coyote/coyote.confelse        echo "$TZ" > /etc/timezonefiexport TZ# Set the clock using biosif [ -x /sbin/hwclock ]; then        /sbin/hwclock -s -lfi# System loggersSYSLOG_OPTS="-m 0 -C "if [ ! -z "$LOGGING_HOST" ]; then        SYSLOG_OPTS="$SYSLOG_OPTS -L -R $LOGGING_HOST"        # If remote logging is requested, delay until after the network        # is upfi#Create the wellcome screen. /usr/sbin/mkissue.sh# Start the network. /etc/rc.d/rc.inet# Start any additional packages that were addedecho "Starting addon packages..."SAVEDIR=`pwd`cd /etc/rc.d/pkgsfor RCS in `ls rc.*`; do        if [ -x $RCS ]; then  . /etc/rc.d/pkgs/$RCS        fidonecd $SAVEDIRecho "Starting local packages..."# Start any misc local commandsif [ -x /etc/rc.d/rc.local ]; then        . /etc/rc.d/rc.localfiif [ "$NEW_KEYS" = "YES" ]; then        /usr/sbin/lrcfg.back etcfi
至此系统启动完成...
routeros
回复

使用道具 举报

发表于 2005-1-17 10:24:21 | 显示全部楼层
都快可以做自己的简单路由了。此帖明天进精华。不过老大应该单独发帖的。
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-11-24 06:50 , Processed in 0.103334 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表