ArchlinuxがRead-onlyでマウントされた場合

  Raspberry Pi(以後RPi)のお話. 例えば,パッケージを更新しようと"sudo pacman -Syu"を実行した時に,
error: failed to init transaction (unable to lock database)
error: could not lock database: Read-only file system
なんてエラーが表示された場合の解決法. 何らかのバグによりルートディレクトリがRead-onlyでマウントされてしまった場合に吐くエラーのため,ルートディレクトリをRead-Writeで再マウントすれば解決するはず. 私の環境では以下のコマンドで解決した.
sudo mount -o remount,rw /
ルートディレクトリ"/"をRead-Writeで再マウントするコマンド. この後,"sudo pacman -Syu"すると上手く更新できた.

  もしも,起動する度にRead-onlyでルートディレクトリがマウントされてしまう場合は,/etc/fstabを編集することでマウント方法を指定できる.
sudo nano /etc/fstab
とし編集画面に入る.
#
# /etc/fstab: static file system information
#
# <file system> <dir>   <type>  <options>       <dump>  <pass>
/dev/mmcblk0p5  /       ext4    defaults        0       0
上記の太字部分を追記することで,ルートディレクトリを正常にマウントできるようになる. なお,各項目はスペースでは無くタブで区切られていることに注意. また,/dev/mmcblk0p5の部分はルートディレクトリのいるパーティション名であり,これは,
sudo fdisk -l
とすることで下記のように確認できる.
Device         Boot  Start      End  Sectors  Size Id Type
/dev/mmcblk0p1        2048   186367   184320   90M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      186368 30867455 30681088 14.6G  5 Extended
/dev/mmcblk0p5      188416 30867455 30679040 14.6G 83 Linux
TypeがLinuxなパーティションがそれであった(今回はp5). 以上/etc/fstabを保存し"sudo reboot"してみれば,ルートディレクトリがRead-Writeでマウントされているはずである.


  おまけ. パッケージを更新した時に,
:: Synchronizing package databases...
error: failed retrieving file 'core.db' from mirror.archlinuxarm.org : Could not resolve host: mirror.archlinuxarm.org
error: failed to update core (download library error)
error: failed retrieving file 'extra.db' from mirror.archlinuxarm.org : Could not resolve host: mirror.archlinuxarm.org
error: failed to update extra (download library error)
error: failed retrieving file 'community.db' from mirror.archlinuxarm.org : Could not resolve host: mirror.archlinuxarm.org
error: failed to update community (download library error)
error: failed retrieving file 'alarm.db' from mirror.archlinuxarm.org : Could not resolve host: mirror.archlinuxarm.org
error: failed to update alarm (download library error)
error: failed retrieving file 'aur.db' from mirror.archlinuxarm.org : Could not resolve host: mirror.archlinuxarm.org
error: failed to update aur (download library error)
error: failed to synchronize any databases
error: failed to init transaction (download library error)
というエラーを吐き出した時の対処法. resolv.confにネームサーバを追記することで解決した. 具体的には,
sudo nano /etc/resolv.conf
とし,resolv.confを編集する. 編集後のresolv.confは下記のようになった.
# Generated by resolvconf
nameserver 8.8.8.8
nameserver 8.8.4.4
これでresolv.confを保存すると上手く更新することができた.
5257621868968260378 http://www.storange.jp/2015/02/archlinuxread-only.html http://www.storange.jp/2015/02/archlinuxread-only.html ArchlinuxがRead-onlyでマウントされた場合 2015-02-20T20:38:00+09:00 http://www.storange.jp/2015/02/archlinuxread-only.html Hideyuki Tabata 200 200 72 72