Palm84 某所の日記

死のうは一定、しのびクマには何しよぞ...

USBメモリでブートいろいろ - Puppy Linux 編

【2010.2.9】 バージョン 4.3.1 JP での方法について追記

とりあえずWindows上での作成方法をめも。puppy-2.16.1-JP.isoでの確認。128MB以上のUSBメモリでおk。

※ あっと、Windows上での作成は楽ではありますが、CDブートして Puppy Linux 上で作成する方が色々融通がきくので常用するには便利です。このページのやり方はあくまで「とりあえず」ということで。

INDEX

参考ページ

USBメモリ版作成

ISOイメージの展開

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

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

※CDに焼いたり、仮想ドライブ、WinRAR などでは、ファイル名がすべて大文字8.3形式になっちゃうので注意。 pup_412JP.sfsPUP_412J.SFS になってしまいます。

ファイルをコピー

【追記】注意:USBメモリブートに対応していてもFAT32フォーマットがだめな場合もあるので、その際はFAT(16)フォーマット(※パーティションは2GB以下)で。

  • isoファイルを展開
  • USBメモリへすべてコピー
    • boot.catisolinux.binは不要ですけど
  • isolinux.cfgsyslinux.cfgにリネーム
  • syslinux.cfgをテキストエディタ(メモ帳はだめ。ワードパッドはおk)で開き、pmedia=cdpmedia=usbflashに変更
SYSLINUXのインストール
  1. Index of /pub/linux/utils/boot/syslinuxRingミラー)から syslinux-x.xx.zip をダウンロード
  2. ファイルを解凍
  3. win32\syslinux.exe をUSBメモリのルートへコピー
  4. コマンドプロンプト(※ Vista /7 では「管理者として実行」すること)を起動
  5. USBメモリに対して syslinux.exe コマンド実行

ドライブレターを間違うとWindowsが起動しなくなる場合がありますのでご注意!

<USBメモリのドライブレター>:
syslinux.exe -ma <USBメモリのドライブレター>:

USBメモリのドライブレターが仮にX:だとするとこんなかんじ。

C:\Documents and Settings\yassy>x:

X:\>syslinux.exe -ma x:

何もメッセージが出なければおk

【追記】バージョン 4.3.1(日本語版) では...

ブートローダーが SYSLINUX から GRUB for DOS に変更されてますね。というわけで、あくまでpalm84流の邪道的手段(何)ですが...

  • 変更点:
    1. SYSLINUX から GRUB for DOS をチェインロードさせませう
    2. isolinux.cfg はなしなので、syslinux.cfg をちょいちょいと作成

【追記】※ chain.c32 なしでもできますた。

  1. ISOイメージ展開ファイルをすべてコピー
  2. SYSLINUX をインストール(※ 上記参照)
  3. SYSLINUX に含まれる com32\modules\chain.c32 をコピー
  4. syslinux.cfg を作成 - 内容は下記の通り
  • syslinux.cfg
DEFAULT grub4dos
LABEL grub4dos
BOOT grldr
chain.c32 を使う場合は...
  • syslinux.cfg
DEFAULT chain.c32
APPEND file=grldr
  • USBメモリの内容
M:\>tree /f | sort

    AUTORUN.INF
    boot.catalog
    chain.c32
    grldr
    initrd.gz
    ldlinux.sys
    menu.lst
    pup-431JP.sfs
    PUPPYJP.ICO
    README.HTM
    READMEJA.HTM
    splash.xpm
    syslinux.cfg
    vmlinuz
    zp431305.sfs

menu.lst 内の pmedia=cdpmedia=usbflash に変更しておくともっと確実かな。

いんやぁー、GRUB for DOS を直接USBメモリへインストールするのが王道(何)という気がしますが、SYSLINUXならHD扱い・FD扱いどちらでも使えるので、ということで(※ 512 MB以下だと自動的にFD扱いになるBIOSもあったりします)。

f:id:palm84:20181222142929p:plain

HD上のmenu.lstが表示されちゃう場合は...

あるみたいですね。 grub.exe で menu.lst を直接指定してみますかな?

  1. USBメモリへSYSLINUXインストール
  2. Browse GRUB4DOS and WINGRUB Files on SourceForge.net
    • grub4dos-0.4.4.zip をダウンロード
  3. grub.exe をUSBメモリへコピー
  4. syslinux.cfg 作成
  • syslinux.cfg
DEFAULT grub.exe
APPEND --config-file="configfile /menu.lst"
menu.lst の修正

必須じゃないけど、USBメモリがBIOS上で第1HDとしてブートしてる場合は内蔵HDが第2HDとなってメニューの下記エントリが使えないので修正しておいた方がいいかもです。

title Bootup from HDD\nBootup from the master boot record of the hard disk drive
chainloader (hd0)+1

title Windows VISTA/2008/7\nStart Windows if installed on HDD
fallback 6
find --set-root --ignore-floppies /bootmgr
chainloader /bootmgr

title Windows NT/2K/XP\nStart Windows if installed on HDD
fallback 7
find --set-root --ignore-floppies /ntldr
chainloader /ntldr

title Windows 9x/Me\nStart Windows if installed on HDD
fallback 4
find --set-root /io.sys
chainloader /io.sys

修正分。

title Bootup from HDD\nBootup from the master boot record of the hard disk drive
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
chainloader (hd0)+1

title Windows VISTA/2008/7\nStart Windows if installed on HDD
fallback 6
find --set-root --ignore-floppies --ignore-cd /bootmgr
map () (hd0)
map (hd0) ()
map --rehook
find --set-root --ignore-floppies --ignore-cd /bootmgr
chainloader /bootmgr

title Windows NT/2K/XP\nStart Windows if installed on HDD
fallback 7
find --set-root --ignore-floppies --ignore-cd /ntldr
map () (hd0)
map (hd0) ()
map --rehook
find --set-root --ignore-floppies --ignore-cd /ntldr
chainloader /ntldr

title Windows 9x/Me\nStart Windows if installed on HDD
fallback 4
find --set-root --ignore-floppies --ignore-cd /io.sys
map () (hd0)
map (hd0) ()
map --rehook
find --set-root --ignore-floppies --ignore-cd /io.sys
chainloader /io.sys
ブート時のパラメータについて

うまく起動しない場合などLABEL(puppyのみ)と追加パラメータを指定する。

【追記】GRUB for DOS の場合は、kernel 行に追記します。コマンドラインでは e キーを押して編集モードにて。

  • acpi=off - 起動画面で止まってしまう時など、電源管理機能を無効に
  • pfix=ram - 保存された個人設定ファイル(pup_save*.2fs)を無視。つまり初期設定での起動
  • pfix=nox - コンソールモード。X(GUI)を起動しない(startxでX起動)
  • psubdir=puppy - 保存された個人設定ファイル(pup_save*.2fs)のディレクトリ名を指定
  • 例:(※ SYSLINUXの場合)
boot: puppy acpi=off
boot: puppy pfix=ram
boot: puppy acpi=off pfix=nox,ram

保存した設定などを選択して起動できるようになったみたいです?

4.1.1ではファイルが複数あると選択画面が出ます。ディレクトリを分けて psubdir を指定するってのもいいかも。

USBフラッシュドライブからブートする場合、「pmedia=usbflash」を指定するとパピーはCDドライブと他のドライブ(特にCDの検出は遅い)のプロービングに無駄な時間を使わなくても済みます。或は、「質素な」ide hdのインストールをする場合、「psubdir=puppy300 pmedia=idehd」を使えば、パピーはIDE-HDだけを検出し、「puppy300」フォルダの中だけを探します。この方法は特にマルチ「質素なインストール」に対して有効で、各「質素なインストール」を区別します。

下記ページはUSB(フラッシュメモリ)ブートの仕組みについて、大変参考になりました。

CDブートでUSBメモリを使う

う?んとですね、Puppyはフルインストールした場合を除き、ルートイメージをメモリにロードします。つまりオンメモリで動くのでCDであれUSBメモリであれ、“初回起動時は”外してしまえます(※ バージョン 4.3.1 ではだめみたいです)。

Puppy上で保存したファイルや設定は、差分ファイル(pup_save*.2fs)として追加で保存します。次回起動時には自動で検索されてマウントされます。この際差分ファイルが保存されたデバイスはアンマウントできません。

別PCで使う場合はUSBメモリに差分ファイルを保存して使うのが一般的だと思われます(マルチセッションCD-RWにも保存できたりしますが)。

USBブート非対応PC向けにCDブートでUSBメモリを使う方法をよく訊かれるのですが、通常のPuppy CDと差分ファイルを保存したUSBメモリを併用するのとあんまり変わらなかったりするような気がしないでもありません・・・てなかんじ。

とか言いつつ、書いてみるのでした。あ?しから?

USBブート非対応PC用起動ディスク(カーネル)を使う

これが使えたら、めちゃ楽なんですが、古いPCでは使えないことがあるんですよね・・・

めちゃ手抜き!
  1. 通常のPuppy CD でブート
  2. カーネルとinitrdのロード後、「Ok, booting the kernel」のメッセージが出たら、CDを抜いてしまう...

Puppyはオンメモリで起動するから、あんま意味ないかも。

ブートプロンプトで追加パラメータを指定
  • 通常のPuppy CD でブート
  • ブートプロンプトで puppy pmedia=usbflash とか入力

これも、あんま意味ないかも。

ルートイメージを削除したCDを再作成

50 MBサイズとか名刺型CDとか使う場合。これは意味あるかも?(でも名刺型CDはブック型PCで使えなかったりすることもあるけど)

  • バッチファイル makeiso.bat 作成
@echo off
echo isoイメージ作成開始します...
pause
mkisofs -v -l -r -J -o ../puppy.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .
echo.
if ERRORLEVEL 1 (echo          ...なんかエラー出たみたいです orz...) else (
echo          *** 正常に終了しますた! ***)
echo.
pause
  • 適当なディレクトリに下記をコピー(※ファイル名はすべて小文字で)
  • cygwin1.dllmkisofs.exe は下記ページの【CDRtoolsバイナリ】をダウンロード
boot.msg
cygwin1.dll 
initrd.gz
isolinux.bin
isolinux.cfg
makeiso.bat 
mkisofs.exe 
vmlinuz

makeiso.batを実行すると、一つ上のディレクトリにpuppy.isoが作成されるのでこれをCDに焼きませう...

日本語名ファイルについて

「pup_save」ファイルが保存され、Puppy上で自動マウントされてるUSBメモリなどの話...

Puppy上で保存した日本語名ファイルは、Windows上では文字化けするかも?、逆にWindows上で保存した日本語名ファイルはPuppy上では文字化けするかも。

「pup_save」ファイルが保存されてるUSBメモリなどにファイルを保存する場合は注意!