Locked History Actions

Scientific Linux 6.4 Install from USB using EXTLINUX

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 ファイル) を使うので、まずこれをダウンロード。ファイルの保存場所はどこでも良い。理研からダウンロードすると早い。

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 メモリが出来るはず。
  1. まずスーパーユーザになる。
    • $ su
       root の password を入力
    •  

  2. EXTLINUX を yum コマンドを用いてインストールする。コマンド例は下記参照。yum コマンドでは、 -y オプションを指定するとパッケージのインストールをするかの yes/no を聞かれなくなる。SL6.3 の場合、EXTLINUX の version 4.02 がインストールされる。同時に、SYSLINUX もインストールされるはず。

    • # yum -y install syslinux-extlinux
    •  

  3. 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 に割り当てられたと仮定する。
    •  

  4. USB メモリのアンマウントを行う。(もしマウントされていなければ、この作業は必要ない。)
    • # umount /dev/sdb1
    •  

  5. 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
  6. パーティションを ext3 ファイルシステムでフォーマットする。ここでは、パーティションの名前を LIVE としている。これは、マウントされた時のディレクトリの名前になる。他の名前でも良い。
    • # mkfs.ext3 -L LIVE /dev/sdb1
    •  

  7. USB を抜き挿しする。SL6.3 の場合 /media ディレクトリ以下に /dev/sdb1 が /media/LIVE という名前で自動的にマウントされる。(マウントされない場合は手動でマウントする。)以下のコマンドでマウントされたか確認できる。
    • # ls /media
      LIVE
      # ls /media/LIVE
      lost+found
    •  

  8. /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
    •  

  9. /mnt/DVD/isolinux ディレクトリを extlinux という名前で /media/LIVE ディレクトリにコピー
    • # cp -rv /mnt/DVD/isolinux /media/LIVE/extlinux
    •  

  10. /media/LIVE/syslinux 内の isolinux.cfg を extlinux.conf という名前に変更
    • # mv /media/LIVE/extlinux/isolinux.cfg /media/LIVE/extlinux/extlinux.conf
    •  

  11. /mnt/DVD/images ディレクトリを /media/LIVE ディレクトリにコピー
    • # cp -rv /mnt/DVD/images /media/LIVE/
    •  

  12. 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
      #
    •  

  13. 下記の 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
    •  

  14. 以上でインストール用 USB メモリの完成。

USB メモリからインストール

  • インストール用 USB メモリからブートする手順は以下の通り。 インストールの手順としては、インストールメディアの選択の部分が異なるが、その他については DVD からのインストールとほぼ同じ手順となる。通常のインストール方法については Google で調べる。(CentOS-6.4 のインストール方法が参考になりそう。)
  1. USB メモリを PC に挿し PC を再起動
  2. DEL または F2 キーなどを押し BIOS 画面に入る
  3. USB から BOOT できるように設定する
  4. インストーラ開始
    • alt Installer_select_install_or_rescue.png

    •  

  5. 通常のインストール方法に従い、言語などを選択
  6. インストールメディアは Hard drive を選択
    • alt Installer_Installation_Method.png

    •  

  7. インストーラがある USB 上のパーティション(/dev/sdb1)を選択。
    • alt Installer_Select_Partition_only_1.png

    •  

  8. インストーラがスタート
    • alt Installer_SL6.png

    •  

  9. 通常のインストール方法に従い、インストールを進める
  10.  

  11. ちなみに、インストール中に 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:/
  • とすれば、インストール時にインストールメディアを選択する必要がなくなる。
  •  

  • 参考: CentOS6.3のUSBレスキューメディアを作成する

エラー集

  • ブート時

    • 上記の MBR の書き込みのところで、 以下の様に dd コマンドの前に、syslinux コマンドを実行しても構わない。ただしその場合、dd コマンドの後に sync コマンドを実行しておかないと、MBR に正しく書き込めない場合がある。MBR の書き込みが正しく行われないと、USB からブートしようとしても、初めの画面(黒地に白の _ (カーソル) が点滅)から進まなくなる。
    • # syslinux /dev/sdb1
      # dd if=/usr/share/syslinux/mbr.bin of=/dev/sdb
      # sync
    •  

  • インストール時

    • パーティションテーブルがおかしいと、以下のようなメッセージが出る。
    • alt Installer_error_of_install_source.png

    • 不明なデバイス
      
      デバイス['/dev/sdb1']で与えられたインストールソースが見つかりません。パラメータをチェックしてもう一度試して下さい。
      
      インストーラーを終了する(E)
    • この USB を Scientific Linux 付属のディスク・ユーティリティで確認すると、以下のように "パーティション: 不明なスキーム" となっている。
    • alt USB-unknown_scheme.png

    •  

    • このような場合、パーティションテーブルの修復を行えば良い。ディスク・ユーティリティーを用いる場合は "ドライブをフォーマット" ボタンを押し、"マスターブートレコード" でフォーマットすれば良い。
    • コマンドライン上で行う場合は、以下のように 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
      ...
      パーティションを作成