ああああ

DBとかOSとか仮想マシンとか。

USBでCentOS 6.5以降をインストールするのに手間取った。

現在UnetbootinFedora LiveUSB Createrなど、USBを使用してCentOSをインストールする方法が存在しているが、意外と落とし穴が多い。インストール画面で"Unable to read package metadata. This may be due to missing repodata directory. Please ensure that your install tree has been correctly generated."と表示されて失敗したり。そのエラーを乗り越えてインストールできたと思ったらリブート時に"error: file '/grub/i386-pc/normal.mod' not found."と表示されてgrub rescueモードに入ったり。

それらの問題はddコマンドを使用してUSBを作成すれば避けられた。Unetbootinとかよりは確実。自分はMacでUSBを作成して問題なくいけた。

というわけで今回はMac OSCentOSインストール用のusbを作成する。当然他のLinuxUnix系OSでも出来る。Windowsの人はツールが沢山あるから頑張って。俺は諦めた。

手順は以下の通り:

  1. 前提準備
    • Macの場合、rootユーザーを有効にする。こちらのサイトの手順が分かりやすかった。
    • isoイメージの入手。今回はCentOS-7-x86_64-DVD-1611.isoを選択。
  2. 次はMacにUSBを挿す。Terminalを開いてdfなどのコマンドでデバイスが認識されていることを確認。diskutil listでも可。
    $ df
    Filesystem    512-blocks      Used Available Capacity  iused    ifree %iused  Mounted on
    /dev/disk0s2   975093952 608778224 365803728    63% 76161276 45725466   62%   /
    devfs                361       361         0   100%      626        0  100%   /dev
    map -hosts             0         0         0   100%        0        0  100%   /net
    map auto_home          0         0         0   100%        0        0  100%   /home
    /dev/disk1s1     7823296   4447136   3376160    57%        0        0  100%   /Volumes/SHIOYAMA
    
  3. USBをMS-DOS(FAT)形式で初期化
    $ diskutil eraseDisk MS-DOS UNTITLED /dev/disk1
    
  4. 次にUSBをアンマウントする。
    $ sudo diskutil umount "/Volumes/SHIOYAMA"
    
    この手順を飛ばすとddコマンド実行時に以下のエラーが発生する。
    $ sudo dd if=/Users/shioyama/Downloads/CentOS-7-x86_64-DVD-1611.iso of=/dev/disk1 bs=512k
    dd: /dev/disk1: Resource busy
  5. 次にddコマンドでisoファイルを書き込む。以下がフォーマット:
    $ sudo dd if=/isoファイルへのパス of=/USBのデバイス bs=ブロックサイズ。マニュアルなどに推奨値が書いてある。
    
    ※コマンドが終わるまでUSBを抜かないように!
    実行例:
    $ sudo dd if=/Users/shioyama/Downloads/CentOS-7-x86_64-DVD-1611.iso of=/dev/disk1 bs=512k
    
    ※of=/dev/disk1s1ではなくof=/dev/disk1と指定する。パーティションを指定してしまうとブート時に「error: file '/grub/i386-pc/normal.mod' not found.」と表示される。
  6. 最後に以下のコマンドを実行。USBを抜く前データが書かれているか確認する。正直やらなくても良い。
    $ sync
    $ eject /dev/disk1

以上