对于
虚拟化,咱们但愿
共享虚拟光盘上的系统,每一个虚拟机的
个性配置和数据在各自的虚拟硬盘上!这样咱们只需维护
一个共享的系统和
各自的数据,这样虽然系统只读,不会感染病毒,但光盘不能更新,容易被攻击!进而咱们想到用共享的只读虚拟硬盘存放系统。
而linux的系统结构要求etc、bin、sbin、lib必须在同一个分区(/),usr、var、home、boot等系统目录及自定义目录能够放在其余分区。这就要求咱们必须从etc目录中分离出跟本机有关的文件或目录,或只保留能引导到挂载其余分区的一小部分,要动etc,必须精研初始化!linux
ubuntu的初始化一直在变,确实启动愈来愈快,但文档没能跟得上!辩证地看,对于字符界面的服务器来讲,BSD风格的init脚本,更利于管理员跟踪!网上不少资料,太老了,基本没有参考价值!10.04的初始化用的是基于事件的upstart。数据库
开始动手:ubuntu
一、/etc复制到另外一个分区/TaoHong/etc服务器
二、精简/etc,通过两天实验,缺一个文件都启动不了,/etc只保留:
#ls -p /etc
default/ fstab group gshadow init/ mtab passwd shadow
三、修改fstab并发
/dev/sda1 / ext4
ro 0 1 #
/根只读
/dev/sdb1 /TaoHong ext4 defaults 0 2
/TaoHong/etc /etc none bind #
增长此行,替换原/etc,至关于mount --bind /TaoHong/etc /etc
四、删除/etc/init/hostname.conf #实践证实,用下面第5步来
定义主机名
五、修改/etc/rc.local 增长一行 hostname -b -F /etc/hostname
六、把/etc/mtab变成软连接: ln -sf /proc/mounts mtab
通过以上精简,原/etc只剩下:2个目录,55个文件。
分析以下:
一、/etc/init/是
upstart的若干
做业定义文件,也就是网上说的
/etc/event.d(ubuntu10.04根本没有这个目录)。
二、当只保留fstab init/ mtab,重启后提示,缺乏/etc/default/下的某个文件,添加它,
/etc/default/都是默认
变量定义文件。
三、重启后提示,缺乏组和用户数据库,添加group gshadow passwd shadow 。
四、这时已经用个性化的/etc,开始继续初始化,成功启动!
五、为了节省内存,能够删除原/etc/init/下的tty3--tty6,做为服务器,tty1和tty2足够了,固然tty7是自动的,你能够去看!
六、因为是事件驱动的init,/etc/init/下的若干
做业定义文件,除了mountall.conf老是第一个执行,其余执行的次序是变化的!这是我用了一天的时间,为每个文件加了”签到“指令,实验出来的!
七、修改后,主机名是localhost,开始我分析是,upstart基于事件并发运行,mountall事件触发挂载fstab中的各个分区的动作尚未执行完, hostname.conf事件触发定义主机名
的动做并发运行,所以不能得到新/etc/hostname,因而我在/etc/init/hostname.conf文件中定义主机名以前加了延时,试验失败!好在办法总比问题多!无奈使用rc.local实现! 我把2.4内核+busybox作的防火墙,精简到软盘上,因为系统很小,文件不多,认真分析每个文件,豁然开朗! 多编译几遍内核、busybox,LFS几遍,gentoo几遍,谁都能作发行版,再难的事成功作过一万次,对于你,仍是难事吗?