/dev などをホスト側と共通にする
chroot 環境って、あれこれ試したい時に便利なんですよね。
grub を作りなおしたり、ビルドしたい時にたまに使うんだけど、chroot ってなんかこう、思い通りに行かない時があって。
たとえば イメージディスク中にあるものを触りたい
mount -o loop してイメージディスク中にある、イメージをあれこれ調整したい時があります。
今回は ディスクイメージ中のgrubを触ろうと思った。
ほかにもディスクイメージ中のraid構成をfstab をチェックしたいとかそういうとき、必要でした。
# cd /mnt/new-raid # mount -t proc proc proc/ # mount -t sysfs sys sys/ # mount -o bind /dev dev/ # mount -t devpts pts dev/pts/ # chroot /mnt/new-raid
コピペ用
sudo mount -t proc proc proc/ sudo mount -t sysfs sys sys/ sudo mount -o bind /dev dev/ sudo mount -t devpts pts dev/pts/
mount してchroot 環境に持っていく
ホスト側(元)からChroot側(マウント先)へmoount を移動するだけでした。
$ sudo mount /dev/sdXZ /mnt $ sudo mount /dev/sdXY /mnt/boot/efi $ sudo mount --bind /dev /mnt/dev $ sudo mount --bind /dev/pts /mnt/dev/pts $ sudo mount --bind /proc /mnt/proc $ sudo mount --bind /sys /mnt/sys $ modprobe efivars $ sudo chroot /mnt # grub-install /dev/sdX # update-grub # exit $ sudo umount -lf /mnt/sys $ sudo umount -lf /mnt/proc $ sudo umount -lf /mnt/dev/pts $ sudo umount -lf /mnt/dev $ sudo umount -lf /mnt/boot/efi $ sudo umount -lf /mnt
/dev/ /proc って単なるマウント
じつは、/procファイルシステムや /dev/ ってたんにマウントなんだって事に気づいて目からうろこだった。
なるほどー!!
Linuxシステムにおけるマウントって便利すぎる概念ですね。
追記 2016-11-05
chroot でナニするんだコレって思いながらメモしましたが、最近 grub-install で頻繁に使ってます。
for i in dev proc sys ; do sudo mount /$i /mnt/target/$i;done sudo chroot /mnt/target grub-install ...... exit for i in dev proc sys ; do sudo umount /mnt/target/$i;done
EFIパーティションを作ってインストールするときにテンプレのように叩いてます。
2022-01-07
誤字修正
参考資料
http://www.ibm.com/developerworks/jp/linux/library/l-lpic1-102-2/
https://wiki.ubuntulinux.jp/UbuntuTips/Others/ReinstallGrub2 https://wiki.ubuntulinux.jp/UbuntuTips/Others/ReinstallGrub2