それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

chroot環境下でホスト側のデバイス/devなどを使う。

/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

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パーティションを作ってインストールするときにテンプレのように叩いてます。

参考資料

http://www.webzoit.net/hp/it/internet/homepage/env/cs/bootstrap/multiboot/usb_memory_stick/usb_gpt_grub2/howto/grub2-install/

http://www.ibm.com/developerworks/jp/linux/library/l-lpic1-102-2/

https://wiki.gentoo.org/wiki/GRUB2/ja#.E3.83.96.E3.83.BC.E3.83.88.E3.83.AD.E3.83.BC.E3.83.80.E3.83.BC.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB

https://wiki.ubuntulinux.jp/UbuntuTips/Others/ReinstallGrub2 https://wiki.ubuntulinux.jp/UbuntuTips/Others/ReinstallGrub2

http://www.nslabs.jp/raid1-convert.rhtml

広告を非表示にする