SATAドライバ無しのカーネルを再構築

ちょっと変わったことをする場合には、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は見えなくなっていたのでよしとします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)