對于 虛拟化,我們希望 共享虛拟CD光牒上的系統,每個虛拟機的 個性配置和資料在各自的虛拟硬碟上!這樣我們隻需維護 一個共享的系統和 各自的資料,這樣雖然系統隻讀,不會感染病毒,但CD光牒不能更新,容易被攻擊!進而我們想到用共享的隻讀虛拟硬碟存放系統。
而linux的系統結構要求etc、bin、sbin、lib必須在同一個分區(/),usr、var、home、boot等系統目錄及自定義目錄可以放在其他分區。這就要求我們必須從etc目錄中分離出跟本機有關的檔案或目錄,或隻保留能引導到挂載其他分區的一小部分,要動etc,必須精研初始化!
ubuntu的初始化一直在變,确實啟動越來越快,但文檔沒能跟得上!辯證地看,對于字元界面的伺服器來說,BSD風格的init腳本,更利于管理者跟蹤!網上很多資料,太老了,基本沒有參考價值!10.04的初始化用的是基于事件的upstart。
開始動手:
1、/etc複制到另一個分區/TaoHong/etc
2、精簡/etc,經過兩天實驗,缺一個檔案都啟動不了,/etc隻保留:
#ls -p /etc
default/ fstab group gshadow init/ mtab passwd shadow
3、修改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
4、删除/etc/init/hostname.conf #實踐證明,用下面第5步來 定義主機名
5、修改/etc/rc.local 增加一行 hostname -b -F /etc/hostname
6、把/etc/mtab變成軟連結: ln -sf /proc/mounts mtab
經過以上精簡,原/etc隻剩下:2個目錄,55個檔案。
分析如下:
1、/etc/init/是 upstart的若幹 作業定義檔案,也就是網上說的 /etc/event.d(ubuntu10.04根本沒有這個目錄)。
2、當隻保留fstab init/ mtab,重新開機後提示,缺少/etc/default/下的某個檔案,添加它, /etc/default/都是預設 變量定義檔案。
3、重新開機後提示,缺少組和使用者資料庫,添加group gshadow passwd shadow 。
4、這時已經用個性化的/etc,開始繼續初始化,成功啟動!
5、為了節省記憶體,可以删除原/etc/init/下的tty3--tty6,作為伺服器,tty1和tty2足夠了,當然tty7是自動的,你可以去看!
6、由于是事件驅動的init,/etc/init/下的若幹 作業定義檔案,除了mountall.conf總是第一個執行,其他執行的次序是變化的!這是我用了一天的時間,為每一個檔案加了”簽到“指令,實驗出來的!
7、修改後,主機名是localhost,開始我分析是,upstart基于事件并發運作,mountall事件觸發挂載fstab中的各個分區的動做還沒有執行完, hostname.conf事件觸發定義主機名 的動作并發運作,是以不能獲得新/etc/hostname,于是我在/etc/init/hostname.conf檔案中定義主機名之前加了延時,試驗失敗!好在辦法總比問題多!無奈使用rc.local實作!
我把2.4核心+busybox做的防火牆,精簡到軟碟上,由于系統很小,檔案很少,認真分析每一個檔案,豁然開朗!
多編譯幾遍核心、busybox,LFS幾遍,gentoo幾遍,誰都能做發行版,再難的事成功做過一萬次,對于你,還是難事嗎?
版權聲明:本文為CSDN部落客「weixin_34226182」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。
原文連結:https://blog.csdn.net/weixin_34226182/article/details/91917861