OpenBlocks Aシリーズでは、ディスクレス運用のためのRAMディスクモードと、ストレージ併用モードを標準的にサポートしています。
(それぞれのモードについては、以下の記事を参照してください。)
ストレージ併用モードにおいて、SSDなどのストレージデバイスはaufs(squeezeベースまではunion)によるマウントを行っていますが、aufsによる共有モードではなく、SSDに構築したrootfsを直接マウントして使用することも可能です。
また、カーネル自体も、フラッシュROMからだけでなく、SSDなどのストレージデバイスからの起動も行えます。
今回は、フラッシュROMから起動し、SSD側で用意したrootfsをマウントする方法について解説します。
rootfsはDebian, Fedora, Ubuntuなど好きなものをあらかじめ作成して使用しますが、今回は、debootstarapを用いてDebian wheezyパッケージを作成し、OpenBlocks独自のハードウェア制御を追加した、標準のファームウェアパッケージと同等の機能を持つものを作成しました。
本機能は、OpenBlocksの機能の一部として実装されているものですが、当社の提供する標準のパッケージ構成ではないため、動作の保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。
<検証環境>
Debian 7.1 Wheezy
OpenBlocks AX3/4 kernel: 3.2.40
OpenBlocks A7 Ketnel 3.2.40
OpenBlocks A6 kernel: 3.2.40
OpenBlocks AX3/4 kernel: 3.2.40
OpenBlocks A7 Ketnel 3.2.40
OpenBlocks A6 kernel: 3.2.40
<使用機器>
OpenBlocks AX3 DPパッケージ (もしくは、SSD搭載モデル)
OpenBlocks A7 DPパッケージ (もしくは、SSD搭載モデル)
OpenBlocks A6 DPパッケージ (もしくは、SSD搭載モデル)
OpenBlocks A7 DPパッケージ (もしくは、SSD搭載モデル)
OpenBlocks A6 DPパッケージ (もしくは、SSD搭載モデル)
1. SSDの準備
SSDを用意します。もし、標準構成でDEBIANのラベルを設定済みでしたら、ラベルを削除し、本体を再起動してください。
# e2label /dev/sda1 ""
再起動後、ラベルを/に変更します。
を再起動してください。
# e2label /dev/sda1 /
ファイルシステムは、現在のAシリーズはすべてext4を採用しています。
もし、新たにフォーマットする場合は、以下のコマンドをご使用下さい。
# mkfs.ext4 -L "/" /dev/sda1
2. debootstrapによるrootfsの作成と修正
SSDを/mntにマウントして、rootfsを作成しますが、標準のファームウェアパッケージにはdebootstrapが含まれていたいため、debootstrapをインストールする必要があります。
なお、ファームウェアをRAMディスクモードで起動した後、ネットワークの設定を行う必要があります。
# aptitude update
# aptitude install debootstrap
インストールしたパッケージを保存する場合は、以下のflashcfgコマンドにて行ってください。
# flashcfg -S
SSDを/mntにmountします。
# mount /dev/sda1 /mnt
debootstrapにより、rootfsを作成します。
# debootstrap --exclude=ed,nano --arch armel wheezy /mnt http://ftp.jp.debian.org/debian
/mnt/etc/inittabのT0のパラメータを修正します。
T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100
chrootしてrootパスワードを変更します。
# chroot /mnt
# passwd root
# exit
ファームウェアから必要なファイルをコピーし、モジュール構成を更新します。
# cp -R /lib/modules /mnt/lib # cp /usr/sbin/runled /mnt/usr/sbin # cp /usr/sbin/pshd /mnt/usr/sbin
# depmod -a
fstabを編集します。
ext4の場合は、以下の通り。ext3の場合はdiscardは不要です。
# vi /mnt/etc/fstab
/dev/sda1 / ext3 defaults notime, discard proc /proc proc defaults 0 0 #none /tmp tmpfs size=64m 0 0 #cgroup /sys/fs/cgroup cgroup defaults 0 0
/etcの下のinit関連のファイルをコピーします。
# cp /etc/init.d/pshd /mnt/etc/init.d
# cp /etc/init.d/runled /mnt/etc/init.d
# cd /mnt/etc/rc0.d
# ln -s ../init.d/pshd K01pshd
# ln -s ../init.d/runled K01runled
# cd /mnt/etc/rc2.d
# ln -s ../init.d/pshd S99pshd
# ln -s ../init.d/runled S99runled
# cd /mnt/etc/rc6.d
# ln -s ../init.d/pshd K01pshd
# ln -s ../init.d/runled K01runled
# cp /etc/init.d/.depend.start /mnt/etc/init.d
# cp /etc/init.d/.depend.stop /mnt/etc/init.d
# cp /etc/init.d/runled /mnt/etc/init.d
# cd /mnt/etc/rc0.d
# ln -s ../init.d/pshd K01pshd
# ln -s ../init.d/runled K01runled
# cd /mnt/etc/rc2.d
# ln -s ../init.d/pshd S99pshd
# ln -s ../init.d/runled S99runled
# cd /mnt/etc/rc6.d
# ln -s ../init.d/pshd K01pshd
# ln -s ../init.d/runled K01runled
# cp /etc/init.d/.depend.start /mnt/etc/init.d
# cp /etc/init.d/.depend.stop /mnt/etc/init.d
/etc/apt/sources.listをコピーします。
# cp /etc/apt/sources.lst /mnt/etc/apt
3. ubootのパラメータ変更と起動
OpenBlocks本体を再起動します。
起動時にコンソール上でキーボードを押すとubootのプロンプトが表示されます。
openblocks> printenv root root=/dev/ram openblocks> setenv root /dev/sda1 openblocks> saveenv Saving Environment to Flash...
電源を入れ直すか、bootと入力して起動してください。
なお、rootfsをUSBストレージなどで構築した場合、 USBストレージの初期化の時間の関係で、マウントエラーが起きます。その場合は、rootdelayパラメータで調整してください。
システムを元に戻す場合は、rootに/dev/ramを設定します。
openblocks> setenv root /dev/ram
openblocks> saveenv Saving Environment to Flash...
0 件のコメント:
コメントを投稿