slackware的启动过程(2)之rc.S
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-04-13
上节我们介绍了init进程执行的inittab脚本,这节我们分析在inittab中出现的 /etc/rc.d目录中的 “rc.X”脚本. 是系统初始化时执行的“rc.S”脚本,inittab中的对应行为si:S:sysinit:/etc/rc.d/rc.Src.S文件内容有380行之多,我们尽可能的逐行命令一一解释. 1、设置path环境变量 PATH=/sbin:/usr/sbin:/bin:/usr/bin 2、挂载proc文件系统/sbin/mount -v proc /proc -n -t proc 2> /dev/null proc文件系统是一个伪文件系统,它只存在于内存当中,它以文件系统的方式为访问系统内核数据的操作提供接口.例如我们查看cpu信息时经常使用”cat /proc/cpuinfo“ 命令. 3、挂载sysfs文件系统if [ -d /sys ]; then if grep -wq sysfs /proc/filesystems ; then if ! grep -wq sysfs /proc/mounts ; then /sbin/mount -v sysfs /sys -n -t sysfs fi fi fi sysfs文件系统是用来对系统的设备进行管理的,它把实际连接到系统上的设备和总线组织成一个分级的文件,用户空间的程序同样可以利用这些信息以实现和内核的交互.这种文件系统只存在于2.6内核中. 4、为2.6内核启动执行udev脚本.if grep -wq sysfs /proc/mounts && grep -q tmpfs /proc/filesystems ; then if ! grep -wq nohotplug /proc/cmdline ; then if [ -x /etc/rc.d/rc.udev ]; then /bin/sh /etc/rc.d/rc.udev start fi fi fi udev是一种工具,它能够根据系统中的硬件设备的状态动态更新设备文件,包括设备文件的创建,删除等.设备文件通常放在/dev目录下.使用udev后,在/dev目录下就只包含系统中真正存在的设备.
5、初始化LVM.if [ -r /etc/lvmtab -o -d /etc/lvm/backup ]; then echo "Initializing LVM (Logical Volume Manager):" # Check for device-mapper support. if ! grep -wq device-mapper /proc/devices ; then # Try to load a device-mapper kernel module: /sbin/modprobe -q dm-mod fi # Scan for new volume groups: /sbin/vgscan --mknodes --ignorelockingfailure 2> /dev/null if [ $? = 0 ]; then # Make volume groups available to the kernel. # This should also make logical volumes available. /sbin/vgchange -ay --ignorelockingfailure fi fi 6、开启交换分区./sbin/swapon -a 2> /dev/null 7、设置硬件时钟 if grep -wq "^UTC" /etc/hardwareclock ; then echo "Setting system time from the hardware clock (UTC)." /sbin/hwclock $CLOCK_OPT --utc --hctosys else echo "Setting system time from the hardware clock (localtime)." /sbin/hwclock $CLOCK_OPT --localtime --hctosys fi 8、检查根分区是否为只读,只有只读时才能检查硬盘.READWRITE=no if touch /fsrwtestfile 2>/dev/null; then rm -f /fsrwtestfile READWRITE=yes else echo "Testing root filesystem status: read-only filesystem" fi
9、重新挂载根分区,使其可写/sbin/mount -w -o remount / 10、修复/etc/mtabif [ -d /proc/sys ]; then /sbin/mount -f proc /proc -t proc fi if [ -d /sys/bus ]; then /sbin/mount -f sysfs /sys -t sysfs fi mount的f参数不执行实际的mount,只是模拟mount的执行过程. 11、加载内核模块,即执行rc.module*脚本if [ -x /etc/rc.d/rc.modules.local -a -r /proc/modules ]; then echo "Running /etc/rc.d/rc.modules.local:" /bin/sh /etc/rc.d/rc.modules.local elif [ -x /etc/rc.d/rc.modules- |
||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: rpm的使用下一篇: 我的Linux使用心得
关于slackware的启动过程(2)之rc.S的所有评论