1. 程式人生 > >讓linux開機將檔案系統掛載為只讀

讓linux開機將檔案系統掛載為只讀

2008-01-09 14:33

今天!由於種種原因,種種因素,我要做這麼一件變態的事情——讓linux開機就把/分割槽和/boot分割槽掛載為只讀。
       既然這樣當然是修改/etc/fstab了,將/和/boot的屬性列的default改為ro,重啟機器!結果......
       結果當然是失敗了,否則我為什麼要寫這篇文章。結果是/boot成功掛載為read only了,但是/還是rw。為什麼尼?肯定是系統初始化的時候由於某種原因重新掛載了一次/分割槽。查檢視吧,cd /etc/,這下面有一個inittab看起來很可疑,開啟來看看,沒有什麼特別的除了一句話:
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
好吧,開啟看看/etc/rc.d/rc.sysinit這個檔案,哇!太長老!!腦瓜仁兒疼,直接搜尋remount,果然被我找到:
action $"Remounting root filesystem in read-write mode: " mount -n -o remount,rw /
趕快把rw改為ro,儲存,重啟。成功了!!但是在初始化的時候出現很多提示,由於機器配置太高,刷一下就過去了,啥也沒看清,就恍惚記住幾個字:什麼 read only什麼failed。看來在系統初始化的時候還是要對/分割槽進行寫操作的(我已經關閉了日誌系統),不過系統還是正常起來了,但是!mysql啟動 失敗......
Starting MySQL...................................          [failed]
這東西也要寫?!這可不行,mysql失敗了對我來說就沒有意義了。就在這時候,靈異的事情發生了!我輸入命令:
/etc/init.d/mysql start
Starting MySQL                                            [ OK ]
哎呀!!跟我過不去是不是!手工輸入命令就起來了!執行一切正常!現在/還是read only的狀態。
後來我嘗試了把rc.sysinit檔案改回來,然後在rc3.d中(我的預設啟動級別是3)加入一個啟動指令碼,S99remountfs,mysql的啟動指令碼是S94mysql,在S99remountfs之前,裡面寫上了這樣幾行:
/etc/init.d/mysql stop
mount / -o remount,ro
/etc/init.d/mysql start
結果還是一樣的,哎!!看來只好把mysql根資料庫檔案一起裝在別的分割槽了。(我現在的mysql是裝在/分割槽的,但資料檔案我用連結轉移到了 /mydata分割槽,這又是一段歷史了)但是我的mysql安裝檔案是rpm包,還要下載原始碼版本的重新編譯了,哎~~麻煩!希望能夠有辦法解決這個問 題。等我解決了我會發上來的,本人記性不好!