Scientific Linux 6.4 Install from USB using EXTLINUX
注意
以下の方法より livecd-iso-to-disk コマンドを使った方が楽なことが後から分かった(そのメモはここ)。このメモは参考として残しておく。
Scientific Linux 6.4 (SL6.4) のインストール用 USB メモリを EXTLINUX を用いて Linux 上で作成した。さらに、これを用いてインストールを行った。ここでは 32 bit 版 (i386) ではなく 64 bit 版 (x86_64) のインストールイメージを用いた。Scientific Linux は Red Hat Enterprise Linux のクローンなので、同じクローンである CentOS でも同様の手順になるはず。最近の Fedora でも同じようにできるんだろうか?
インストール用 iso ファイル
- 以下のインストール用イメージファイル (iso ファイル) を使うので、まずこれをダウンロード。ファイルの保存場所はどこでも良い。理研からダウンロードすると早い。
- ちなみに、以下の 2つの iso を用いてもインストール用 USB メモリの作成が可能。上の iso との違いがいまいち分からない。何で上の方がが容量が小さいんだろう?パッケージが省略されている?少なくともデスクトップ環境なら上のイメージでインストール可能。
iso ファイル |
サイズ |
||
SL-64-x86_64-2013-03-21-Everything-DVD1.iso |
4.2 G |
||
SL-64-x86_64-2013-03-21-Everything-DVD2.iso |
1.2 G |
- 以下のメモでは、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 できるように設定する
- インストーラ開始
- 通常のインストール方法に従い、言語などを選択
- インストールメディアは Hard drive を選択
- インストーラがある USB 上のパーティション(/dev/sdb1)を選択。
- インストーラがスタート
- 通常のインストール方法に従い、インストールを進める
- ちなみに、インストール中に Ctrl-Alt-F2 を押すとシェル画面に行くことができる。インストール中にトラブルがあったときにこれを使うと便利。Ctrl-Alt-F6 でインストールの画面に戻る。Ctrl-Alt-F3, Ctrl-Alt-F4, Ctrl-Alt-F5 を押すとインストーラがバックグラウンドで何をやっているかを確認することができる。
extlinux.conf の編集
- extlinux.conf はインストールの一番初めに表示されるブートメニューの設定ファイルであり、以下のような内容である。
default vesamenu.c32 #prompt 1 timeout 600 display boot.msg menu background splash.jpg menu title Welcome to Scientific Linux 6.4! menu color border 0 #ffffffff #00000000 menu color sel 7 #ffffffff #ff000000 menu color title 0 #ffffffff #00000000 menu color tabmsg 0 #ffffffff #00000000 menu color unsel 0 #ffffffff #00000000 menu color hotsel 0 #ff000000 #ffffffff menu color hotkey 7 #ffffffff #ff000000 menu color scrollbar 0 #ffffffff #00000000 label linux menu label ^Install or upgrade an existing system menu default kernel vmlinuz append initrd=initrd.img label vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img xdriver=vesa nomodeset label rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescue label local menu label Boot from ^local drive localboot 0xffff label memtest86 menu label ^Memory test kernel memtest append -
- この中の append にオプションを追加することで、インストール時に聞かれる質問のいくつかを省略できる。たとえば、
label vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img xdriver=vesa nomodeset
- の append を
append initrd=initrd.img xdriver=vesa nomodeset lang=ja_JP.utf8 keymap=jp106
- とすれば、言語とキーボードについて聞かれることなく 日本語・日本語キーボードが選択される。
- さらに、以下のコマンドで USB の UUID を調べ、
# blkid /dev/sdb1 /dev/sdb1: LABEL="LIVE" UUID="f034cb9c-2d7c-4353-b799-5b55311cf65e" TYPE="ext3"
- append を
append initrd=initrd.img xdriver=vesa nomodeset lang=ja_JP.utf8 keymap=jp106 repo=hd:UUID=f034cb9c-2d7c-4353-b799-5b55311cf65e:/
- とすれば、インストール時にインストールメディアを選択する必要がなくなる。
エラー集
ブート時
- 上記の MBR の書き込みのところで、 以下の様に dd コマンドの前に、syslinux コマンドを実行しても構わない。ただしその場合、dd コマンドの後に sync コマンドを実行しておかないと、MBR に正しく書き込めない場合がある。MBR の書き込みが正しく行われないと、USB からブートしようとしても、初めの画面(黒地に白の _ (カーソル) が点滅)から進まなくなる。
# syslinux /dev/sdb1 # dd if=/usr/share/syslinux/mbr.bin of=/dev/sdb # sync
インストール時
- パーティションテーブルがおかしいと、以下のようなメッセージが出る。
不明なデバイス デバイス['/dev/sdb1']で与えられたインストールソースが見つかりません。パラメータをチェックしてもう一度試して下さい。 インストーラーを終了する(E)
- この USB を Scientific Linux 付属のディスク・ユーティリティで確認すると、以下のように "パーティション: 不明なスキーム" となっている。
- このような場合、パーティションテーブルの修復を行えば良い。ディスク・ユーティリティーを用いる場合は "ドライブをフォーマット" ボタンを押し、"マスターブートレコード" でフォーマットすれば良い。
- コマンドライン上で行う場合は、以下のように MBR をリセットし、fdisk でパーティションを作成すればよい。
# 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 /dev/sdb ... パーティションを作成