Linux 上で fedora12 の LiveUSB を作成する方法 (CentOS 5.4版)
1、作業場所と必要なツールを用意する。
Fedora12 の LiveCD 用のイメージファイル(例:Fedora-12-i686-Live.iso)
USB から linux を起動するためのローダー(syslinuxの最新版:syslinux-3.83.zip)
[root@centos ~]# mkdir
/mnt/cd /mnt/usb
[root@centos ~]# mkdir
/opt/LiveUSB
[root@centos ~]# cd
/opt/LiveUSB
[root@centos LiveUSB]# wget
http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-3.83.zip
:
[root@centos LiveUSB]# wget
http://download.fedoraproject.org/pub/fedora/linux/releases/12/Live/i686/Fedora-12-i686-Live.iso
:
[root@centos LiveUSB]#
2、使用するUSBメモリーの状況を確認する。
[root@centos LiveUSB]# fdisk
-l | grep -i fat
/dev/sdb1
*
1
4310
3986431+ c W95 FAT32 (LBA)
[root@centos LiveUSB]# mount
/dev/sdb1 /mnt/usb
[root@centos LiveUSB]# ls
-als /mnt/usb
合計 16
4 drwxr-xr-x 3 root root 4096 1月 1 1970 .
8 drwxr-xr-x 4 root root 4096 12月 2 16:38 ..
4 drwxr-xr-x 3 root root 4096 12月 2 16:37 old-data
[root@centos LiveUSB]# umount
/mnt/usb
[root@centos LiveUSB]#
3、USBメモリーを LibeUSB 用に初期化する。
[root@centos LiveUSB]# 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.003384 seconds, 151 kB/s
[root@centos LiveUSB]# fdisk
/dev/sdb
デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更は
メモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります
コマンド (m でヘルプ): m
コマンドの動作
a ブート可能フラグをつける
b bsd ディスクラベルを編集する
c dos 互換フラグをつける
d 領域を削除する
l 既知の領域タイプをリスト表示する
m このメニューを表示する
n 新たに領域を作成する
o 新たに空の DOS 領域テーブルを作成する
p 領域テーブルを表示する
q 変更を保存せずに終了する
s 空の Sun ディスクラベルを作成する
t 領域のシステム ID を変更する
u 表示/項目ユニットを変更する
v 領域テーブルを照合する
w テーブルをディスクに書き込み、終了する
x 特別な機能 (エキスパート専用)
コマンド (m でヘルプ): o
新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更は
メモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります
コマンド (m でヘルプ): w
領域テーブルは交換されました!
ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。
[root@centos LiveUSB]#
4、USB メモリーにパーティションを作成し、FAT32
でフォーマット、ブートフラグをセットする。
[root@centos LiveUSB]# parted
/dev/sdb
GNU Parted 1.8.1
/dev/sdb を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) help
check
NUMBER
ファイルシステムの簡単なチェックする
cp [転送元デバイス] 転送元NUMBER 転送先NUMBER
ファイルシステムを他のパーティションにコピーする
help
[コマンド]
ヘルプ表示。コマンド指定でそのヘルプを表示
mklabel,mktable
LABEL-TYPE
create a new disklabel (partition table)
mkfs NUMBER ファイルシステムの種類
指定した種類のファイルシステムを作る
mkpart パーティションの種類 [ファイルシステムの種類] 開始 終了
パーティションを作る
mkpartfs パーティションの種類 ファイルシステムの種類 開始 終了
パーティションとファイルシステムを作る
move NUMBER 開始
終了
パーティションを移動する
name NUMBER
名前
パーティションに名前をつける
print
[free|NUMBER|all]
パーティションテーブルを表示する
quit
プログラムを終了する
rescue 開始
終了
開始、終了で指定した範囲付近にあるパーティションを復活させる
resize NUMBER 開始
終了
パーティションとその中のファイルシステムをリサイズする
rm
NUMBER
パーティションを削除する
select
デバイス
操作するデバイスを選択
set NUMBER フラグ
状態
ファイルシステムのフラグと状態を設定する
toggle [NUMBER
[FLAG]]
パーティションのフラグの状態を反転する
unit
UNIT
デフォルトの単位を UNIT にする
version
GNU Parted のバージョンと著作権情報を表示
(parted) p
モデル: Kingmax USB2.0
FlashDisk (scsi)
ディスク /dev/sdb: 4082MB
セクタサイズ (論理/物理):
512B/512B
パーティションテーブル: msdos
番号 開始 終了 サイズ タイプ
ファイルシステム フラグ
(parted)mkpart
パーティションの種類? primary/プライマリ/extended/拡張?
primary
ファイルシステムの種類? [ext2]?
fat32
開始? 1
終了? 4082MB
(parted) p
モデル: Kingmax USB2.0 FlashDisk (scsi)
ディスク /dev/sdb: 4082MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
番号 開始
終了 サイズ
タイプ
ファイルシステム フラグ
1 0.51kB
4082MB 4082MB プライマリ
fat32
lba
(parted) set 1 boot on
(parted) mkfs
警告: The existing file system will be destroyed and all data on the partition will be lost. Do you want to continue?
はい(Y)/Yes/いいえ(N)/No? y
パーティション番号? 1
ファイルシステム? [ext2]? fat32
(parted) p
モデル: Kingmax USB2.0 FlashDisk (scsi)
ディスク /dev/sdb: 4082MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
番号 開始
終了 サイズ
タイプ
ファイルシステム フラグ
1
0.51kB 4082MB 4082MB プライマリ
fat32
boot, lba
(parted) q
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。
5、USB メモリーに LiveCD のデータをコピーする。 ( LiveOS、isolinux )
CD-ROMの LiveOS 配下は、USBにも同じ名前のディレクトリを作成しコピーする。
CD-ROMでは isolinux ディレクトリに配置されるが、 USBでは、syslinux ディレクトリ配下に変更する。
CD-ROMの設定ファイル名は isolinux.cfg であるが、USBの場合の設定ファイル名は syslinux.cfg でなければならない。
USBでは使用しないので削除可能なファイル GPL、EFIディレクトリ配下の全ファイル、LiveOS/livecd-iso-to-disk
isolinux/boot.cat、isolinux/isolinux.bin、isolinux/isolinux.cfg
[root@centos LiveUSB]# mount
`pwd`/Fedora-12-i686-Live.iso /mnt/cd -o loop
[root@centos LiveUSB]# mount
/dev/sdb1 /mnt/usb
[root@centos LiveUSB]# ls
-als /mnt/usb
合計 12
4 drwxr-xr-x 2 root
root 4096 1月 1 1970 .
8 drwxr-xr-x 4 root
root 4096 12月 2 16:38 ..
[root@centos LiveUSB]# cp
-r /mnt/cd/LiveOS/ /mnt/usb
[root@centos LiveUSB]# mkdir
/mnt/usb/syslinux
[root@centos LiveUSB]# cp
/mnt/cd/isolinux/* /mnt/usb/syslinux/
[root@centos LiveUSB]# cp
/mnt/usb/syslinux/isolinux.cfg /mnt/usb/syslinux/syslinux.cfg
6、USB メモリーの UUID を確認し、LiveUSB 用の設定ファイル syslinux.cfg を変更する。
CD-ROMでは、LABELを使ってメディアをマウントするが、USBでは、UUIDを用いてメディアのマウントする様に変更する。
UUIDは、blkid コマンドで確認し、マウントするメディアの指定部(CDLABEL=Fedora-12-i686-Live)を変更する。
[root@centos LiveUSB]# blkid
| grep -i vfat
/dev/sdb1: UUID="5239-FC1F"
TYPE="vfat"
[root@centos LiveUSB]# vi
/mnt/usb/syslinux/syslinux.cfg
[root@centos LiveUSB]# diff
/mnt/usb/syslinux/isolinux.cfg /mnt/usb/syslinux/syslinux.cfg
22c22
<
append initrd=initrd0.img root=live:CDLABEL=Fedora-12-i686-Live
rootfstype=auto ro liveimg quiet rhgb rd_NO_LUKS rd_NO_MD
noiswmd
---
>
append initrd=initrd0.img root=live:UUID=5239-FC1F rootfstype=auto ro
liveimg quiet rhgb rd_NO_LUKS rd_NO_MD noiswmd
27c27
<
append initrd=initrd0.img root=live:CDLABEL=Fedora-12-i686-Live
rootfstype=auto ro liveimg quiet rhgb check
---
>
append initrd=initrd0.img root=live:UUID=5239-FC1F rootfstype=auto ro
liveimg quiet rhgb check
[root@centos LiveUSB]#
7、syslinux を使用して、USB メモリーを linux ブータブルにする。
ダウンロードした、syslinux のアーカイブを展開する。
linux ディレクトリにあるELF形式の実行ファイル syslinux を用いて USB を linux ブータブルにする。
【 Usage: syslinux [-sf] [-d direcotory] device 】
sync により、キャッシュされているデータ分についても USB に書き込む。
[root@centos LiveUSB]# mkdir 83
[root@centos LiveUSB]# cd
83
[root@centos 83]# unzip
-q ../syslinux-3.83.zip
[root@centos 83]# cd
linux
[root@centos linux]#
./syslinux -f -d syslinux /dev/sdb1
[root@centos linux]#
[root@centos linux]# sync
[root@centos linux]# sync
fedora 12 の LiveUSB 化が完了したので、システムを再起動し、正しく動作する事を確認する。