palm84.com

革命的愛熊主義者同盟!

Linux LiveCDをUSBメモリでブートするめも

2021.4.1 移転しました...
  • このページの旧URLは
    • http://www10.plala.or.jp/palm84/livecd_usb.html
内容古いです

最終更新日は 2012.3.10 です!ご注意。

全然まとまってませんが、Linux素人の覚書。

INDEX

2007.11.5 作成
2010.01.31 BIOSの対応とパーティション形式 を追記
2011.06.02 SYSLINUXのインストール を改訂
2011.06.09 isohybrid を追記
最終更新日 2012.3.10

拙作めも

便利ツールいろいろ。

SYSLINUXでマルチブートの基本設定など。

SYSLINUX から GRUB for DOS をチェインロードしてごにょごにょ。

BIOSで認識なれどブートせず!の際はパーティションの変更が必要かもしれない。

USBメモリでのブート対応確認

USBメモリからのブートに対応しているかどうかは、実際に試してみないとわからないことも多いです。

ブート可能なUSBメモリを挿した状態でBIOSを起動して、bootの選択画面に「USB xxx」「Generic USB なんとか」「Removable xxx」などの項目が現れるかどうか確認します。対応していても挿していない場合は現れないことが多いようです。USB 2.0 非対応PCでは多分ほぼ非対応。対応の目安としては2002年以降あたりかな?

【追記】最近のBIOSでは種類名ではなく製品名が表示されることが多い模様です。

  • 電源オン時に、F(1 - 12) キーなどを押すとリストに表示される場合がある
  • 2台目(或いは1台目)のHDとして認識される場合がある(※ 第2HDとして認識されている場合は、HDの優先順序を入れ替える必要があるかも)
  • BIOSのブートデバイスのリストに表示されないが、リストの内容を変更するのにEnterキーなどを押すと変更可能リストに表示される場合がある
  • HDのリストを変更しようとすると表示される場合がある
  • Boot other device】などの設定を有効にすると表示される場合がある(※ 初期設定では、内蔵HD,CD,FD,LAN 以外のUSBデバイスなどが無効になってることがあります)
  • 最近のPCでは、BIOSに【 USB Mass Storage Settings 】とか【USB ナントカ】などの設定項目があったり。
  • Emulation Type】などの設定項目で、HD or FD を切り替えできたり
    • 容量の応じて、またはパーティションの有無で自動切替したり

製品名だったり、 Generic USB xxxUSB HDDUSB ZIPUSB LS120USB RMD-FDDUSB Flash、など機種によって認識名は様々。(※ 2台目のHDドライブとして認識される場合もあるようです。)

※または、電源投入後にF(F1-F12)キーを押して選択。

詳しくは下記サイトの情報を参考に。

USB-FDのみ対応であったり、特定のUSB-CDのみ可能だったり対応は色々。

※ 【USB ZIP】対応の場合、mkdiskimage の実行でブート可能になる場合もあるようです。

注意点いろいろ

上記のページは、DOSの場合なのでLinuxでは問題にならない場合もあるのですが、BIOSの対応の違いなど書いてます。

  • USBを挿したまま再起動するとだめだったり、抜き挿しのタイミングによって認識しなかったりすることも。挿してから電源オン、あるいは電源オンしてから挿すとか、色々試してみるべきかも?
  • フラッシュメモリ用カードリーダ(及びアダプタ)などは、結構相性問題や対応メモリサイズなどに制限があったりする。SDメモリはOKでもmicroSDはだめとか。

Can't find KNOPPIX filesystem sorry.
Dropping you to (very limited) shell.

上記の様なメッセージが出て、USBメモリ内のKnoppixイメージがマウントできない場合に、kernel,initrd読み込み後USBランプが消えた直後にUSBポートを挿し直すとマウント可能になることがあります。

Allowing slow USB-devices some more time to register...ok

このメッセージが出れば多分OK。

作成ツール / スクリプト

  • Tuxboot - Clonezilla live, DRBL live, GParted live, Tux2live(※ Windows版、Linux 版もあり)
マルチブート LiveUSB 作成
下記はちょっと古い情報...

うまく行かないこともあるので、その場合は手動作成で。

ブートの流れ

Linuxカーネルがロードされるまで。ブートローダにSYSLINUXを使う場合です。

  1. BIOSがブートデバイスを選択
  2. USBメモリのMBR
    • ブートローダ(*1)読み込み
    • パーティションテーブルを参照
    • アクティブパーティションへ
  3. アクティブパーティション(bootフラッグ付)のブートセクタ
    • ブートローダ(*2)読み込み
    • ブートローダ(*2)ldlinux.sysをロード
  4. ldlinux.sys syslinux.cfg の設定に基づきカーネルなどのファイルをロード
  • パーティションを切っていない場合はMBRはないので【2】はなし
  • *1 - いわゆる「ブートストラップローダ
  • *2 - いわゆる「IPL」(イニシャル・プログラム・ローダ)

ブートストラップについては、DOSやWindowsのものでもほぼブート可能ですが、IPLについてはsyslinux専用のもの、つまり ldlinux.sys をロードする為の専用IPLとなります。Windows上でフォーマットするとWindows用のIPLがブートセクタに書き込まれます(XPだとNT-IPL)ので、その後でsyslinuxを実行します。

BIOSの対応とパーティション形式

最近のPCでは臨機応変な対応が可能になってるので、あまり気にする必要はないと思われます。しかしながら、2002年頃のUSBメモリブート初期型(って言っていいのかな?)BIOSでは、USBメモリは【(大容量)FD扱い】固定なんてのも多かったので、該当しそうな場合はチェックしてみるべきかも。

要は、下記2点の組み合わせによりブート可否の結果が変わることもあるってことで...

  1. BIOSの対応
    • HD扱い固定
    • FD扱い固定
    • 自動切換
    • 手動切換
  2. フラッシュメモリのパーティションは?
    • MBRあり - HD形式
      • Zip形式(パーティションの第4エントリを使用)なんてのもあるらしい?
    • MBRなし - (大容量)FD形式

最近のフラッシュメモリでは、パーティションが切られていてMBRがあるHD形式の状態のものが殆どだと思いますが、以前はMBRのない(パーティションの切られていない)、(大容量)FD形式のものもありました。

HD扱い(固定)でのブート
  • USBメモリがFD形式だと、MBRがないのでブートできない
FD扱い(固定)でのブート
  • USBメモリがHD形式でもブートできるが、MBRはロードしないのでPBRにブートローダーがインストールされていないとブートできない
  • FAT32フォーマットではブートしても、「ファイルがない」エラーが出ることがある(FAT16ならOK)
  • 第2パーティションからブートできない
  • パーティションタイプが LBA だとブートできないことがる( CHS ならOK)

【追記】FAT16 の最大パーティションサイズは 2GB

※ 尚、USB HD のブートに対応していても、USBフラッシュメモリはFD扱い固定の場合もあったので注意(と言っても、2002年製のかなり“古い”BIOSですが...)

HD扱い・FD扱いのどちらでもブート可能にするには

それがベストな選択がどうかは微妙ですが...

  1. パーティションは切っておく
  2. 第1パーティションをアクティブに
  3. 第1パーティション(のPBR)へブートローダーをインストール
  4. MBRへは、SYSLINUXの mbr.bin のようなシンプルなブートストラップ(※ アクティブ・パーティションのPBRをロードするのみ)を書き込む

【2】【3】【4】については、Windows 上で syslinux.exe -ma <USBドライブ文字>: することと同じです。

パーティションとフォーマット

あくまであくまで私見ですが...

※購入時の状態を残したい場合など、DDforWindowsなどで全体のイメージファイルをバックアップしておきませう。

USBメモリ(SDメモリ + カードリーダなども含め)を確実にブート対応にするには、Linuxのfdiskでパーティションを切り直した方がいいかなと思ってます。

※ 下記は 8 GB(7.84 7.875 GiB) 以下の場合ですが...

  • パーティションテーブルは一旦消す
  • シリンダ数は1024以下に設定される(※ 7.875 GiB 以下の場合)
  • パーティションタイプはFAT32なら B、FAT16なら 6 に設定(※ 7.875 GiB 以下の場合)

※但し、SDメモリなど携帯電話やデジタルカメラなどで使えなくなるかもしれません。また、別の機器でフォーマットしちゃうとブート不可になってしまうかもしれません。

購入時にパーティションが切られているものもありますが(切られていると言っても大抵は1つだけなので「MBRがある」といった区別の方が正確かも)、切られていないもの(FDなどと同じでMBRがない状態)もあります。

※ Buffalo RUF2-S 512MB では購入時の状態で、MBRあり、フォーマットは FAT16 LBA (Type = 0E, C/H/S = 1984/16/32, アクティブ) となってました。syslinux.exe -ma の実行のみでSYSLINUXはブートできました。

BIOS上で ZIP や 所謂スーパーフロッピー(USB LS120, USB RMD-FDD などの“大容量”FD) などで認識されている場合などパーティションが切られていない状態でもブートできることもありますが、切っておいた方が確実だと思われます。

パーティションが切られている場合は、対象パーティションがアクティブに設定(bootフラグを付ける)されていて、MBRにブートストラップを書き込んでおく必要がありますあるはず?です(※BIOSの対応がスーパーフロッピー扱いの場合はなしでもいいのかも)。購入時点で書き込まれていたりもする様です。また、DOSのFDISKを使ってパーティションを作成した場合も自動で書き込まれるようです。

私のPCのうち、BIOSで「USB LS120」で認識されるものでは、MBRの先頭446バイトを0で埋めてブートストラップのない状態でもSYSLINUX(MS-DOSとFreeDOSではAドライブとして起動)はブートします。FAT32フォーマットではブートしません。

なので、MBRのブートストラップに関してはBIOSの対応(HD扱いなのか所謂スーパーフロッピー扱いなのか)次第なのかもしれませんけど...

USB-HDでのブートに対応していない場合 USBメモリが USB HD としてではなく大容量FD扱い(USB LS120 など)となる場合など、FAT32フォーマットではブートできないことがあります。その際はFAT(16)フォーマット(パーティションサイズは 2GB まで)で試してみませう。

USBメモリのパーティションを作成するには...

Linuxの fdisk コマンド、またはGUI操作なら GParted とか。

ブート対象パーティションのアクティブ設定boot フラグを付ける)を忘れないようにしませう。

尚、Windowsのエクスプローラ上では第1パーティションしか見えないのでご注意(※ 正確には「パーティション・テーブルの第1エントリ」かな)。

パーティションを一から切り直すには...

※念のために、DDforWindowsなどで全体のイメージファイルをバックアップしておきませう。

パーティションを作り直すだけだといわゆる C/H/S 設定は変わらない場合が多いので、一旦パーティションテーブルを含めMBRなど全部消してしまわないといけないのかもしれません。下記はあくまでPalm84流(何)ですけど...

あっと、事前に念のため、全体のバックアップイメージの作成しときませう(※Windowsなら DDforWindows とかが便利)。

/dev/sdx について --- まちがってHDに向けてやらないように注意!

  • MBRだけでなく第1パーティションの先頭あたりまで消しちゃえ!
$ dd if=/dev/zero of=/dev/sdx bs=512 count=64
  • そして、普通に(rootで)fdisk 実行
# fdisk /dev/sdx

【2013.8.24 追記】取扱注意なツールとなりますが、RMPrepUSB や BOOTICE で色んな形式のフォーマットが可能です。または、オプション指定で fdisk 実行するなど。

ファイルのコピー

Windows上で直接isoイメージを展開(抽出)するには 7-ZipUniversal Extractor などが便利です(※展開時の[BOOT]ディレクトリはブートセクタなので基本的に不要です)。

仮想CDソフトやWinRARなどでは、ファイル名がすべて大文字の8.3形式となってしまうことがあるため上記をおすすめします。

基本的にはCDisoイメージ内のファイルを同じ状態でUSBメモリへコピーすればいいと思います。

SLAXではオプションで任意の場所を指定可能でした(例:from=/dev/hda5/MySlax)。

この後、syslinux.cfg ファイルについて確認します。

syslinux.cfgの設定

まず、CD内にUSBメモリブート用の syslinux.cfg がないか確認します。CDブートとは違うオプション(パラメータ)の指定が必要になることがあるので、ある場合はそのファイルを使用します。

syslinux.cfg がない場合は isolinux.cfgsyslinux.cfg にリネームして使用します。

  • Windowsで SYSLINUX 最新版を使う時で syslinux.cfg がない場合は
    1. isolinux.cfgsyslinux.cfg にリネーム
    2. ディレクトリ名 /boot/isolinux/ などを /boot/syslinux にリネーム
  • ※LiveCDなどの古いバージョンのSYSLINUXを使う場合は
    1. kernel など isolinux ディレクトリ内のファイルすべてをルート(/) に移動
    2. isolinux.cfgsyslinux.cfg にリネーム
保存場所

※バージョン3.35以降

Starting with version 3.35, the configuration file can also be in either the /boot/syslinux or /syslinux directories (searched in that order.) If that is the case, then all filenames are assumed to be relative to that same directory, unless preceded with a slash or backslash.

SYSLINUX - common documentation

下記の順序で検索されるとあります。優先順序の様です。

  1. /boot/syslinux
  2. /syslinux
  3. /

/ に作っても /boot/syslinux にもあれば、優先されてしまうので注意。

SYSLINUX のバージョンに注意。LiveCDに含まれるものは3.31など古いものが多い。旧バージョンを使う場合はルート(/) に置くのがよいかと。

ファイルの指定

kernel、及び initrd が syslinux.cfg と同じディレクトリにない場合はファイルのパスを指定する必要があります(同じディレクトリ内にあるならファイル名のみでOK)。(マルチブートする場合を除き)同じディレクトリにある方が楽かと。

一例ですが..

 / 
 |   ldlinux.sys
 |   xxx
 +---boot
 |   |   xxx
 |   \---syslinux
 |           syslinux.cfg
 |           vmlinuz
 |           initrd.gz
  • 相対パス(※同じディレクトリ)
KERNEL vmlinuz
APPEND initrd=initrd.gz パラメータ1 パラメータ2
  • /】ルートからの絶対パス
KERNEL /boot/syslinux/vmlinuz
APPEND initrd=/boot/syslinux/initrd.gz パラメータ1 パラメータ2
その他・便利な追加機能など

オプション・パラメータ調整

デバイスの対応次第ですが、デフォルト設定ではうまくブートできないこともあります。

syslinux.cfgのデフォルト以外のlabelをブート時に指定したり、CD内の説明ファイルを参照してオプション(パラメータ、チードコード)を調整。

オプションを編集

通常は編集する必要はありません

Linuxの改行コードはLF(Windows標準はCR+LF)なのでWindowsのメモ帳で開くと表示がおかしくなります。LF対応のテキストエディタ(またはワードパッドでも)を使います。

ファイル名は8文字以内、または8.3形式で最近のバージョンでは文字数制限はほぼないです

 default knoppix
 display boot.msg
 prompt 1
 F1      boot.msg
 F2      help.txt
 F3      option.txt
 
 label knoppix
 kernel linux
 append ramdisk_size=100000 init=/etc/init lang=ja apm=power-off vga=791 initrd=minirt.gz nomce highres=off  loglevel=0 libata.atapi_enabled=1 quiet SELINUX_INIT=NO nmi_watchdog=0 BOOT_IMAGE=knoppix

 label expert
 kernel linux
 append ramdisk_size=100000 init=/etc/init lang=ja apm=power-off vga=791 initrd=minirt.gz nomce highres=off  nmi_watchdog=0 BOOT_IMAGE=expert
 
 --- 略 ---
  • default - デフォルトの label を指定
  • display - ブート画面で表示するファイルを指定
  • prompt 1 - bootプロンプトを表示。0にするとデフォルトで自動起動。
  • timeout 100 - 10秒後に自動起動

label 名やオプション指定などを書いたテキストファイルを作って、display menu.txt などとして表示させるのもいいかも。

SYSLINUXのインストール

GRUBなど他のブートローダは...

調べてみるとUSBメモリのパーティションの状態はHDと比べ一定とはいえない様です。MBRと第1パーティションの間の空き領域がないものがありました。GRUBはこの空き領域への書き込みが必要なのでMBRへインストールできないことがあります。SYSLINUXでは、MBR以降の空き領域へは書き込みしません。

あっと、Linux の fdisk で ヘッド数とセクタ数を指定してパーティションを切り直せば変わるかもしれません...

【追記】SYSLINUX は一応ブートしている様だがメニューなどが出ない場合は...

元のバージョンと同じ SYSLINUX をインストールする方が楽かも

実行したSYSLINUXファイル(syslinux.exe とか) と元の Linux に含まれてる SYSLINUX のメニュー用ファイル vesamenu.c32 などとのバージョン不整合かもしれないです。下記ファイルが存在する場合はダウンロードした SYSLINUX の最新バージョンに置換してみるべし。

  • vesamenu.c32 (\com32\menu\vesamenu.c32)
  • menu.c32 (\com32\menu\menu.c32)
  • chain.c32 (\com32\modules\chain.c32)
  • reboot.c32 (\com32\modules\reboot.c32)
  • memdisk (\memdisk\memdisk)
  • poweroff.com (\modules\poweroff.com)
SYSLINUX

Windows 上で実行

  1. ダウンロードしたzipファイルを展開
  2. \win32 ディレクトリにある syslinux.exe を実行

※ Vista/7ではコマンド プロンプトを「管理者として実行」すること!

syslinux.exe をUSBメモリのルートにコピーして実行するのが簡単かと。

  • バージョン 4.04 (USBメモリが X: ドライブ)の例
C:\Documents and Settings\yassy>x:

X:\>findstr SYSLINUX syslinux.exe
SYSLINUX 4.04 
SYSLINUX 4.04 2011-04-18 No DEFAULT or UI configuration directive found!

X:\>syslinux
Usage: syslinux [options] <drive>: [bootsecfile]
  --directory  -d  Directory for installation target
  --install    -i  Install over the current bootsector
  --update     -U  Update a previous installation
  --zip        -z  Force zipdrive geometry (-H 64 -S 32)
  --sectors=#  -S  Force the number of sectors per track
  --heads=#    -H  Force number of heads
  --stupid     -s  Slow, safe and stupid mode
  --raid       -r  Fall back to the next device on boot failure
  --once=...   -o  Execute a command once upon boot
  --clear-once -O  Clear the boot-once command
  --reset-adv      Reset auxilliary data
  --menu-save= -M  Set the label to select as default on the next boot
  --mbr        -m  Install an MBR
  --active     -a  Mark partition as active
  --force      -f  Ignore precautions

下記はUSBメモリのドライブレターが仮に【X:】とした場合の例です。ドライブレターを間違うと Windows が起動しなくなる場合があるのでくれぐれもご注意(※ --force オプション付けない限り内蔵HD、USB HDへはインストールできない筈ですけど...)。

※ インストール先ドライブのフォーマットは FAT32 or FAT16

  • SYSLINUXの IPLldlinux.sys 書き込み(※ PBRへインストール)
syslinux.exe X:

または、

syslinux.exe --install X:
  • SYSLINUXのMBRブートストラップIPLldlinux.sys書き込み
syslinux.exe -ma X:

または、

syslinux.exe --install --active --mbr X:

m】がMBRへブートストラップ書き込み
a】はパーティションをアクティブに設定

尚、パーティションを切っていない場合(FD扱いでのブート)はブートストラップの書き込みは不要ですがしておいた方が確実だと思われます。(元々書き込み済みの場合もあるかも)

  • ldlinux.sys を書き込むディレクトリを指定(例 : \syslinux へ)
syslinux.exe --install --active --mbr --directory /syslinux X:
めも
SYSLINUX ブートセクタのファイル化
syslinux.exe --install X: syslinux.bin

512バイトのファイルが作成されます(USBメモリへは書き込みされない)。ルートに置けば GRUB for DOS からチェインロードが可能です。

title * chainload SYSLINUX Menu
find --ser-root /syslinux.bin
chainloader /syslinux.bin

Linux 上で実行

Linux上ではブートストラップの書き込みがうまく行かないことがあります。Windows上で syslinux.exe -ma を実行した方が確実かも。

Linux に含まれる SYSLINUX のパッケージはバージョンが少し古めのことが多いので最新版のダウンロードをおすすめします。

おおまか手順
  1. インストール先パーティションのフォーマットは FAT32 or FAT16
  2. インストール先パーティションをアクティブ設定
  3. インストール先パーティションへ SYSLINUX をインストール
  4. dd コマンドでMBRのブートストラップ部分をクリア
  5. dd コマンドで SYSLINUX の mbr.bin(※ ブートストラップ)を MBRへ 書き込み
USBデバイス名を確認...

dmesgfdisk コマンドとかで容量から判断したらいいかな。

【注意】通常は内蔵の第1HDが sda ですが、USB HDが sda、内蔵HDDが sdb となってたこともあるんでくれぐれも間違わない様にご注意!

root@sysresccd /root % dmesg | grep blocks
[    7.570224] sd 0:0:0:0: [sda] 62914560 512-byte logical blocks: (32.2 GB/30.0 GiB)
[   14.153323] sd 3:0:0:0: [sdc] 3932160 512-byte logical blocks: (2.01 GB/1.87 GiB)
[   14.156156] sd 2:0:0:0: [sdb] 39070080 512-byte logical blocks: (20.0 GB/18.6 GiB)
yassy@kubuntu:~$ sudo fdisk -l | grep /dev
ディスク /dev/sda: 32.2 GB, 32212254720 バイト
/dev/sda1   *           1        2433    19543041    7  HPFS/NTFS
/dev/sda2            2434        3916    11912197+   5  拡張領域
/dev/sda5            2434        3916    11912166    c  W95 FAT32 (LBA)
ディスク /dev/sdb: 20.0 GB, 20003880960 バイト
/dev/sdb1   *           1        1386    11133013+   c  W95 FAT32 (LBA)
/dev/sdb2            1387        2301     7348224   83  Linux
/dev/sdb3            2302        2432     1052257+  82  Linux スワップ / Solaris
ディスク /dev/sdc: 2013 MB, 2013265920 バイト
/dev/sdc1   *           1         650     1249269    6  FAT16
/dev/sdc2             651        1022      714984    6  FAT16

下記はUSBメモリの対象パーティションが /dev/sdz1 の場合です。事前に確認

  • パーティション sdz1 をアクティブ(bootフラグ)に
# parted /dev/sdz set 1 boot on

# parted /dev/sdz p
Model: BUFFALO ClipDrive (scsi)
Disk /dev/sdz: 131MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End    Size   Type     File system  Flags
 1      25.6kB  131MB  131MB  primary  fat16        boot
  • SYSLINUXのIPLldlinux.sys書き込み(※ PBRへインストール)
# syslinux --install /dev/sdz1

※ 新規書き込みでは -i ( --install )オ プションが必須となった模様。

  • MBRのブートストラップ部分を念の為に一旦クリア(0書き込み)
# dd if=/dev/zero of=/dev/sdz bs=440 count=1

※【注意】 of= での書き込み対象、及び bs=440 (bs=446 でもいいかな) を間違わないこと!

  • SYSLINUXのMBRブートストラップ書き込み
    • SYSLINUXファイルに含まれる、mbr/mbr.bin をカレントディレクトリに準備して
# dd if=mbr.bin of=/dev/sdz bs=440 count=1

※【注意】 of= での書き込み対象を間違わないこと!

一例

4.04 の tar.gz 版をダウンロード、インストール先が /dev/sdz1 の場合です。

Linux LiveCD などではUSBメモリが自動マウントされていることがあります。マウントされていてもSYSLINUXのインストールはできる様ですがアンマウントした方が多分安全かと。

root@PartedMagic:~# tar zxvf syslinux-4.04.tar.gz 

root@PartedMagic:~# cd syslinux-4.04/linux/

root@PartedMagic:~/syslinux-4.04/linux# syslinux
Usage: syslinux [options] device
  --offset     -t  Offset of the file system on the device 
  --directory  -d  Directory for installation target
  --install    -i  Install over the current bootsector
  --update     -U  Update a previous installation
  --zip        -z  Force zipdrive geometry (-H 64 -S 32)
  --sectors=#  -S  Force the number of sectors per track
  --heads=#    -H  Force number of heads
  --stupid     -s  Slow, safe and stupid mode
  --raid       -r  Fall back to the next device on boot failure
  --once=...       Execute a command once upon boot
  --clear-once -O  Clear the boot-once command
  --reset-adv      Reset auxilliary data
  --menu-save= -M  Set the label to select as default on the next boot
  --force      -f  Ignore precautions
  • SYSLINUX のインストール
root@PartedMagic:~/syslinux-4.04/linux# syslinux -i /dev/sdz1

実行できない場合は実行権限の確認 (chmod +x)、./syslinux で実行

  • MBRブートストラップをクリア
root@PartedMagic:~/syslinux-4.04/linux# dd if=/dev/zero of=/dev/sdz bs=440 count=1
  • MBRブートストラップ書き込み
root@PartedMagic:~/syslinux-4.04/linux# cd ../mbr
root@PartedMagic:~/syslinux-4.04/mbr# ls
Makefile        altmbr_f.bin    gptmbr_f.bin    isohdppx.S      mbr.bin
adjust.h        checksize.pl*   isohdpfx.S      isohdppx.bin    mbr.ld
altmbr.S        gptmbr.S        isohdpfx.bin    isohdppx_c.bin  mbr_c.bin
altmbr.bin      gptmbr.bin      isohdpfx_c.bin  isohdppx_f.bin  mbr_f.bin
altmbr_c.bin    gptmbr_c.bin    isohdpfx_f.bin  mbr.S           oldmbr.asm

root@PartedMagic:~/syslinux-4.04/mbr# dd if=mbr.bin of=/dev/sdz bs=440 count=1
1+0 records out
440 bytes (440 B) copied, 0.0255182 s, 17.2 kB/s
ms-sys が入ってるなら

ms-sys はKnoppix、SystemRescueCd、Parted Magic、BG-Rescue Linux(FD版もあり)などのLiveCDに入ってます。

# syslinux -i /dev/sdz1
# ms-sys -z /dev/sdz
# ms-sys -s /dev/sdz

-z は一旦MBRの先頭446バイトをクリア、-s はSYSLINUXブートストラップ書き込み

めも
Linux LiveCD などでのバージョン確認

一例ですが。

root@PartedMagic:~# whereis syslinux
syslinux: /usr/bin/syslinux /usr/X11R6/bin/syslinux /usr/X11/bin/syslinux /usr/share/syslinux
root@PartedMagic:~# strings /usr/bin/syslinux | grep SYSLINUX
SYSLINUX
SYSLINUX
SYSLINUX 4.04 
SYSLINUX 4.04 2011-04-18
MODE_SYSLINUX
MODE_SYSLINUX_DOSWIN
install-mbr コマンドがあるなら

mbr パッケージに含まれる install-mbr コマンドでも ブートストラップ書き込みが可能です。

# dd if=/dev/zero of=/dev/sdz bs=446 count=1
# install-mbr /dev/sdz
# syslinux -i /dev/sdz1
パーティションを一から切りなおす

※念のために、DDforWindowsなどで全体のイメージファイルをバックアップしておきませう。

意味わからない人はやらない方がいいかも。間違うとエライことになるので。USBメモリが/dev/sdz の場合です。

  • パーティションテーブルを含めMBRから第1パーティションの先頭セクタあたり?までをクリア(0書き込み)
# dd if=/dev/zero of=/dev/sdz bs=512 count=64

※install-mbrコマンドの実行が必要な場合もあるかな?mbr パッケージは Knoppix 5.x、SystemRescueCd、INSERT などのLiveCDにも入ってます。

fdiskやGPartedなどでパーティション作成(boot指定も)、FAT(16 or 32)でフォーマット後にSYSLINUXのインストール

isohybrid

まだあんまり多くないようですが、こんなのもあります。

isoイメージがUSBメモリ用などとの兼用になってるという... イメージ書き込みツールでisoをUSBメモリへ一発書き込みするだけでブート可能なUSBメモリが出来上がるのです。

現状で私が知ってるのは下記だけだったりしますが。

ただ、これは一時使用には簡単で便利ですがそのままだと短所もあったり。

  • Windows 上でUSBメモリが使えないとか
  • ファイルシステムがiso9660だったりとか

拙作めも


ほなね