顯示具有 Raspberry Pi 標籤的文章。 顯示所有文章
顯示具有 Raspberry Pi 標籤的文章。 顯示所有文章

2018年3月9日 星期五

EXT4 磁碟無法掛載的解決方法

最近買了一顆新的硬碟,在香蕉派(Banana Pi M3,使用Raspbian Jessie 系統)上格式化成EXT4 檔案系統後,卻無法掛載(mount),並出現以下錯誤訊息:
mount: wrong fs type, bad option, bad superblock on /dev/sdc1,
      missing codepage or helper program, or other error
      In some cases useful info is found in syslog - try
      dmesg | tail or so.
奇怪的是,另一個同樣是EXT4 檔案系統的磁碟就沒有這個問題,使用dmesg 查了一下錯誤訊息,顯示的資訊如下:
EXT4-fs (sdc1): couldn't mount RDWR because of unsupported optional features (400)
花了好一番功夫查詢資料後,才知道EXT4 檔案系統在Linux 3.5 以後,為了強化資料驗證能力,多了一個「metatype_csum」的標籤。如果要使用這個功能,只要(1)更新Linux 核心到3.6+、載入crc32c-intel模組,(2)安裝e2fsprogs 1.43-WIP 套件就可以使用了。

但因為我使用的是Raspbian ,又不打算重新編譯核心,所以得取消這個標籤才能夠正常掛載磁碟。

取消的方法如下:
1.先使用 tune2fs 檢查是否有metadata_csum 標籤,如果在Filesystem features 中看到metadata_csum ,就表示有。
sudo tune2fs -l /dev/sdc1
2.在取消標籤前,必須使用e2fsck 強制檢查磁碟,確認磁碟沒有問題。
sudo e2fsck -f /dev/sdc1
3.使用tune2fs 指令,取消 metatype_csum 。
sudo tune2fs -O ^metadata_csum /dev/sdc1
4.重新執行步驟1,就會發現metadata_csum 標籤消失了。接著再重新掛載磁碟就正常了。

參考資料:
1. Ext4 Metadata Checksums

2014年12月16日 星期二

「Syntax error: Bad for loop variable 語法錯誤」的解決方法

  最近在使用Raspberry Pi寫bash script抓取中央氣象局Opendata平台的資料時,遇到了一個很奇怪的問題。舉例來說,Script寫成下面這樣的話:
for ((i=1;i<=100;i=i+1))
do
echo "$i"
done
一旦執行,就會出現 Syntax error: Bad for loop variable 這樣的錯誤訊息。後來Google了一下才發現,原來Raspberry Pi跟Ubuntu一樣,為了讓開機速度更快,把bash換成dash了,所以有些script的語法就無法正常執行。

  解決的方法是:輸入dpkg-reconfigure dash。然後在設定畫面中選擇「否」。接著重新登入就恢復正常了。


參考資料:
http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?topic_id=5600