## 成 swap 的 device 全部启动 .
/sbin/swapon -a
## 喔 ! 下面这个指令 update 就很重要了 , 它负责每隔一段固定的时间 , 就将
## buffer 中的资料 , 利用 sync 写回磁碟机上 , 并将 superblock 做 update
## 的动作 . 使用 ps 这个指令看看有那些 process , 就可看到 update 还有一个
## bdflush , 这两个 process 都是必然要存在的 , 可不要随便砍掉 , 要不然 ,
## 万一系统 crash 了 , 那磁碟机里面的资料就不是最新的了 ......
/sbin/update &
## 利用 echo -n >> 制造一个档案 , 并用 rm -f 这个档案来测试 root partition
## 是不是 read-only 或者是可读写
READWRITE=no
if echo -n >> "Testing filesystem status"; then
rm -f "Testing filesystem status"
READWRITE=yes
fi
## 假如 root partition 是 read-only 就作 fsck 的动作 , 假如不是 read-only
## 而是 read-write 的话 , 就做下面 else 之後的动作
if [ ! $READWRITE = yes ]; then
## 利用 fsck 做检查及修复档案系统的工作 , 後面接的两个参数 -A , -a .
## -A 的意思是 : fsck 会依据 /etc/fstab 中的记录 , 去检查所有的档案
## 系统 ; 而 -a 就是 auto 的意思 , 当 fsck 有修复的动作时 , 它不会问
## 你问题 , 而直接修复 .
/sbin/fsck -A -a
## 假如 fsck 有 error , [ $? -gt 1 ] 括号里面的意思是 : 若上个命令的
## 传回值大於 1 , 而上个命令就是 fsck . 让我们看看 fsck 的传回值 :
##0;- No errors
##1;- File system errors corrected
##2;- File system errors corrected, system should
##; be rebooted if file system was mounted
##4;- File system errors left uncorrected
##8;- Operational error
##16- Usage or syntax error
##128; - Shared library error
## 很明显的 , 若有任何错误产生的话 , 那 fsck 的传回值都大於 1 . 其实
## 就我的观点认为 , 应该写成 if [ $? -ge 1 ] 比较好 . 既然有错呢 , 系统
## 应该就要跳至单人模式 , 在单人模式中主要就是 /etc/rc.d/rc.K
## 中的两件事 : 关掉 swap 及 卸下所有的档案系统 , 而最後重新 login .
## 一般正常的情况下 ,; if 下面这一大段是不会执行的 , 而会跳至下面
## 标有 *************************; Normal 1; ************************* 处
if [ $? -gt 1 ] ; then
echo
echo
echo "**************************************"
echo "fsck returned error code - REBOOT NOW!"
echo "**************************************"
echo
echo
/bin/login
fi
## ******************************; Normal 1; **************************
## 当 fsck 检查没有错误之後 , 就把 root partition 重新 mount 上来
## 下面指令的参数有三个 , -w 代表mount 成可读写 , -n 代表把一个 file-
## system mount 上来 , 但不会把记录写到 /etc/mtab 中 , 在上次对 /etc/mtab
## 介绍时有提到 , 当我们使用 mount 这个指令把一个 filesystem mount 上来
## 的时候 , /etc/mtab 就会记录 ! 利用 -n 这个 option 可使得做 mount 的动
## 作 , 却不会记录 . -o 後面可以接许多的选项 , 在这里 , 我们给它的选项是
## remount . remount 的意思是 : 重新 mount 一个已经被 mount 的 filesystem
## 这个选项通常被用来改变该 filesystem 的读写旗号 ,尤其是把 filesystem
## 从 read-only 的状态 , 改变成 read-write 的状态 .
echo "Remounting root device with read-write enabled."
/sbin/mount -w -n -o remount /
## 在前面的情况中 , 都是 root partition 为 read-only 的状态下 , 所做的一些
## 工作 , 到了最後一个指令 /sbin/mount -w -n -o remount / , 才把 root
## partition mount 成 read-write . 各位有没有看到前面那行 :
## if [ ! $READWRITE = yes ]; then ..... 下面这个 else 就是与这个 if 对应
## 也就是说 , 前面那个 if 的区块中 , 所作的工作都是在 root partition 为
## read-only 的条件成立下所作的事 , 那很明显的 , 下面这个 else 就是 root
推荐阅读
- 关于Linux操作系统DNS包卸载和安装方法
- 戴尔Linux计划成功 将继续扩大产品种类
- 投资公司设立程序有哪些
- 实例讲解:安装Linux drcom 上网客户端
- Linux系统上从源代码安装软件的一般步骤
- 红帽Redhat面临挑战 出路竟是Linux桌面
- Unix遇威胁Linux市场成倍增长
- Debian Linux下配置heartbeat高可用集群
- OpenSSH实现Windows和Linux文件安全传输
- 两个Linux操作系统NFS服务器的配置方法
