自分自身の好みに合うLinuxを作ることは,決して難しくない。フリーソフトを手順よく組み合わせていくことで,ごく普通のユーザーであっても自分だけのLinuxを作成できる。本講座を読みながら,Linuxの仕組みを理解して『自分Linux』を完成させよう。今回は,完成した「自分Linux」をフラッシュ・メモリーに書き込むための準備を説明する。
今回はフラッシュ・メモリーに自分Linuxを書き込んで完成させるための準備を行う。(図1)。
図1●自分Linux作成作業の流れ 今回は,自分Linuxをフラッシュ・メモリーに書き込む。 |
これまで説明してきたように,メモリーにはコンパクトフラッシュとUSBメモリーを用いる。両方とも,256Mバイト以上のものである。256Mバイト以上とはいえ,その容量はハード・ディスクの容量に比べて非常に小さい。そのため,この限られた容量内に自分Linuxを収めるには,いくつかの注意点がある。
ファイル・サイズを小さくしてディスク容量を抑える
最初に,前回起動確認を行った自分Linuxの容量を確認しよう。
「247978」と表示され,約248Mバイトであることが分かる。そのため,コンパクトフラッシュあるいはUSBメモリーが256Mバイト以上の容量を備えていれば,ブート・ローダー「GNU GRUB」と自分Linuxの両方をこれらのメモリー内に収められる。
ただし,本講座では,Webサーバーやファイル共有サーバーへと自分Linuxを拡張していく予定だ。そうしたときには,256Mバイトでは足りなくなるだろう。最近では,512Mバイトや1Gバイトといった比較的大容量のコンパクトフラッシュやUSBメモリーでも,5000円から1万円程度で購入できる。今後自分Linux用にこれらのメモリーを購入するときには,大容量のものにするとよい。
256Mバイトのフラッシュ・メモリーを既に購入してしまった,あるいはフラッシュ・メモリーの容量をより効率的に利用したい場合は,後述する“ファイルのシュリンク”を実施してみよう。シュリンク(shrink)とは,「縮む」「減る」という意味である。実は,これまでコンパイルして作成した,自分Linux用のコマンドやライブラリの多くには,デバッグなどに利用するシンボルの情報が含まれる。そのシンボル情報を取り除くだけで,ファイル・サイズを大幅に小さくできる。
シンボル情報の確認
コマンドやライブラリにシンボル情報が含まれるか否かは,fileコマンドで判別できる。
出力結果に「not stripped」と表示されたときには,シンボル情報が含まれる。
実際に自分Linuxのbashコマンドで確認してみよう。「bash」を引数に指定してfileコマンドを実行してみると,出力された結果の末尾に「not stripped」と表示される(図2の(1))。ここで,ファイルをシュリンクする前の容量も確認しておこう(図2の(2))。シュリンク前のbashコマンドは約3Mバイトである。
図2●シンボル情報の有無を確認 [画像のクリックで拡大表示] |
シンボル情報を取り除く
シンボル情報を取り除くには,stripコマンドを用いる。使い方は次の通り。
このようにstripコマンドを実行すると,シンボル情報を管理するシンボル・テーブルが削除される。早速これを,bashコマンドで試してみよう。その前に,
を実行して,カレント・ディレクトリが自分Linux開発マシンの/binディレクトリではなく,自分Linuxの/binディレクトリであることを確認しておく。自分Linux開発マシンのファイルをシュリンクしても意味がない。stripコマンドを実行する前に,pwdコマンドでカレント・ディレクトリを確認してから実行する癖を身に付けておこう。
自分Linuxの/binディレクトリであることを確認したら,
を実行し,bashコマンドのファイルをシュリンクする。シュリンクしたら,lsコマンドを用いてbashコマンドのファイル・サイズを確認する。すると,約0.62Mバイトになっている(図3)。ファイル・サイズを約5分の1程度(約3Mバイトから約0.62Mバイト)にできたわけだ。
図3●ファイルのシュリンク |
これを参考にして,/usr/local/src/origlinux/rootsysディレクトリ以下のファイルをすべて調査し,「not stripped」が表示されたファイルをすべてシュリンクする。
なお,ライブラリ・ファイルのシュリンクを実施する際には,
のように-Sオプションを付ける必要がある。これはデバッグ用のシンボルのみを取り除くオプションだ。ライブラリ・ファイルに対して-Sオプションを忘れるとシステムが正常に動かないなどのトラブルが発生するので注意しよう。
自動的にファイルをシュリンクする
数多くのコマンドやライブラリを一つずつ調べながら,stripコマンドを実行するのはかなり大変である。そこで筆者が作成した自動シュリンク用スクリプト(mylinux_shrink.sh)を利用しよう。
使い方は次の通りだ。まず,図4の内容を「mylinux_shrink.sh」というファイル名で保存する。続いて,実行権限を与えてから実行する。
図4●自動シュリンク用スクリプト(mylinux_shrink.sh) |
プロンプトが表示されたら,自分Linuxの容量を確認してみよう。
自動シュリンク後は,約43Mバイトである。シュリンク前の約248Mバイトと比べると,5分の1以下になった。これなら今後自分Linuxを拡張した場合でも,256Mバイトのメモリーで十分対応できる。