LILOを使って自動的に必要のないパーティションを隠す
(2004/8/9)

【パーティションを隠す原理】
さて、実際にLILOをつかってパーティションを隠す設定をする前に、どうやってパーティションを隠すのか原理を解説しておきます。

パーティションを隠す機能はLILOだけでなく、Partition Expertなどの商用のパーティション操作ツール、MBMなどのフリーのツールも装備している機能なのですが、やり方は同じです。
そのやり方とは、パーティションの属性を変更するだけです。パーティション内部に格納されているファイルには一切を手を加えませんので安心です。
厳密に言えば、これはパーティションを隠しているわけではなく、「OS/2ブートマネージャのパーティション」属性にすることなのですが、OS/2がこの方法を考案して以来、PC/AT互換機の世界では、隠しパーティションを作成するための標準的な手法として定着しているようです。

【LILO.CONFの編集】
さて、隠しパーティションを指定するには、LILO.CONFを編集します。
たとえば、以下のようになります。
# This is a machine generated file. If edited, the
# system will stop modifying it. To allow the system to
# resume management of this file, remove it and run
# /sbin/fooze.

boot=/dev/hda

install=/boot/cboot.b
message = /boot/splash.lilo
map=/boot/map
prompt
fix-table
lba32
delay=70
timeout=70
image=/vmlinuz
label=LindowsOS
vga=0xf04
root=/dev/hda3
initrd=/boot/initrd-2.4.20.gz
append="acpi=off "
image=/vmlinuz
label="Diagnostics"
vga=normal
append="single acpi=off "
root=/dev/hda3
initrd=/boot/initrd-2.4.20.gz

other=/dev/hda1
label="WindowsXP"
change
  partition=/dev/hda1
    activate
    set=ntfs_normal
  partition=/dev/hda2
    deactivate
    set=fat32_hidden

other=/dev/hda2
label="Windows98SE"
change
  partition=/dev/hda1
    deactivate
    set=ntfs_hidden
  partition=/dev/hda2
    activate
    set=fat32_normal
黄色い文字で示したところが追加した部分です。
要するに、それぞれのパーティション(この場合、hda1とhda2)に対し、アクティブバーティションにするかどうかを
"activate"(アクティブパーティションにする)もしくは
"deactivate"(アクティブパーティションにしない)で指定し、
パーティションを隠すかどうかを、
"set=XXXX_hidden"(隠す)または
"set=XXXX_normal"(隠さない)で指定します。(XXXXにはファイルシステム名が入ります)

ちなみに、Lindowsがインストールされているパーティション(dev/hda3)に対しては、隠しパーティションの設定はできません。ですが、もともとWindowsはLinuxのファイルシステムは理解できず、不明なパーティションとしてドライブレターは割り当てられませんので、実用上は問題なしでしょう。

【lilo.confの登録】
さて、上記のようにLILO.CONFを自分の環境に合わせて編集し、あとはコンソールからLILOを起動すれば、設定ファイルの内容が登録されると思いきや、環境によってはそう簡単にはいきません。
実際、今回使っているLindowsでは、LILOを実行すると、
「This LILO is compiled without REWRITE_TABLE and doesn't support the SET option」
なるエラーが表示されて、正常に登録できません。

どうやら、Lindowsに付属しているLILOは安全性を優先したためか、パーティションテーブルの変更関連の機能が無効になっているようです。
これを回避するには、LILOのソースファイルを入手して、REWRITE_TABLEを有効にしてコンパイルし直せばいいのですが、そもそも、LILOのソースをどこから入手すればいいのかわかりませんし、もともとLindowsにはコンパイル環境(make環境)が入っていないので、準備だけで非常に手間がかかりそう。
手っ取り早くこの機能が有効になっているLILOを入手するには、apt-getで最新版のLILOをダウンロードするのがよさそう。(最近のLILOははじめからREWRITE_TABLEが有効になっていることが普通のようですので、最新版ならば大丈夫でしょう)
apt-getの使い方は、こちら参照をしていただいて、
apt-get install lilo
を実行して新しいLILOをインストール。その後コンソールからLILOを実行したところ、「Video adapter (CGA) is incompatible・・・」なる警告がでますが、登録自体は正常終了した模様。


再起動してみると、以下のようなOS選択画面が登場。

もともとのOS選択メニューとかなり見た目は違ってしまいましたが、使い方は一緒です。
よしとしましょう。(^^;

この状態で、たとえばWindowsXPを起動すると、Windows98がインストールされたパーティションが「不明なパーティション」になりました。これでOKですね。


この要領で行けば、この環境にさらに別のOSをインストールする際も、他のパーティションへの影響を考えずに済みますから非常に構築が楽になりそうです。

試しに、今度はWindows2000をこの環境に加えてみたいと思います。

<前へ  Home  次へ>