== BooyoLiveCD/SysVinit == As we have seen, the init program is run by the kernel at boot time. It is in charge of starting all the normal processes that need to start up with the system. These include the getty processes that allow you to log in, NFS daemons, FTP daemons, and anything else you want to run when your machine boots. * The kernel looks in /sbin for init * init runs the /etc/rc.d/rc.sysinit script * rc.sysinit handles most of the boot loader's processes and then runs rc.serial (if it exists) * init runs all the scripts for the default runlevel * init runs /etc/rc.d/rc.local knoppix 는 sysvinit_2.84-186.tar.gz 사용 FC3 는 SysVinit-2.85-34.src.rpm 사용 === knoppix === {{{ bin -> /KNOPPIX/bin boot -> /KNOPPIX/boot lib -> /KNOPPIX/lib opt -> /KNOPPIX/opt sbin -> /KNOPPIX/sbin usr -> /KNOPPIX/usr root@ttyp1[/]# cd /sbin root@ttyp1[sbin]# ls -l init -rwxr-xr-x 1 root root 50932 2004-11-11 08:31 init root@ttyp1[sbin]# ls -l halt lrwxrwxrwx 1 root root 4 2005-01-22 13:42 halt -> init root@ttyp1[sbin]# ls -l reboot lrwxrwxrwx 1 root root 4 2005-01-22 13:42 reboot -> init /etc/inittab si::sysinit:/etc/init.d/rcS l0:0:wait:/etc/init.d/knoppix-halt l6:6:wait:/etc/init.d/knoppix-reboot ca::ctrlaltdel:/etc/init 0 kb::kbrequest:/bin/echo "Keyboard Request -- edit /etc/inittab to let this work." pf::powerwait:/etc/init.d/powerfail start pn::powerfailnow:/etc/init.d/powerfail now po::powerokwait:/etc/init.d/powerfail stop /etc/init.d knoppix-autoconfig -> /KNOPPIX/etc/init.d/knoppix-autoconfig knoppix-halt -> /KNOPPIX/etc/init.d/knoppix-halt knoppix-reboot -> /KNOPPIX/etc/init.d/knoppix-reboot case "$CMDLINE" in *noprompt*) NOPROMPT="yes"; ;; esac FINALCMD="/sbin/$command" if [ -z "$INSTALLED" -a -z "$NOPROMPT" ]; then [ -x /etc/init ] || cp -p /sbin/init /etc/ [ -x /etc/init ] && FINALCMD="/etc/init" /KNOPPIX/etc/init.d knoppix-halt -> knoppix-reboot }}} * halt, reboot, Ctl-Alt-Del 모두 knoppix-halt 를 수행하고, 결과적으로 /etc/init 를 마지막으로 수행함. * /etc/init.d/powerfail 이 없슴. === 차이점 === {{{ 34,38c36,37 < init: init.o init_utmp.o < halt: halt.o ifdown.o hddown.o utmp.o reboot.h --- > init: init.o init_utmp.o halt.o ifdown.o utmp.o reboot.h 102,103c92,94 < cd $(ROOT)/sbin; ln -sf halt reboot; < cd $(ROOT)/sbin; ln -sf halt poweroff; --- > cd $(ROOT)/sbin; ln -sf init halt; > cd $(ROOT)/sbin; ln -sf init reboot; > cd $(ROOT)/sbin; ln -sf init poweroff; diff -r sysvinit-2.85/src/halt.c /home/tcheun/sysvinit-knoppix-2.84/src/halt.c 11c11 < * Usage: halt [-n] [-w] [-d] [-f] [-p] --- > * Usage: halt [-n] [-w] [-d] [-f] [-p] [-r] 16a17 > * -r: reboot (act like "reboot") > /* KNOPPIX: the "halt" options idfnpwt }}} {{{ halt.c if (!strcmp(progname, "reboot")) do_reboot = 1; if (!strcmp(progname, "poweroff")) do_poweroff = 1; 옵션 case 'n': do_sync = 0; do_wtmp = 0; case 'w': do_nothing = 1; case 'd': do_wtmp = 0; case 'f': do_hard = 1; case 'i': do_ifdown = 1; case 'p': do_poweroff = 1; case 'r': do_reboot = 1; case 't': tm = optarg; fc3 추가 case 'h': do_hddown = 1; }}} * halt.c 에서 Please remove CD, close cdrom drive and hit return. 처리 === inittab in fedora === * ca::ctrlaltdel:/sbin/shutdown -t3 -r now * pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" * pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled" * shutdown.c * -r 의 경우 reboot rc6.d 수행 * S00killall * S01reboot /sbin/reboot 링크 to /sbin/halt * -h 의 경우 halt rc0.d 수행 * S00killall * S01halt /sbin/halt === 명령어 === === gnome -> 명령 -> 로그아웃 === /proc/sys/dev/cdrom/autoclose /proc/sys/dev/cdrom/autoeject /proc/sys/dev/cdrom/check_media /proc/sys/dev/cdrom/debug /proc/sys/dev/cdrom/info /proc/sys/dev/cdrom/lock As an example, the auto eject feature can be turned on by the superuser with the command echo "1" > /proc/sys/dev/cdrom/autoeject. This will cause cdroms to be ejected from the drive when unmounted. === modify sysvinit === boot booyo need libsepol-devel-1.1.1-2.i386.rpm make BUILD mv src to fedora for CVS (sshd) boot fedora change source code (Makefile, halt.c, init.c) boot booyo mv source code make 해야 할 일 halt.c commit 할 것 /sbin/init.org halt.org reboot.org 1019 mv init init.org 1020 cp -p /usr/src/booyo/BUILD/sysvinit-2.85/src/init . 1023 mv halt halt.org 1025 ln -sf init halt 1028 mv reboot reboot.org 1029 ls -l reboot.org 1030 ln -sf init reboot 1033 mv poweroff poweroff.org 1034 ln -sf init poweroff booyo-halt 수정 필요 /initrd/etc/rc.d/inittab, /initrd/init 수정했슴. === 2006.6.7 === init 을 만들때 static 옵션을 주어야 함. 아직 문제가 없는 것은 아님. inittab 를 6 로 하고 booyo-halt 를 바로 수행할 경우에 /BOOYO 가 busy 로 나오는 이유는 무엇일까? strip init cp init /mnt/sda11/sbin/ reboot /mnt/sda11 make compressed 새 버전으로 수정해야 함.