「ユーザーランド」とは?
Linuxを起動するのに必要なカーネル以外の部分、つまり、アプリケーションやデバイスノード(デバイスドライバの入口)などをまとめて「ユーザーランド」と呼びます。
オンボードFlashカーネル起動モードのときは、オンボードFlashメモリからRAM Diskに展開されたユーザーランドが使用されます。
オンボードFlash上のユーザーランドをカスタマイズしたい場合は、
- LinuxPC上でユーザーランドRAMディスクイメージを更新し、
- オンボードFlashメモリに書き込む
ことになります。
では、まずユーザーランドRAMディスクイメージを変更してみましょう。
CD-ROMには、オリジナルディストリビューション Armadillo LinuxのユーザーランドRAMディスクイメージとして、/armadillo-linux/initrdディレクトリに、initrd.img.gzというファイルがあります。
このサイトからダウンロードする
このファイルをクロス開発環境のインストールしたPCの適当なディレクトリにコピーしておきます。
1.gzip圧縮を解凍する
イメージファイルはgzip圧縮されているので、解凍します。
[PC ~]$ gunzip initrd.img.gz
ここで解凍したinitrd.imgがRAMディスクイメージです。
2.RAMディスクイメージファイルをマウントする
まず、マウントするための空のディレクトリを作成します。
[PC ~]$ mkdir [マウントディレクトリ名]
suしてrootユーザーになります。
このディレクトリにRAMディスクイメージファイルをマウントします。
[PC ~]# suしてrootユーザーになります。
このディレクトリにRAMディスクイメージファイルをマウントします。
[PC ~]# mount -o loop initrd.img [マウントディレクトリ名]
マウントすると、マウントディレクトリの中が、Armadillo Linux のディレクトリツリーになります。
[PC /home/usr1]# <span class="input">ls</span>
initrd.img.gz
[PC /home/usr1]# <span class="input">gunzip initrd.img.gz</span> <span class="comment">gzip圧縮を解凍する</span>
[PC /home/usr1]# <span class="input">ls</span>
initrd.img <span class="comment">解凍したRAMディスクイメージ</span>
[PC /home/usr1]# <span class="input">mkdir image</span> <span class="comment>空のディレクトリを作成する</span>
[PC /home/usr1]# <span class=">空のディレクトリを作成する</span>
[PC /home/usr1]# <span class="input>ls</span>
image initrd.img
[PC /home/usr1]# <span class=">ls</span>
image initrd.img
[PC /home/usr1]# <span class="input">mount -o loop initrd.img image</span> <span class="comment">RAMディスクイメージを先に作ったディレクトリにマウントする</span>
[PC /home/usr1]# <span class="input">cd image</span>
[PC /home/usr1/image]# <span class="input">ls</span>
bin etc lib lost+found proc sbin usr
dev home linuxrc mnt root tmp var
<span class="comment">マウントディレクトリの中が、Armadillo Linuxのツリー構造になる</span>
(RAMディスクイメージを、「image」というディレクトリにマウントしたところ)
3.ユーザーランドをカスタマイズしてみる
マウントディレクトリ内のArmadillo Linuxを、ファイルを追加したり削除したり、設定ファイルを書き換えたりしてカスタマイズしてみましょう。
例1)ホスト名を変更してみる
[PC ~]# cd [マウントディレクトリ名]/etc
[PC ~]# vi HOSTNAME
[PC /home/usr1]# <span class="input">cd image</span>
[PC /home/usr1/image]# <span class="input">ls</span>
bin etc lib lost+found proc sbin usr
dev home linuxrc mnt root tmp var
[PC /home/usr1/image]# <span class="input">cd etc</span>
[PC /home/usr1/image/etc]# <span class="input">ls</span>
HOSTNAME gateways hosts.allow motd profile rpc
cron.d group hosts.deny mtab profile.d securetty
crontab gshadow httpd.conf network.d protocols services
firewall.conf host.conf initd.conf nsswitch.conf rc.d shadow
fstab hosts inittab passwd resolv.conf terminfo
[PC /home/usr1/image/etc]# <span class="input>vi HOSTNAME</span>
<span class=">vi HOSTNAME</span>
<span class=">vi HOSTNAME</span>
<span class=">vi HOSTNAME</span>
<span class="comment">viでHOSTNAMEを書き換える</span>
(/etc以下の設定ファイルを書き換えてArmadilloの設定を変更してみよう)
HOSTNAMEに新ホスト名を記述します。
デフォルトでは、「armadillo」と記述されています。
この行を削除して、好みのホスト名を記述します。
[PC /home/usr1/image/etc]# cat HOSTNAME
pooh
(ホスト名をpoohに変更したところ)
例2)固定IPアドレスを割り振ってみる
このように、マウントされたRAMディスクイメージは、通常のLinuxPCと同じ方法でファイル操作や設定の変更をすることができるのです。
4.RAMディスクイメージのマウントを解除する
ユーザーランドのカスタマイズが終わったら、RAMディスクイメージのマウントを解除します。
カレントディレクトリをマウントディレクトリ以外のディレクトリに移します。
(設定ファイルの変更のために[マウントディレクトリ]/etcにいるのなら、
[PC ~]# cd ../..
[PC ~]# umount [マウントディレクトリ名]
[PC /home/usr1/image/etc]# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda1 2885184 508828 2229796 19% /
/home/usr1/initrd.img 5947 4943 697 88% /home/usr1/image
[PC /home/usr1]# cd ../..
[PC /home/usr1]# <span class="input">umount image</span> <span class="comment">アンマウントする</span>
[PC /home/usr1]# df
Filesystem 1k-blocks Used Available Use% Mounted on
/home/usr1/initrd.img 5947 4943 697 88% /home/usr1/image
<span class="comment">マウントが解除された</span>
(RAMディスクイメージのマウントを解除)
5.gzip圧縮する
オンボードFlashメモリのユーザーランド領域は、2.5MBです。
ここでカスタマイズしたユーザーランドRAMディスクイメージinitrd.imgは、6MBになってます。
そのため、オンボードFlashメモリにユーザーランドをおさめるために、gzip圧縮をします。
[PC ~]# gzip -9 initrd.img
[PC /home/usr1]# ls
image initrd.img
[PC /home/usr1]# <span class="input">gzip -9 initrd.img</span> <span class="comment">gzipで圧縮</span>
[PC /home/usr1]# ls
image initrd.img.gz
[PC /home/usr1]#
(gzipで、initrd.imgがinitrd.img.gzに圧縮されたところ)
これで、ユーザーランドRAMディスクイメージを更新することができました。
フラッシュメモリの書き換え方法は、該当製品のソフトウェアマニュアルに記載されています。