以下省略!

タイダルウ(ry ほぼ毎日1記事執筆運動実施中。 ※記事に広告(アフィリエイト)リンクを掲載している場合があります。

UBCDをLinux環境下でUSBメモリにインストール

f:id:abyssluke:20150313192111p:plain:w240:leftBIOS関連やHDD診断ツールパーティション編集、メモリ診断など、様々なツールが収録されているUltimate Boot CD(以下UBCD)をUSBメモリにインストールしてみた。古いBIOSには対応していないが、使用するPCにCDドライブが無かったり、自分でツールを追加したい時などには便利かも。長いので続きを読むから。

UBCDのUSBへのインストール方法(Linux向け)

警告:fdiskやddなどでUSBメモリに直接操作を加えるため、デバイス指定を間違えたりすると最悪HDDのデータが消失したりLinuxが立ち上がらなくなるので慎重に操作すること!またUSBメモリの中身は消去されるので注意!

1,公式サイトからUBCDの最新版ISOをダウンロードする。
2,ISOファイルの中身をアーカイブユーティリティなどで適当なディレクトリにコピーする。ここでは/path/to/ubcd533にコピーしたものとして進める。
3,USBメモリを挿したあと、dmesgやdfなどで当該USBメモリのデバイス名を探す。

$ dmesg | tail
[40721.902505] sd 5:0:0:0: [sdb] Write Protect is off
[40721.902512] sd 5:0:0:0: [sdb] Mode Sense: 43 00 00 00
[40721.903239] sd 5:0:0:0: [sdb] No Caching mode page found
[40721.903244] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[40721.907989] sd 5:0:0:0: [sdb] No Caching mode page found
[40721.907995] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[40721.909005]  sdb: sdb1
[40721.911612] sd 5:0:0:0: [sdb] No Caching mode page found
[40721.911616] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[40721.911620] sd 5:0:0:0: [sdb] Attached SCSI removable disk
$ df -h
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-root  916G   60G  810G   7% /
(中略)
/dev/sda1                    236M   64M  160M  29% /boot
/dev/sdb1                    7.5G  400K  7.5G   1% /media/username/USBMEMORY

4,上記の例では/dev/sdb(デバイス)であることがわかったので、このデバイスのパーティション(/dev/sdb1)のマウントを一旦解除する。

$ sudo umount /dev/sdb1

5,fdiskでパーティションテーブルをいじる。USBメモリのデバイス名を指定してfdiskを起動する。

$ sudo fdisk /dev/sdb
コマンド (m でヘルプ): p

ディスク /dev/sdb: 8054 MB, 8054112256 バイト
ヘッド 1, セクタ 62, シリンダ 253720, 合計 15730688 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0x12345678

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdb1   *          56    15730687     7865316    c  W95 FAT32 (LBA)

pコマンドでこのデバイスがUSBメモリに間違い無ければ、引き続き操作を行う。違うと気づいたらすぐにqで Ctrl+CやCTRL+D(2015/03/15 17:56追記 誤入力の恐れがあるため適切なキーに修正)で終了させれば大丈夫。

6,まず既存のパーティションをdコマンドで削除する。

コマンド (m でヘルプ): d
選択したパーティション 1

コマンド (m でヘルプ): p

ディスク /dev/sdb: 8054 MB, 8054112256 バイト
ヘッド 1, セクタ 62, シリンダ 253720, 合計 15730688 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0x12345678

デバイス ブート      始点        終点     ブロック   Id  システム

このUSBメモリの場合はパーティションは1つしかないが、複数ある場合はdコマンドを繰り返し行う。pコマンドでパーティションが無い事を確認。

7,nコマンドでパーティションを作る。Enter連打でOK。

コマンド (m でヘルプ): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
パーティション番号 (1-4, 初期値 1): 
初期値 1 を使います
最初 セクタ (2048-15730687, 初期値 2048): 
初期値 2048 を使います
Last セクタ, +セクタ数 or +size{K,M,G} (2048-15730687, 初期値 15730687): 
初期値 15730687 を使います

8,tコマンドでパーティションのシステムタイプを変更する。今回は8GBのUSBメモリを使用しているので、16進数コード cのW95 FAT32 (LBA)に変更する。
2GB未満のUSBメモリを使用する場合、16進数コードはeと入力する(W95 FAT16 (LBA))。

コマンド (m でヘルプ): t
選択したパーティション 1
16進数コード (L コマンドでコードリスト表示): c
パーティションのシステムタイプを 1 から c (W95 FAT32 (LBA)) に変更しました

9,作成したパーティションをaコマンドでブート可能にする。

コマンド (m でヘルプ): a
パーティション番号 (1-4): 1

10,wコマンドでデバイスに変更を反映する。このコマンドを実行するまでは実際に書き込まれないので操作するデバイスなどに間違いないか最終確認すること。

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。

警告: DOS 6.x パーティションを作成、または変更してしまった場合は、
fdisk マニュアルの追加情報ページを参照してください。
ディスクを同期しています。

11,作成したパーティションをFAT32でフォーマットする。パーティションのシステムタイプにFAT16を指定した場合は-F 32を-F 16に変更する。

$ sudo mkfs.vfat -F 32 /dev/sdb1
mkfs.fat 3.0.26 (2014-03-07)

12,syslinuxのMBRをデバイスに対して転送。その後USBメモリを抜き差しするなどして再マウントさせる。

$ cd /path/to/ubcd533/ubcd/tools/linux/ubcd2usb/
$ sudo dd if=mbr.bin of=/dev/sdb
0+1 レコード入力
0+1 レコード出力
440 バイト (440 B) コピーされました、 0.0131298 秒、 33.5 kB/秒

13,UBCDの中身をコピーする。予めdfコマンドなどでUSBメモリがマウントされているパスを確認しておく(ここでは/media/username/1234-5678にマウントされているものとして進める)。

$ cd /path/to/ubcd533
$ cp -r * /media/username/1234-5678/

14,パーティションに対してsyslinuxをインストールする。syslinuxのパーミッションが〜なエラーが出た場合はsyslinuxに対してchmod a+xする。

$ sudo /path/to/ubcd533/ubcd/tools/linux/ubcd2usb/syslinux -i -s -d /boot/syslinux /dev/sdb1

15,インストール完了。実際に起動する時は予めBIOSでUBCDが入っているUSBメモリ(USB-HDDと出てるかも)の起動優先順位を上位にしておく。

補足:clamav/F-Protの定義ファイルを更新する

UBCDにはclamavとF-Protというウイルススキャンソフトが収録されている。
ここではUBCDに同梱されている定義ファイルを最新版に更新してみる。
※インストール手順の2にあるISOの中身のコピーが完了していることを想定している。

1,更新スクリプトのあるディレクトリにcdし、更新スクリプトに対してchmod a+xする。

$ cd /path/to/ubcd533/ubcd/tools/linux/antivirus
$ chmod a+x *.sh

2,clamav.shとfprot.shを起動するだけ。アーカイブユーティリティでISOの中身をコピーした場合は書き込み権限がなくデータ更新段階でエラーになるので予め書き込み権限を付与しておく(chmod -R +w /path/to/ubcd533/*)。また、xzがインストールされていない場合もエラーになるので予めインストールしておく*1

$ ./clamav.sh
(略)
$ ./fprot.sh
(略)

3,UBCDがすでにUSBメモリにインストールされている場合は再度UBCDの中身をUSBメモリにコピーする。されていない場合はインストール手順の3から始める。

*1:Ubuntuではapt-get install xz-utilsだが、もしかしたら標準でインストールされているかも