メモ。

ただのメモです。

CentOS7.x LiveCDで遊ぶ (1)

  1. CentOS-7-x86_64-LiveGNOME-1511.isounetbootinで、ブータブルUSBメモリ化する。

  2. 読み込み専用ファイルシステムsquashfs.imgに保存されているCentOSをカスタマイズする。

ディレクトリ構造

作成後のUSBメモリ内のディレクトリ構造は下の様になっている。

 $ tree 
 .
 ├── EFI
 │   └── BOOT
 │       ├── BOOTX64.EFI
 │       ├── fonts
 │       │   └── unicode.pf2
 │       ├── grub.cfg
 │       └── grubx64.efi
 ├── LiveOS
 │   ├── osmin.img
 │   └── squashfs.img
 ├── isolinux
 │   ├── boot.cat
 │   ├── efiboot.img
 │   ├── initrd0.img
 │   ├── isolinux.bin
 │   ├── isolinux.cfg
 │   ├── macboot.img
 │   ├── vesamenu.c32
 │   └── vmlinuz0
 ├── ldlinux.sys
 ├── menu.c32
 ├── syslinux.cfg
 ├── ubnfilel.txt
 ├── ubninit
 ├── ubnkern
 └── ubnpathl.txt
 
 5 directories, 21 files

カスタマイズする。

① 読み込み専用ファイルシステムsquashfs.imgを適当な場所へコピー後、unsquashfsコマンドで解凍する。

 $ unsquashfs  squashfs.img 
 Parallel unsquashfs: Using 8 processors
 1 inodes (65536 blocks) to write
 
 [====================-                                       ] 22252/65536  33%
 
 $ tree  squashfs-root/
 squashfs-root/
 └── LiveOS
     └── ext3fs.img
 
 1 directory, 1 file

② ext3fs.imgを適当なディレクリにマウントする。

 $ mount -o loop,rw  squashfs-root/LiveOS/ext3fs.img /mnt
 $ cd /mnt
 $ ls /mnt
 bin   dev  home  lib64       media  opt   root  sbin  sys  usr
 boot  etc  lib   lost+found  mnt    proc  run   srv   tmp  var

③ /mntをルートディレクトリとして、コンテナを起動する。

 $ systemd-nspawn -D /mnt
 Spawning container mnt on /mnt.
 Press ^] three times within 1s to kill container.

こうすると、yumコマンドで、パッケージもインストール可能となる。コンテナを停止させたければ、exitを入力すればよい。

 $$ exit
 logout
 Container mnt exited successfully.

④ 読み込み専用ファイルシステムsquashfs.imgに加えた変更を保存して、元にあった場所にコピーすれば、完了。

 $ mksquashfs squashfs-root squashfs.img
 Parallel mksquashfs: Using 8 processors
 Creating 4.0 filesystem on squashfs.img, block size 131072.
 [===================/                                        ] 22159/65536  33%