USB using EXTLINUX

インストール用 iso ファイル
以下のインストール用イメージファイル (iso ファイル) を使うので、まずこれをダウンロード。ファイルの保存場所はどこでも良い。理研からダウンロードすると早い。
iso ファイル
サイズ
本家
理研のミラー
SL-64-x86_64-2013-03-18-Install-DVD.iso
4.0 G
download
download
ちなみに、以下の 2つの iso を用いてもインストール用 USB メモリの作成が可能。上の iso との違いがいまいち分からない。何で上の方がが容量が小さいんだろう？パッケージが省略されている？少なくともデスクトップ環境なら上のイメージでインストール可能。
iso ファイル
サイズ
本家
理研のミラー
SL-64-x86_64-2013-03-21-Everything-DVD1.iso
4.2 G
download
download
SL-64-x86_64-2013-03-21-Everything-DVD2.iso
1.2 G
download
download
以下のメモでは、SL-64-x86_64-2013-03-18-Install-DVD.iso を用いたインストール用 USB メモリの作成方法を書いているが、SL-64-x86_64-2013-03-21-Everything-DVD1.iso と SL-64-x86_64-2013-03-21-Everything-DVD2.iso を用いてもほぼ同じ手順になる。
インストール用 USB メモリのサイズ
最終的に作成される USB メモリは以下のようなディレクトリ/ファイルを含むため、USB メモリのサイズは最低 4.3 GB 程度が必要となる。ここでは、 Silicon Power 製の 8G8 USB メモリ (P/N: SP008GBUF3M01V1B、USB 3.0 対応) を用いた。
ディレクトリ/ファイル
サイズ
images
198 MB
extlinux
36 MB
lost+found
16 KB
SL-64-x86_64-2013-03-18-Install-DVD.iso
4.1 GB
合計
4.3 GB
インストール用 USB メモリの作成
以下の手順を踏めば、インストール用 USB メモリが出来るはず。
まずスーパーユーザになる。
$ su
 root の password を入力
 
EXTLINUX を yum コマンドを用いてインストールする。コマンド例は下記参照。yum コマンドでは、 -y オプションを指定するとパッケージのインストールをするかの　yes/no を聞かれなくなる。SL6.3 の場合、EXTLINUX の version 4.02 がインストールされる。同時に、SYSLINUX もインストールされるはず。
# yum -y install syslinux-extlinux
 
Linux PC (ここでは Scientific Linux 6.3 を用いた) に USB メモリを挿す。そうすると、通常ならば自動的にデバイス (例えば /dev/sdb) が作成され、自動的にマウントされる。どのデバイスに割り当てられたかは、端末上で以下の様に dmesg コマンドを打てばわかる。
$ dmesg
...
csi 5:0:0:0: Direct-Access     UFD 3.0  Silicon-Power8G  1.00 PQ: 0 ANSI: 6
sd 5:0:0:0: Attached scsi generic sg2 type 0
sd 5:0:0:0: [sdb] 15155200 512-byte logical blocks: (7.75 GB/7.22 GiB)
sd 5:0:0:0: [sdb] Write Protect is off
sd 5:0:0:0: [sdb] Mode Sense: 23 00 00 00
sd 5:0:0:0: [sdb] Assuming drive cache: write through
sd 5:0:0:0: [sdb] Assuming drive cache: write through
 sdb: sdb1
sd 5:0:0:0: [sdb] Assuming drive cache: write through
sd 5:0:0:0: [sdb] Attached SCSI removable disk
SELinux: initialized (dev sdb1, type vfat), uses genfs_contexts
$ 
また、fdisk コマンドを使っても大体確認できる。
$ su
root の password を入力
# fdisk -l
...
ディスク /dev/sdb: 7759 MB, 7759462400 バイト
ヘッド 239, セクタ 62, シリンダ 1022
Units = シリンダ数 of 14818 * 512 = 7586816 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x53b0cd65

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdb1               1        1022     7571967   83  Linux
これより、USB メモリが /dev/sdb に割り当てられたことが分かる。以下では、USB メモリが /dev/sdb に割り当てられたと仮定する。
 
USB メモリのアンマウントを行う。（もしマウントされていなければ、この作業は必要ない。）
# umount /dev/sdb1
 
dd コマンドでマスターブートレコード(MBR)をリセットしておく。MBR は 512 バイトなので、dd コマンドの bs オプションでブロックサイズ : 512 バイト、 count オプションで ブロック数 : 1 を指定している。これで、/dev/sdb の MBR 領域がすべて NULL となる。(MBR が壊れていた場合、このコマンドでリセットしておくと後で fdisk が修復してくれる。壊れていない場合は必要無い作業かも。dd コマンドは /dev/sdb1 がマウントされていても、されていなくても使えるようだ？)
# dd if=/dev/zero of=/dev/sdb bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.0121877 s, 42.0 kB/s
fdisk コマンドを用いてパーティションを作成
# fdisk /dev/sdb


fdisk の入力コマンドは以下の通り


n # 新しいパーティション作成
p # 基本パーティション
1 # パーティション番号
<enter> # デフォルトの値
<enter> # デフォルトの値（全領域確保）
a # ブートフラグ変更
1 # 変更するパーティション番号
w # ディスクに書き込み(q で書き込みせず fdisk を抜ける)
確認
# fdisk -l /dev/sdb
ディスク /dev/sdb: 7759 MB, 7759462400 バイト
ヘッド 239, セクタ 62, シリンダ 1022
Units = シリンダ数 of 14818 * 512 = 7586816 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0xf2ea928e

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdb1   *           1        1022     7053368   83  Linux
パーティションを ext3 ファイルシステムでフォーマットする。ここでは、パーティションの名前を LIVE としている。これは、マウントされた時のディレクトリの名前になる。他の名前でも良い。
# mkfs.ext3 -L LIVE /dev/sdb1
 
USB を抜き挿しする。SL6.3 の場合 /media ディレクトリ以下に /dev/sdb1 が /media/LIVE という名前で自動的にマウントされる。（マウントされない場合は手動でマウントする。）以下のコマンドでマウントされたか確認できる。
# ls /media
LIVE
# ls /media/LIVE
lost+found
 
/mnt/DVD というディレクトリを作り、上でダウンロードした SL-64-x86_64-2013-03-18-Install-DVD.iso を mount コマンドでマウント（下記参照）。
# mkdir /mnt/DVD  # iso をマウントするディレクトリを作成
# mount -t iso9660 -o loop isoをダウンロードしたディレクトリ/SL-64-x86_64-2013-03-18-Install-DVD.iso /mnt/DVD
# ls /mnt/DVD # 中身を確認
EFI   Packages          RPM-GPG-KEY-sl3  RPM-GPG-KEY-sl6  isolinux
EULA  RPM-GPG-KEY-cern  RPM-GPG-KEY-sl4  TRANS.TBL        repodata
GPL   RPM-GPG-KEY-sl    RPM-GPG-KEY-sl5  images
 
/mnt/DVD/isolinux ディレクトリを extlinux という名前で /media/LIVE ディレクトリにコピー
# cp -rv /mnt/DVD/isolinux /media/LIVE/extlinux
 
/media/LIVE/syslinux 内の isolinux.cfg を extlinux.conf という名前に変更
# mv /media/LIVE/extlinux/isolinux.cfg /media/LIVE/extlinux/extlinux.conf
 
/mnt/DVD/images ディレクトリを /media/LIVE ディレクトリにコピー
# cp -rv /mnt/DVD/images /media/LIVE/
 
SL-64-x86_64-2013-03-18-Install-DVD.iso を /media/LIVE ディレクトリにコピー。下記のコマンド例では、sync コマンドを用いてコピーが（本当に）終わるのを待っている。ファイルをコピーする場合、ファイルの書き込みが終わる前に cp コマンドが終了する時がある。この場合、sync コマンドでバッファ内のデータをすべて USB メモリに書き込む。sync コマンドの実行終了が書き込みの終了に相当するようだ。サイズが大きいファイルのコピーの場合、sync コマンドもなかなか終わらない。
# cp -v isoをダウンロードしたディレクトリ/SL-64-x86_64-2013-03-18-Install-DVD.iso /media/LIVE
# sync
#
 
下記の dd コマンドで SYSLINUX 付属の MBR (Master Boot Record) コード（/usr/share/syslinux/mbr.bin）が MBR に書き込まれ、extlinux コマンドで /media/extlinux/ldsyslinux.sys というファイルが作成される。これで、ブートローダがインストールされたことになる（？）。ここで、 /usr/share/syslinux/mbr.bin は extlinux コマンドインストール時に一緒にインストールされるファイルである。さらに sync コマンドで、バッファ内のデータが USB メモリに書き込まれる。syslinux --> dd コマンドと実行した場合、さらに sync コマンドを実行しないと bootable な USB メモリが出来なかった。
# dd if=/usr/share/syslinux/mbr.bin of=/dev/sdb
# extlinux --install /media/LIVE/extlinux
# sync
 
以上でインストール用 USB メモリの完成。
USB メモリからインストール
インストール用 USB メモリからブートする手順は以下の通り。 インストールの手順としては、インストールメディアの選択の部分が異なるが、その他については DVD からのインストールとほぼ同じ手順となる。通常のインストール方法については Google で調べる。（CentOS-6.4 のインストール方法が参考になりそう。）
USB メモリを PC に挿し PC を再起動
DEL または F2 キーなどを押し BIOS 画面に入る
USB から BOOT できるように設定する
インストーラ開始