Scientific Linux 6.4 Install from USB using SYSLINUX
注意
以下の方法より、EXTLINUX を使った方が楽なことが後から分かった(そのメモはここ)。このメモは参考として残しておく。
さらに、EXTLINUX を使うより、livecd-iso-to-disk コマンドを使った方が楽なことが後から分かった(そのメモはここ)。
Scientific Linux 6.4 (SL6.4) のインストール用 USB メモリを SYSLINUX を用いて Linux 上で作成した。さらに、これを用いてインストールを行った。Linux 上で インストール用 USB メモリを作る場合、 SYSLINUX はインストーラを保存するパーティションのファイルシステムが FAT32 でなければならない(EXTLINUX は ext3 で良い)。ここでは 32 bit 版 (i386) ではなく 64 bit 版 (x86_64) のインストールイメージを用いた。インストールイメージのサイズが 4 GB を越えるため FAT32 ファイルシステムでは保存できない。そのためインストールに用いる USB はパーティションを分ける必要がある (インストール用 USB メモリ作成上の注意の項目を参照)。
Scientific Linux は Red Hat Enterprise Linux のクローンなので、同じクローンである CentOS でも同様の手順になるはず。実際、主に CentOS のページ(How to Set Up a USB Key to Install CentOS)を参考にした。他に参考にしたページは下の方参照。最近の Fedora でも同じようにできるんだろうか?
インストール用 iso ファイル
- 以下の2つインストール用イメージファイル (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 |
- ちなみに、以下の iso を用いてもインストール用 USB メモリの作成が可能。こちらの方がファイルが一つなので楽かも?上の iso との違いがいまいち分からない。何でこちらの方が容量が少ないんだろう?パッケージが省略されている?少なくともデスクトップ環境ならこれでインストール可能。
- 以下のメモでは、SL-64-x86_64-2013-03-21-Everything-DVD1.iso と SL-64-x86_64-2013-03-21-Everything-DVD2.iso を用いたインストール用 USB メモリの作成方法を書いているが、SL-64-x86_64-2013-03-18-Install-DVD.iso を用いてもほぼ同じ手順になる。
インストール用 USB メモリ作成上の注意
- USB メモリのパーティション
- インストール用 USB メモリを作成する上で、注意しなければいけないことは、iso ファイル (SL-64-x86_64-2013-03-21-Everything-DVD1.iso (4.2 G バイト)) の保存場所である。このイメージファイルはインストール時に使用するため、USB メモリのどこかに保存しておかなければならない。一方で、インストーラがあるパーティションは FAT32 でフォーマットされている必要がある。FAT32 は 4 GB までのファイルしか扱えないため、インストーラのあるパーティションに SL-64-x86_64-2013-03-21-Everything-DVD1.iso (4.2 G バイト) は書き込めない。よって、 USB メモリは、以下のようにインストーラ用のパーティションとイメージファイル用のパーティションに分ける必要がある。
Partition |
ファイルシステム |
最低のサイズ |
1 つ目 |
FAT32 |
233 MB 程度 |
2 つ目 |
ext3 |
4.2 + 1.2 = 5.4 GB |
このパーティション分けは、イメージファイルが 4 GB を越える場合、常に(Fedora LiveUSB Creator, UNetbootin, syslinux のどの方法を使っても)必要となる。
- USB メモリのサイズ
syslinux コマンドを用いる場合、5.6 GB 程度の領域が確保できれば (上記参照)、 インストール用 USB メモリを作成できる。よって 8 GB の USB メモリがあれば十分である。Fedora LiveUSB Creator や UNetbootin を用いてインストールする場合は、インストールメディアの 2 倍のサイズが必要となる(boot 用 iso (SL-64-x86_64-2013-03-18-boot.iso) を併用すれば、5.6 GB 程度でもいける)。ここでは、 Silicon Power 製の 8G8 USB メモリ (P/N: SP008GBUF3M01V1B、USB 3.0 対応) を用いた。
インストール用 USB メモリの作成
- 以下の手順を踏めば、インストール用 USB メモリが出来るはず。
- 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 メモリのパーティションの作成とフォーマット
- まずスーパーユーザになる。
$ su root の password を入力
- さらに 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> # デフォルトの値 +500M # 500 MB の領域確保 n # 新しいパーティション作成 p # 基本パーティション 2 # パーティション番号 <enter> # デフォルトの値 <enter> # デフォルトの値(残りの全領域確保) t # タイプ(システムID)の変更 1 # パーティション番号 b # VFAT 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 70 518599 b W95 FAT32 /dev/sdb2 71 1022 7053368 83 Linux
- さらに、 パーティションをフォーマットする。以下では、1 つ目のパーティションの名前を BOOT, 2 つ目を DATA にしている。これは、マウントされた時のディレクトリの名前になる。他の名前でも良い。
# mkfs.vfat -F 32 -n BOOT /dev/sdb1 # mkfs.ext3 -L DATA /dev/sdb2
- 以上より、以下のようなパーティションが作成される。
Partition |
ボリューム名 |
ファイルシステム |
サイズ |
システムタイプ? |
/dev/sdb1 |
BOOT |
FAT32 |
500 MB |
W95 FAT32 |
/dev/sdb2 |
DATA |
ext3 |
約 7 GB |
Linux |
- 次に、USB を抜き挿しする。SL6.3 の場合 /media ディレクトリ以下に /dev/sdb1 と /dev/sdb2 が /media/BOOT と /media/DATA という名前で自動的にマウントされる。(マウントされない場合は手動でマウントする。)以下のコマンドでマウントされたか確認できる。
# ls /media BOOT DATA # ls /media/BOOT # ls /media/DATA lost+found
- 次に、/mnt/DVD というディレクトリを作り、上でダウンロードした SL-64-x86_64-2013-03-21-Everything-DVD1.iso を mount コマンドでマウント(下記参照)。
# mkdir /mnt/DVD # iso をマウントするディレクトリを作成 # mount -t iso9660 -o loop isoをダウンロードしたディレクトリ/SL-64-x86_64-2013-03-21-Everything-DVD1.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 ディレクトリを syslinux という名前で /media/BOOT ディレクトリにコピー
# cp -rv /mnt/DVD/isolinux /media/BOOT/syslinux
- /media/BOOT/syslinux 内の isolinux.cfg を syslinux.cfg という名前に変更
# mv /media/BOOT/syslinux/isolinux.cfg /media/BOOT/syslinux/syslinux.cfg
- /mnt/DVD/images ディレクトリを /media/BOOT ディレクトリにコピー
# cp -rv /mnt/DVD/images /media/BOOT/
- SL-64-x86_64-2013-03-21-Everything-DVD1.iso, SL-64-x86_64-2013-03-21-Everything-DVD2.iso を /media/DATA ディレクトリにコピー。下記のコマンド例では、sync コマンドを用いてコピーが(本当に)終わるのを待っている。ファイルをコピーする場合、ファイルの書き込みが終わる前に cp コマンドが終了する時がある。この場合、sync コマンドでバッファ内のデータをすべて USB メモリに書き込む。sync コマンドの実行終了が書き込みの終了に相当するようだ。サイズが大きいファイルのコピーの場合、sync コマンドもなかなか終わらない。
# cp -v isoをダウンロードしたディレクトリ/SL-64-x86_64-2013-03-21-Everything-DVD1.iso /media/DATA # cp -v isoをダウンロードしたディレクトリ/SL-64-x86_64-2013-03-21-Everything-DVD2.iso /media/DATA # sync #
- さらに、syslinux を yum コマンドを用いてインストールする。コマンド例は下記参照。yum コマンドでは、 -y オプションを指定するとパッケージのインストールをするか否かが聞かれなくなる。SL6.3 の場合、syslinux の version 4.02 がインストールされる。syslinux コマンドのバージョンが新しすぎる (version 5.01 とか) とうまくいかないかも(下記のエラーの項目参照)?
# yum -y install syslinux
下記の dd コマンドで syslinux 付属の MBR (Master Boot Record) コード(/usr/share/syslinux/mbr.bin)が MBR に書き込まれ、syslinux コマンドで /media/BOOT/ldsyslinux.sys というファイルが作成される。これで、ブートローダがインストールされたことになる(?)。ここで、 /usr/share/syslinux/mbr.bin は syslinux コマンドインストール時に一緒にインストールされるファイルである。さらに sync コマンドで、バッファ内のデータが USB メモリに書き込まれる。syslinux --> dd コマンドと実行した場合、さらに sync コマンドを実行しないと bootable な USB メモリが出来なかった。
# dd if=/usr/share/syslinux/mbr.bin of=/dev/sdb # syslinux /dev/sdb1 # sync
ちなみに Windows 上で syslinux を実行したい場合は、syslinux をここからダウンロードし、展開。管理者権限でコマンドプロンプトを起動し、展開したディレクトリ内の win64 フォルダに移動。さらに、USB メモリを Windows PC に挿し、ドライブの割り当てを確認(ここでは、E: ドライブに割り当てられたとする)。さらに、コマンドプロンプトで以下の様なコマンドを打てば良い。これで、E:\ldsyslinux.sys ファイルの作成と MBR の書き込みが行われる。
cd syslinux-4.06\win64 のディレクトリ ***\syslinux-4.06\win64> syslinux64.exe -ma e:
- 以上でインストール用 USB メモリの完成。
USB メモリからインストール
- インストール用 USB メモリからインストールする手順は以下の通り。主に通常の DVD からのインストールと違う箇所について書いた。通常のインストール方法については Google で調べる。
- USB メモリを PC に挿し PC を再起動
- DEL キーなどを押し BIOS 画面に入る
- USB から BOOT するようにする
- インストーラ開始
- 通常のインストール方法に従い、言語などを選択
- インストールメディアは Hard drive を選択
- インストーラがある USB 上のパーティション(/dev/sdb1)を選択。
- インストーラがスタート
- 通常のインストール方法に従い、インストールを進める
- 途中、イメージファイルが見つからないと出る
- Ctrl-Alt-F2 でシェル画面に行き、イメージファイルが保存されているパーティションを /mnt/isodir にマウントする。これはインストーラがイメージファイルを /mnt/isodir ディレクトリ内から探しているため(?)。具体的には下記のようなコマンドを打つ。
# df -k # ls /mnt/isodir # umount /mnt/isodir # mount /dev/sdb2 /mnt/isodir # ls /mnt/isodir
- 実際の実行結果は以下の通り。
- これらのコマンドは次のことをしている。まず df コマンドでマウントポイントを確認する。/dev/sdb1 (USB 上のインストーラがあるパーティション) が /mnt/isodir にマウントされていることがわかる。ls コマンドで /mnt/isodir の中身も一応確認しておく。さらに /mnt/isodir をアンマウントし、イメージファイルが保存されているパーティション : /dev/sdb2 を /mnt/isodir にマウント。最後に /mnt/isodir の中にイメージファイルがあることを確認。
- ちなみに # fdisk -l の結果は以下の通り。
- Ctrl-Alt-F6 でインストールの画面に戻り、再試行を選択
- 後は普通のインストール手順に従う
エラー集
USB 作成時
Windows 上で syslinux コマンドを用いる場合、管理者権限で実行したコマンドプロンプトを使用しないと、以下のようなメッセージが出る。管理者権限でコマンドプロンプトを実行すればよい。
Download\syslinux-4.06\win64> syslinux64.exe -ma e: Accessing physical drive: Access is denied. Did not successfully update the MBR; continuing...
ブート時(その1)
- Windows 上で syslinux コマンドのバージョン 5.01 を用いて、USB メモリを作成すると、ブート時に以下のようなメッセージが出る。ここからどうすれば良いのか分からない。syslinux のバージョンが新たらしすぎてもダメなんだろうか? syslinux-4.06 を用いればこの問題は起きない。
- Press the <ENTER> key to begin the installation process. Failed to load COM32 file vesamenu.c32
ブート時(その2)
- 上記の MBR の書き込みのところで、 以下の様に dd コマンドの前に、syslinux コマンドを実行しても構わない。ただしその場合、dd コマンドの後に sync コマンドを実行しておかないと、MBR に正しく書き込めない場合がある。MBR の書き込みが正しく行われないと、USB からブートしようとしても、初めの画面(黒地に白の _ (カーソル) が点滅)から進まなくなる。
# syslinux /dev/sdb1 # dd if=/usr/share/syslinux/mbr.bin of=/dev/sdb # sync
NTFS でフォーマット
USB を NTFS でフォーマットし、インストール用 USB メモリを作成すると、ブート時に以下のエラーとなる。Sillicon Power 8 GB (USB 3.0) と Transend JetFlash 760 (USB 3.0) で同じメッセージ。Bootable な USB にするには、FAT32 でフォーマットする必要があるようだ。
BOOTMGR is missing Press Ctrl+ Alt + Del to restart
exFAT でフォーマット
USB を exFAT でフォーマットし、インストール用 USB メモリを作成すると、ブート時に以下のエラーとなる。Sillicon Power 8 GB (USB 3.0) と Transend JetFlash 760 (USB 3.0) で同じメッセージ。Bootable な USB にするには、FAT32 でフォーマットする必要があるようだ。
Remove disks or other media. Press any key to restart
UEFI?
- Sillicon Power 8 GB (USB 3.0) を FAT32 でフォーマット。BIOS 画面に入り USB からブートすると以下の画面が出る。
- UEFI: UFD 3.0 Silicon-Power8GB (7400MB)
- UFD 3.0 Silicon-Power8GB (7400MB)
- 上の方 (UEFI:) を選んでもだめだった。下の方を選ぶと、 ブートが始まる。
- Sillicon Power 8 GB (USB 3.0) を FAT32 でフォーマット。BIOS 画面に入り USB からブートすると以下の画面が出る。
LiveUSB Creator
- Fedora の LiveUSB Creatror では exFAT, NTFS では駄目で、FAT32 でフォーマットされている USB でないと駄目だった。
- SL6.4 上 で LiveUSB Creator を使っても、ext4 はデバイスとして認識しなかった。FAT32 なら認識した。
インストール時のエラー
- パーティションテーブルがおかしいと、以下のようなメッセージが出る。
不明なデバイス デバイス['/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 ... パーティションを作成
ファイルシステムのメモ
- それぞれのファイルシステムの特徴は以下の通り。
FAT32 : 容量制限あり。1 ファイルで 4 GB まで。
NTFS : 容量制限なし。Windows Me とか昔の Windows では対応してない。Linux で NTFS の書き込みはちょっと難あり。(昔はできなかった。)
exFAT : 容量制限なし。Windows XP SP2 以降からの対応。