ちょっと変わったことをする場合には、BIOSからSATAコントローラをディゼーブルにした上で、USBメモリからLinuxを起動しているのですが、PCの中にはSATAコントローラをBIOSで禁止しても、Linuxカーネルから見えるものがあります。
当然、そういった機種ではUSBメモリにインストールしたLinuxから本体内蔵のHDDにアクセスできてしまいます。(BIOSでSATAコントローラを禁止しているのに・・・)
そうなると、究極の対応策は、LinuxカーネルのコンフィギュレーションでSATAコントローラを外してしまうことだと思いますので、カーネルの構築をやってみることにしました。
使用する環境は、linuxMint13の32bit版で、新規にUSB-HDDにインストールしなおした環境です。インストール後、アップデートをかけておきます。その後、とりあえずSynapticで以下のものをインストール
- kernel-package
- linux-source
インストールすると、カーネルソースが /usr/src/linux-source-3.2.0 の下に置かれます。アーカイブの状態のものが /usr/src/linux-source-3.2.0/linux-source-3.2.0.tar.bz2 にあるようです。
$ mkdir ~/kernel $ cd ~/kernel $ tar jxvf /usr/src/linux-source-3.2.0/linux-source-3.2.0.tar.bz2
として、カーネルソースをホームディレクトリに展開します。
$ cd linux-source-3.2.0 $ make mrproper $ make menuconfig
ここで、『ncurses-devel がない』と怒られました。そこで、Synapticで、libncursesw5-dev をインストールしました。(wがついているのはWide Character対応版のようです)
改めて、
$ make menuconfig
とすると、Kernel Configuration のメニュー画面が表示されました。そこで、「Device Drivers」→「Serial ATA and Parallel ATA drivers」を選択して、片っ端から「N」を設定してATA関連のドライバを削除します。最後に、一つ戻って、「Serial ATA and Parallel ATA drivers」も「N」を設定してATAを削除します。(後者だけでもOKな気がしますが・・・)
他は何も変える必要はないので、そのままExitします。
Exitしたら、コンパイル&インストールです。
$ make -j 2 $ sudo make modules_install install
今回のテスト機はデュアルコアのAMD E-350なので、make -j 2 として2つのコアを使ってコンパイルさせます。非力なマシンなので、カーネルイメージの作成まで約2時間、モジュール作成にさらに約20分かかりました。コンパイルが完了したらルート権限でインストールしてやります。インストール過程でGRUBの設定も変更してくれるようですが、LinuxMint13では(USBブートでは?)GRUBの選択画面が出ないようです。まあ、起動して uname -a したら表示が変わっていたし、SATAコントローラをイネーブルにした状態でもSATAのHDDは見えなくなっていたのでよしとします。