文件系统只读方案
文章目錄
- 1、問題現(xiàn)象
- 2、具體方案
- 2.1 分區(qū)方案
- 2.2 分區(qū)后的燒寫情況
- 2.3 對文件系統(tǒng)的修改
- 2.4 關(guān)于之前掛載后拔卡無法刪除相應(yīng)目錄的分析
- 2.4.1 問題分析
- 2.4.2 解決方案
- 測試情況
1、問題現(xiàn)象
示教器在測試過程中丟失了根文件系統(tǒng)下的usr目錄,出現(xiàn)了嚴(yán)重的無法正常啟動的問題。
具體為什么丟失該目錄,原因未能查到,解決方案是除了用戶目錄以外,將根文件系統(tǒng)的權(quán)限設(shè)置為只讀,保證根文件系統(tǒng)的安全性。
2、具體方案
2.1 分區(qū)方案
增加用戶目錄分區(qū),將根文件系統(tǒng)分為兩部分,一部分為系統(tǒng)組使用,設(shè)置為只讀;另一份給用戶使用,可任意讀寫。
具體根文件系統(tǒng)占200M,放在mtdblock8當(dāng)中,剩余部分作為用戶目錄,放在mtdblock9當(dāng)中,可用大概為800M。
2.2 分區(qū)后的燒寫情況
燒寫主要放在uboot當(dāng)中,其中分為usb燒寫和SD卡燒寫,兩者差別比較小,以sd燒寫為例。
通過以下宏定義,設(shè)置分區(qū)名字,方便燒寫。
燒寫時通過TYPE環(huán)境變量控制進(jìn)度條的顯示,home鏡像較小,燒寫很快,所以整體上進(jìn)度條保持原來4條的樣子。
2.3 對文件系統(tǒng)的修改
修改fstab當(dāng)中的掛載情況,將文件系統(tǒng)中需要掛載的文件卸載fstab當(dāng)中。
其中mmc1:2是之前QT使用的目錄,為了保證QT不做修改,這里鏈接到了home目錄下。
觸摸屏的校準(zhǔn)文件也進(jìn)行了鏈接,保證QT不做修改。
2.4 關(guān)于之前掛載后拔卡無法刪除相應(yīng)目錄的分析
2.4.1 問題分析
問題現(xiàn)象:拔卡或者拔出USB出現(xiàn)無法刪除掛載目錄的現(xiàn)象。
分析掛載腳本可知,當(dāng)存在/tmp/.automount-$name時,才可以將目錄刪除掉。
產(chǎn)生該問題的原因就是在掛載SD卡和USB時,系統(tǒng)的tmp目錄還沒有掛載,在上邊f(xié)stab設(shè)置當(dāng)中,可以看到var/volatile目錄是一個臨時目錄,當(dāng)斷電之后就會重置,tmp目錄就是從這里邊鏈接出來的。
這就是之前注釋掉rcS.d當(dāng)中的mount -at nonfs,nosmbfs,noncpfs 2>/dev/null解決了該問題的原因,注釋掉這句話之后,不再掛載所有的fstab目錄下的所有文件系統(tǒng),只能創(chuàng)建不是臨時目錄的目錄,這樣文件就永久保存了下來,就能夠保證保留下/tmp/.automount-$name,就不再產(chǎn)生該問題。
2.4.2 解決方案
掛載情況修改為以下,因為修改為只讀后,mmc1:2目錄只能放到home下,udev開始掛載sd卡時,home目錄還未掛載,所以導(dǎo)致無法正常掛載SD卡,所以需要在系統(tǒng)初始化完成之后再次掛載。
rootfs / auto ro 1 1 proc /proc proc defaults 0 0 devpts /dev/pts devpts mode=0620,gid=5 0 0 usbfs /proc/bus/usb usbfs defaults 0 0 tmpfs /var/volatile tmpfs defaults,size=16M 0 0 tmpfs /dev/shm tmpfs mode=0777 0 0 tmpfs /media/ram tmpfs defaults,size=16M 0 0 /dev/mtdblock9 /home/root auto rw,sync 0 0# uncomment this if your device has a SD/MMC/Transflash slot /dev/mmcblk0p1 /home/root/mmc1:2/Disk/mmcblk0p1 auto rw,sync 0 0 /dev/sda1 /home/root/mmc1:2/Disk/sda1 auto rw,sync 0 0在rc5.d中最后的腳本中增加以下內(nèi)容。
if [ -e /dev/mmcblk0p1 ]; then mkdir /home/root/mmc1\:2/Disk/mmcblk0p1 touch "/tmp/.automount-mmcblk0p1" fi if [ -e /dev/sda1 ]; then mkdir /home/root/mmc1\:2/Disk/sda1 touch "/tmp/.automount-sda1" fi mount -at nonfs,nosmbfs,noncpfs 2>/dev/null有效解決了之前拔卡無法刪除目錄的問題,也解決了home未掛載,SD卡不能掛載問題。同時解決了之前取消掛載tmpfs的問題。
測試情況
經(jīng)過簡單的測試,未發(fā)現(xiàn)文件系統(tǒng)只讀后對QT有影響,具體情況還需要進(jìn)一步測試。
對于文件系統(tǒng)文件丟失的具體原因還未找到,暫時不能確定改為只讀是否能有效解決丟失文件問題,需要多次測試。
后續(xù)會分析文件丟失的具體原因,嘗試復(fù)現(xiàn)問題。
總結(jié)
- 上一篇: mysql统计数学课的及格人数_mysq
- 下一篇: linux 文件格式elf,linux