前回構築したOpenBlocks用Arch Linuxコンテナには 不要なパッケージも多く含まれている。そこで、作成したコンテナを利用し最小構成 (systemdとsshdが上がりログインができる状態)のrootfs tarballを作成する。
基本的な構築方法は x86_64環境のArch LinuxでLXCコンテナ用rootfsを作成した時と同じであるが、 今回はpacstrap時にbaseを丸ごと入れるのではなく、systemdとopensshのみ導入する。
miku@arch% su root@arch# pacman -S arch-install-scripts root@arch# mkdir rootfs root@arch# pacstrap -d rootfs pacman systemd openssh bash root@arch# chroot rootfs /bin/bash root@arch(chroot)# ln -s /usr/lib/systemd/system/sshd.service \ > /etc/systemd/system/multi-user.target.wants/sshd.service root@arch(chroot)# ln -s /usr/lib/systemd/system/sshdgenkeys.service \ > /etc/systemd/system/multi-user.target.wants/sshdgenkeys.service root@arch(chroot)# pacman -Sc root@arch(chroot)# rm /var/cache/pacman/pkg/* root@arch(chroot)# mkdir /dev/pts root@arch(chroot)# passwd root@arch(chroot)# groupadd -g 3939 miku root@arch(chroot)# useradd -g miku -u 3939 -s /bin/bash -m miku root@arch(chroot)# passwd miku root@arch(chroot)# exit root@arch# rm rootfs/root/.bash_history root@arch# tar cJpf rootfs.tar.gz rootfs
今回作成した最小構成環境が正しく動作するか試したところ、/dev/consoleが 存在しないとのエラーが発生する。
miku@obs$ sudo /usr/miku/bin/lxc-start -n test -- /usr/lib/systemd/systemd lxc-start: No such file or directory - stat(/proc/26644/root/dev//console)
これも/dev/ptsが存在しない問題と似た問題のようなので、/dev/consoleを作 成しておく。
root@arch(chroot)# mknod -m 600 mini/rootfs/dev/console c 5 1
LXC側で必要としている/dev/tty{1..4}等はLXC側で自動作成しているようなの で、LXC側で必要であるのに/dev/consoleを自動作成できていないのが原因だ と考えられる。
/dev/console作成後は想定通り動作するようになった。
miku@obs% sudo /usr/miku/bin/lxc-start -n test -- /usr/lib/systemd/systemd <30>systemd[1]: Smack is not enabled in the kernel, not loading access rules.
今回作成したOpenBlocks用の最小構成のrootfs tarballは、以下からダウンロードできるよ
うにしておいたので、試してみたい方はどうぞ。
http://repo.hachune.net/Linux/ArchLinux/rootfs/armv7h/2013.03.21/obs_rootfs.tar.xz
0 件のコメント:
コメントを投稿