###
unionfs
###
aufs
###
tmpfs
http://raspberrypi.stackexchange.com/questions/5112/running-on-read-only-sd-card
Reference:
###
busybox syslog
為了要避免SD卡因為電源插拔損壞,我想要將他改成read
only
在網路上搜尋了一下,發現大家的做法很像,但是又不全部一樣
我在試unionfs的時候,
大部分的部落客都是參考同一個德文的網站
我設定完後重開機,進入了raspbien的開機畫面
照理說raspbien的預設使用者名稱為pi,密碼為raspberry
但是我就是沒有辦法進入桌面,看了一下在德文跟英文下面的留言
也有些人跟我一樣遇到這樣的情形,但是沒有人提出真正可能的解決方法
當然我也不是那個咖可以自己找到方法(哭)
不過很多人寫說unionfs很不好用,建議用aufs
所以我又到處尋尋覓覓,試了其他幾個部落客的方法,他們都沒有用unionfs,而是用tmpfs,
但是很多都是在/dev/mmcblk0p1與/dev/mmcblk0p2中都設ro(read
only),我試了以後開機直接進入黑屏.......
後來又搜尋到referece中的寫的方法,但是他只設/dev/mmcblk0p1為read
only
只有這樣我才能順利開機,但是這方法是不是真的能讓sd卡不受摧毀????
只能待時間來證明了!!!
但是最重要的還是要更加深入的了解linux阿!!!!
$
sudo nano /etc/defaults/rcS 在最後加入 RAMTMP=yes |
但是之後不知道長時間開機的話會不會造成記憶體空間不足?
如果安裝時造成記憶體空間不足,需要把這個參數改成no
開機時,會根據/etc/fstab裡面的內容,把需要的裝置掃瞄一遍
$ sudo nano /etc/fstab |
鳥哥的網站對此有詳細的說明
(http://linux.vbird.org/linux_basic/0230filesystem.php)
掛載限制
根目錄
/
是必須掛載的﹐而且一定要先於其它
mount
point 被掛載進來。
其它
mount
point 必須為已建立的目錄﹐可任意指定﹐但一定要遵守必須的系統目錄架構原則
所有
mount
point 在同一時間之內﹐只能掛載一次。
所有
partition
在同一時間之內﹐只能掛載一次。
如若進行卸載﹐您必須先將工作目錄移到
mount
point(及其子目錄)
之外。
下面六個參數
1.
掛載的系統位置
- 要被掛載的目錄
- 系統檔案類型
- 系統檔案參數ro : read onlynodev : 不允許此 partition 上,可建立裝置檔案nosuid : 不允許此 partition 含有 suid/sgid 的檔案格式noatime: 別記錄讀取時間, 會造成部份程式失常。Errors : remount-ro - 重新掛載檔案系統成只讀模式,可以令系統有限度地繼續運作但減低損害檔案系統資料的機會。
defaults : 同時具有rw, suid, dev, exec, auto, nouser, async 等參數。 基本上,預設情況使用 defaults 設定即可! - 能否被 dump 備份指令作用: 0 代表不要做 dump 備份, 1 代表要每天進行 dump 的動作。 2 也代表其他不定日期的 dump 備份動作, 通常這個數值不是 0 就是 1 啦!
- 是否以 fsck 檢驗磁區: 開機的過程中,系統預設會以 fsck 檢驗我們的 filesystem 是否完整 (clean)。 不過,某些 filesystem 是不需要檢驗的,例如記憶體置換空間 (swap) ,或者是特殊檔案系統例如 /proc 與 /sys 等等。所以,在這個欄位中,我們可以設定是否要以 fsck 檢驗該 filesystem 喔。 0 是不要檢驗, 1 表示最早檢驗(一般只有根目錄會設定為 1), 2 也是要檢驗,不過 1 會比較早被檢驗啦! 一般來說,根目錄設定為 1 ,其他的要檢驗的 filesystem 都設定為 2 就好了。
最後一個參數預設是2,之前做失敗的版本/dev/mmcblk0p1也都是保持2,但是這個成功的 版本是1,不確定是不是也有關連?
Tmpfs
(http://zh.wikipedia.org/wiki/Tmpfs):
所有在
tmpfs
上儲存的資料在理論上都是暫時借放的,那也表示說,檔案不會建立在硬碟上面。一旦重新開機,所有在
tmpfs
裡面的資料都會消失不見。理論上,記憶體使用量會隨著
tmpfs
的使用而時有增長或消減。目前有許多
Unix
的發行版都有啟用
tmpfs
,預設是把它以共享記憶體的方式用在系統的/tmp
目錄底下。
tmpfs
在 Linux
kernel 從
2.4
之後的版本都有支援。tmpfs(之前比較為人所知的名稱是
"shmfs")和
Linux
的 ramdisk 裝置定位有所不同。
Ramdisk
是固定劃分一塊記憶體出來使用,且允許比較不常用的頁面可以移動到置換空間去。
tmpfs
的用法,舉例來說是像:
"mount
-t tmpfs -o size=1G,nr_inodes=10k,mode=0700 tmpfs /space"
這樣就會使用
1 GiB 的置換空間,裡頭有
10240
inodes 且規定是在 /space 目錄底下存取。這個檔案系統的大小是可以隨時調整的,像是再追加一個指令如:mount
-o remount,size=2G /space"。要註記一點,如果/tmp
有安全上的顧慮的話,最好追加 sticky
bit 上來.
就是權限應該被設作
"mode=1777"
,而不是
"mode=0777
或
"mode=777"$ sudo nano /etc/init.d/hwclock.sh |
在60行的地方把-f改成-L
$
sudo nano /etc/init.d/hwclock.sh
裡面加入這行
BLKID_FILE="/var/local/blkid.tab"
|
sudo
rm /etc/mtab sudo ln -s /proc/self/mounts /etc/mtab |
/etc/apt/apt.conf:這個並不是
APT
Server 的記錄檔,而是當我們在指令列模式下達
APT
的指令時
(如底下執行檔部分會介紹的
apt-get
),該指令的環境參數。一般來說,使用預設值就可以了!不需要更動他。
如果使用者用apt-get則會自動remount成rw,但是如果NO_APT_REMOUNT
為
-no,則保持為Read
Only
$ sudo nano /etc/apt/apt.conf |
可以下command讓系統改回rw
mount -o remount,rw / |
或是回到ro
mount -o remount,ro / |
-----------------------------
另一種方法分隔線
-------------------------------
後來我又看到有些人寫另一種方法用busybox
syslog
很興奮的試了一下,結果竟然進入command
line模式...
而且還要輸入帳號密碼,變成兩個都要寫pi
對linux
一竅不通的我完全不知道怎麼回事
我猜是前面幾個移除不需要的配件時,應該把自動登入的設定拿掉了(我自己猜的)
所以我試了一下先不要移除任何東西
然後下載busybox
syslog
The
reason for doing this is because we do not want logfiles, but we want
to be able to do some debugging (read logfiles). busybox-syslogd does
not write logfiles but logs to a ring-buffer in memory which can be
displayed using the logread command:
apt-get install busybox-syslogd dpkg --purge rsyslog |
把/etc/init.d/checkroot.sh
與/etc/init.d/checkfs.sh
裡面case
1 下的do_start 註解起來
再把
/etc/init.d/checkroot-bootclean.sh
下的這兩個註解起來
rm
-f /tmp/.clean /lib/init/rw/.clean /run/.clean /run/lock/.clean clean_all |
移除啟動時的script
insserv
-r bootlogs insserv -r sudo insserv -r alsa-utils insserv -r console-setup insserv -r fake-hwclock |
在/etc/fstab
內改成,這跟上面的方法不同
proc
/proc proc defaults 0
0 /dev/mmcblk0p1 /boot vfat defaults,ro 0 2 /dev/mmcblk0p2 / ext4 defaults,ro 0 1 tmpfs /tmp tmpfs defaults 0 0 |
最後一個是要把 /boot/cmdline.txt
的最後加上ro,但是如果加上了ro,就會變黑屏無法開機
後來我在windows下,把boot裡面的這個ro拿掉才可以順利開機
我的感覺是雖然好像把系統改成read
only,只要把/etc/fstab
內的其中一個或是兩個partition改成ro,但是其他的配套措施,每個人有自己不同的解決方法,所以在搜尋的過程中其實真的是混亂!
如果第一種方法不是真的read
only,可能可以換成第二種方法試試吧??
沒有留言:
張貼留言