2013年3月21日木曜日

OpenBlocks AX3上のLXC用の最小構成Arch Linux rootfsを作る

前回構築した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 件のコメント:

コメントを投稿