Palm84 某所の日記

有為のクマにかくれり~

KNOPPIX をCDなしで起動する方法をいろいろ試しためも

すみません。追記しまくりでぐちゃぐちゃです。

【9.30】書き直しました。すみません。
目次

う?んと、出番があるかはよくわかりませんが、高齢の(誰がや!w)恒例のあまり役に立ちそうにないマイノリティ向けレポートでござる。...いい意味で(何)

CDドライブのないパソコンで、Windowsの設定など既存環境は一切変えずにKNOPPIXを試したい場合とか。

結構面倒だったりするのではありますが...とりあえず試しためもです。

結論かますと...

パソコンが2台あるなら、ライブCDの部屋さん版のKNOPPIX Terminal Serverでネットワークブート。1台しかないなら、産総研版のinstall2winでハードディスクから(マルチ)ブートかUSB-KNOPPIXってかんじかな。

Windowsでisoファイルの展開

CDに一旦焼く、またはWinRARなどで展開。下記のツールも便利。

Windowsでフロッピーイメージの書き込み
Windowsでsyslinuxのインストール

zipファイルをダウンロードして展開。コマンド プロンプトで win32 ディレクトリに移動。下記コマンドを実行

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

※くれぐれもドライブレターを間違えないように!

Knoppix のブートの流れ

これを理解しておくと、環境に応じて色んな手段が取れます(※と言いつつ内容はあまり自信なし。ごめんなさい。)。こんな場合とか...

  • CDブートできない場合
  • CDブート可能だが、普通にCDブートしてしまうと起動後にCDドライブをアンマウントできないのでCD-R/RWを使用できない
  1. BIOSが対応しているブートデバイスを選択
    • HDドライブ
    • CDドライブ
    • FDドライブ
    • USBデバイス(FD/CD/HD/USBメモリなど)
    • ネットワーク
  2. ブートセクタ内のブートローダ(IPL)OSのブートローダが起動
    • isolinux (CD)
    • syslinux (USBメモリなど)
    • Grub (HD,FD,USBメモリなど)
    • (ネットワークブートではブート用ROMからpxelinux)
  3. ブートローダがkernelとinitrd(初期RAMディスク - 「ミニ」ルートイメージ)読み込み
  4. initrd をRAMディスク上に展開し(ミニ)ルート【/】としてマウント
    • デバイスの初期化など。ここでBIOSでは非対応のUSBなどの認識も可能に(サポートしていれば)
  5. Knoppix本体のルートイメージファイル(knoppixでは /KNOPPIX/KNOPPIX)を検索してルート【/】としてマウント
  • ※HDやUSBメモリなどパーティションがある場合は、MBR(マスターブートレコード)のブートローダ(ブートストラップローダ or Grubなど)が読み込まれてから(パーティションの)ブートセクタへ。またはGrubなどから直接kernelを読み込み。

kernelとinitrd読み込み後はUSBなどのデバイスの認識が可能になる。ブートさせるデバイス(ブートローダやkernelなど)とKnoppixイメージの場所はそれぞれ別でもよい。HDからブートしてCDやUSBメモリ内のイメージをルートしてマウント、CDからブートしてHDやUSBメモリ内のKnoppixイメージをマウントすることも可能。

注意点は、ブートデバイスとは別の場所のKnoppixイメージをマウントした際は、ブートデバイス側はマウントされないが、Knoppixイメージ側はアンマウントできない(HDの該当パーティションは書き込み可能でリマウントはできるがリカバリーイメージの復元はできない。日本語ファイル名は正しく表示されない)。

CDでブートしてHDのイメージをマウント

Windowsが健在ならGrub for DOSを使ってHDからブートした方が簡単ですが、Windowsがブートできず、Knoppix上でCD-Rドライブを使いたい場合など。

Knoppix起動後はCDを利用できる。

KNOPPIXディレクトリを削除したCDでブートするか、通常CDでブートしてオプションを指定する。

※無指定だと/dev/hdc などCDドライブが優先かな。

  • CDブート時にオプション指定
    • knoppix tohd=/dev/hda1
    • これでKNOPPIXディレクトリが指定したHD上にコピーされてマウントされる
    • 次回起動時のオプションは knoppix fromhd=/dev/hda1

または、

  • HDのパーティションのルートへKNOPPIXディレクトリを保存、ブート時にオプション指定
  • 例:knoppix bootfrom=/dev/hda2

多分、USBメモリなどのKnoppixイメージのマウントも可能なはず。/dev/sdaとか /dev/sda1,/dev/sdb1,...

これとは逆に、HDやPXEでブートしてUSBデバイスなどのルートイメージのマウントもできるはず?

最も便利なのは、ネットワークブートかな

(ネットワーク上のKnoppixイメージをマウントした場合ですけど)、CDも含めすべてのデバイスが制限されずに利用可能なので。

さらに便利&軽快動作は、イメージをオンメモリで

メモリは1GB以上必要ですが、非常に軽く動きます。デバイスの利用制限もなし。ブート手段は何でも。

  • オプション指定:knoppix toram

ネットワークブート

  • 必要条件は
    • 対象(ブートさせる)マシンがネットワークブート可能であること。または、対応のネットワークブート用ROMが使えること(USBやPCMCIAアダプタはだめ)
    • ネットワークで繋がったCDブート(または VMwareなどでisoイメージブート)可能な別マシン。あるいは、tftpd32などでPXEブート用サーバを設定。
KNOPPIX Terminal Server

別マシンでKNOPPIX(ライブCDの部屋さんバージョン)をブートさせてサーバマシンとします。

Windowsや別のLinux上でTerminal Serverを動かすには...

ポイントはNFSマウントをサポートしたkernelとinitrdを取り出すこと。

  • Knoppix(ライブCDの部屋さんバージョン)をブートしてTerminal Serverを起動
  • /tmp/tftpbootディレクトリをコピー
  • コピーしたファイルを参照してDHCP/TFTPサーバを設定(Windowsならtftpd32などで)
  • NFSサーバを設定(WindowsならシェアウェアですがhaneWINとか)
HTTP-FUSE-KNOPPIX

HTTP-FUSE-KNOPPIXをブートさせるならサーバマシンは低スペックでも可能です。でもクライアント側の動作はかなり重くてクセがあるのが難点かな?クライアント側のメモリは512MB以上必要。

HTTP-FUSE-KNOPPIX 使用時の注意点(アイコンクリックでマウントができないとか)はこっちに書いてます。

起動フロッピー

ネットワークブート非対応のマシンでも、NIC(LANアダプタ)が内蔵 or PCIボードなら起動フロッピー(またはCD)からネットワークブートできるかもしれません。Grub for DOS を設定すればHDやUSBメモリからネットワークブートも可能。

USBメモリ

USB-KNOPPIX の作成

これが本命ですかな。

  • 必要条件
    • ブート可能なUSBメモリ。サイズは1GB以上
    • 対象マシンがUSBブート可能であること

※本命と言いつつ実はやったことなかったり(汗)。

HTTP-FUSE-KNOPPIX なら8MB程なので少量サイズのメモリなどでも可能です(※ただ、前述の通りクセがあるのでご注意)。

フロッピー + ハードディスク

Windows 9x などの古めのマシンならこの方法が使えるかも(GUIを使うにはメモリは256MBないと苦しいと思いますけど)。元のisoイメージはライブCDの部屋さんバージョンを使いました。

えーえーこの方法の問題点なのですが、knoppixイメージを保存したパーティションは /cdrom としてマウントされます。日本語名ファイル/ディレクトリはすべて文字化けしてました。オプションを指定してリマウントしてもだめ。ということで専用パーティションを作ったほうがいいかも?

  • 必要条件
    • ブート可能なフロッピーディスクドライブ
    • 対象マシンがフロッピーディスクからブート可能であること
    • ハードディスクの空き容量1GB程

設定は以下3点

  1. GRUB起動ディスク作成(フロッピー)
  2. menu.lst(.txt) の編集
  3. ハードディスクへファイルをコピー
GRUB起動ディスク作成

(※FAT32ハードディスクの場合)Windowsで扱えるように下記サイトさんのFATイメージ版を使いました(NTFSはだめ)。

  1. 裏窓/03_BootFD - KemaSoftさんより grub092.img をダウンロード
  2. RawWrite for Windows でフロッピーへ書き込み
  3. KNOPPIX CD内のの boot\isolinux\isolinux.cfg を参照
  4. フロッピー内の boot\grub\menu.lst に項目を追記

元の menu.lst がこんなの。

#
# GNU grub configuration file
#

# global settings
timeout		30
default		0
color		yellow/blue yellow/cyan
--------以下略--------

こんなかんじに編集追記

#
# GNU grub configuration file
#

# global settings
timeout		30
default		0
color		yellow/blue yellow/cyan

# knoppix
title	KNOPPIX
kernel	(hd0,1)/boot/isolinux/linux ramdisk_size=100000 init=/etc/init lang=ja-utf8 im=scim apm=power-off vga=791 nomce loglevel=0 quiet BOOT_IMAGE=knoppix
initrd	(hd0,1)/boot/isolinux/minirt.gz

# knoppix
title	KNOPPIX fluxbox
kernel	(hd0,1)/boot/isolinux/linux ramdisk_size=100000 init=/etc/init lang=ja-utf8 im=scim apm=power-off vga=normal nomce loglevel=0 quiet BOOT_IMAGE=knoppix desktop=fluxbox
initrd	(hd0,1)/boot/isolinux/minirt.gz

# knoppix text mode
title	KNOPPIX text
kernel	(hd0,1)/boot/isolinux/linux ramdisk_size=100000 init=/etc/init lang=ja-utf8 im=scim apm=power-off vga=normal nomce loglevel=0 quiet BOOT_IMAGE=knoppix 2
initrd	(hd0,1)/boot/isolinux/minirt.gz
--------以下略--------

※【(hd0,1)】はあくまで私の環境での場合で、1台目のハードディスクの2番目の基本パーティション(Windows上ではDドライブとか)です。1台目1番目のパーティションなら【(hd0,0)】となります(※拡張パーティションの場合は(hd0,4)から)。起動できない場合はオプション指定の変更が必要になるかも。

【追記】NTFS対応GRUB起動ディスクイメージ

おぉすごいものを配布してくれてるサイトがありました。多謝。

ハードディスクがNTFSの場合はこちらを。「FAT FDイメージ」をダウソさせてもらいましょ。

ハードディスクへファイルをコピー
  • KNOPPIX CD内の boot 及び KNOPPIX ディレクトリを対象ドライブのルートへコピー

GRUBの選択画面でEnterでデフォルト設定(コードはUTF-8)のKNOPPIXが起動します。

USBメモリ + ハードディスク

【追記】産総研版の install2win を実行すれば、FD/CDともなしでハードディスクからの直接ブート(NTLDR→boot.iniで選択→GRUB)できました。なので、この方法はボツにすべきかな。すみません。

多分まだまだ確認が足りない気がしてます。bootfromオプションでisoイメージからブート可能なのではないかなと。成功してませんけど、力足りない。というか普通にUSBメモリのみでやるのが賢い選択だったりして(汗)。

えーとこの方法もちと問題ありーのです。ブート用ファイルをコピーしたパーティションが /cdrom としてマウントされます。この結果通常のマウント操作ができなくなるようです。/cdrom を開いた場合、日本語名ファイル/ディレクトリは、コンソール/Konqueror とも表示されませんでした(Samba上でも同じ)。専用パーティション作ったほうがよさそう。多分もっとうまい方法があると思われる次第です(汗ばっかし)。

GRUBはNTFSからkernelの読み込みができないようなので*1、syslinux + USBメモリを使いました。元のisoイメージはライブCDの部屋さんバージョンを使いました。

  • 必要条件
    • ブート可能なUSBメモリ
    • 対象マシンがUSBブート可能であること
    • ハードディスクの空き容量1GB程

設定は以下4点

  1. USBメモリへKNOPPIXのブート関連ファイルをコピー
  2. isolinux.cfgをsyslinux.cfgへリネーム
  3. USBメモリへ syslinux のインストール
  4. ハードディスクへファイルをコピー
USBメモリの設定
  • KNOPPIX CD内の boot ディレクトリboot\isolinuxディレクトリ内のファイルをUSBメモリのルートへコピー
  • boot\isolinux\isolinux.cfgをUSBメモリのルートへコピーして isolinux.cfgをsyslinux.cfg へリネーム
  • USBメモリへ syslinux をインストール
ハードディスクへファイルをコピー
  • KNOPPIX CD内の KNOPPIX ディレクトリを対象ドライブのルートへコピー

boot: プロンプトでEnterキーでデフォルト設定(コードはUTF-8)のKNOPPIXが起動します。起動ラベルなどはsyslinux.cfgを参照で。

ハードディスクのみ(Windows 2000/XP)

batファイルを使わず手動でする場合は

  • Grub for DOSのgrldrとmenu.lstをCドライブのルートへコピー
  • C:\boot.iniにGrubのエントリを追記
  • CD内のboot,KNOPPIXディレクトリをドライブのルートへコピー
  • menu.lstを編集

最初に試すべきものを忘れてました。すみませんすみません。「Windowsの設定など既存環境は一切変えずに」にではないのですけど、Windows 2000/XP 上から実行可能です。

boot.ini は書き換えられると言っても追記するだけなので問題ないと思います(残っても消せばいいだけなので)。MBR(のブートストラップ)は書き換えません。というわけで影響とか心配しなくてよさそうなかんじです?

【ご注意】但し、(Windows上の)Cドライブが/cdrom としてマウントされるので、やはり日本語名ファイル/フォルダが全く表示できません。(※FAT32だと文字化けかな?)

あと、この産総研版はなぜか Terminal Server がなぜか使えない(クライアントがブートできない)点がちょっと惜しいかな。

Grub for DOSをWindows XP/2000 のntldrから起動させます。

産総研版を使います。

  1. CD内の install2win.bat を実行。10分程でコピーが終わる
  2. 再起動すると、ブート選択画面(Windowsのboot.ini)が出る
  3. 「GNU GRUB for KNOPPIX」を選択すると、今度はGRUB画面が出現

産総研版の方はデフォルト euc-jp なので menu.lst に UTF-8 用も追記しとくといいかも。

私の環境では C:\menulst でした。

default=0 
timeout=10 
 
title KNOPPIX(ja,normal) 
root (hd0,0) 
kernel /knoppix/linux ramdisk_size=100000 init=/etc/init ro lang=ja vga=791 
initrd /knoppix/minirt.gz 
--- 省略 ---

こんなかんじで。

default=0 
timeout=10 
 
title KNOPPIX(ja,normal) 
root (hd0,0) 
kernel /knoppix/linux ramdisk_size=100000 init=/etc/init ro lang=ja vga=791 
initrd /knoppix/minirt.gz 

title KNOPPIX(UTF-8) 
root (hd0,0) 
kernel /knoppix/linux ramdisk_size=100000 init=/etc/init ro lang=ja.utf8 vga=791 
initrd /knoppix/minirt.gz 
--- 省略 ---

アンインストールは unsetup.bat の実行でいいようです。

これって ファイルをDドライブに移動してもブートできるかなぁ。Cドライブがきっちり見えないのは嫌なので...後で試してみます。

【追記の追記】

knoppixディレクトリを(Windows上での)CドライブからDドライブへ移動。menu.lstの root (hd0,0)root (hd0,1)に変更してブートしたところ、Cドライブのマウント/日本語ファイル名表示が可能になりました(/cdrom としてマウントされたDドライブは日本語ファイル名表示だめ)。マウントはデスクトップのアイコンからではなく、Konqueror移動記憶メディア、または /etc/fstab を確認してコマンドで。

※ファイルを入れ替えたらライブCDの部屋さん版もブートできましたー。

*1:もしできるなら誰か教えてクダサイクダサイ!→教えていただき感謝です。