Palm84 某所の日記

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

KNOPPIX 5.0.1 CD で Windows XP のファイル救出

【注意】バージョン 5.x での確認です。6 以降ではかなり変わってるのであんまり参考にならないかも。

2008.5.5 書き直しました。
2007.1.26 KNOPPIX 5.1.1 CD について

5.1.1 CDを試してみました。

Sambaの設定ですが、起動させるとマウントされたすべてのドライブのパスがSambaサーバの設定ファイルである smb.conf に自動的に追記されてましたので、このページに書いている smb.conf の編集作業は必要ないと思われます。

とりあえず書いとこ。Windows XP がどうしても起動しない場合のファイル救出手段としてです(※もちろんCDブートが可能でなければだめですけど)。この KNOPPIX CD でブートした場合の利点は下記の通りかな?

  • ハードディスク及びUSBメモリなどのマウント(認識させて利用)が簡単
  • NTFSパーティションもOK
  • 日本語名ファイルもOK(MS-DOSのロングファイルネームなどの制限もなし)
  • Windowsネットワークからの操作も簡単

※ 尚、KNOPPIX5.3.1CDのリリースは2008年3月です。それ以降に発売された新しい規格には対応していないかもしれませぬ。最近のPCでは、内蔵Serial ATAドライブから起動できないとか(※ USB CDやUSBメモリならできたり)、起動はしてもHDを認識できないこともあります。

CDの作成

KNOPPIX日本語版CDをダウンロード(※ ファイル名間違えないよう!)

最新版リストからKNOPPIX日本語版5.1.1CDをダウンロード

※ 5.3.1 がオヌヌメ!

※700MB CD-R(RW)に焼くこと。

CD/DVDライディング・ソフトでisoファイルを「イメージファイル」として指定して焼きませう。

または、「CDRecord フロントエンド」で焼くとかでも...

  1. CDRtoolsの フロントエンド
  2. 「CDRecordフロントエンド本体」と「CDRtoolsバイナリ」をダウンロード
  3. それぞれ展開(解凍)したファイルを同じフォルダに保存
  4. 「cdrecord_fe.exe」を実行「ディスクイメージをメディアに書き込む」

ブート時にUTF-8オプション指定

5.0.1, 5.1.1 の場合です。5.3.1 では不要。

thanks to hanazukin さん

ファイル名に機種依存文字(丸付き数字)を使用したファイル/フォルダを作成して確認してみました。オプションを指定しない場合(EUC)はこれらのファイル/フォルダを全く表示できませんでした(NTFSな場合)。UTF-8を指定するとファイルマネージャ(Konqueror)での表示、USBメモリなどへのコピーも可能となりました。

尚、産総研版 5.3.1CD ではUTF-8がデフォルト、Knoppix 日本語版(LCR版)5.1.1(ライブCDの部屋さん版)では、UTF-8がデフォルト、ブート時のキーボード配列もjp106仕様となってます。

起動時の画面で boot: に続けて下記を入力

knoppix lang=ja.utf8

【ご注意】この時、キーボードがUS配列。[=] は 一つ右の [へ] です。

他の機種依存文字では確認してないので確実にすべてOKなのかどうかは?ですけど...。Root Shell から cp -r(※サブディレクトリも含め再帰的にコピー) で親ディレクトリをコピーするのが確実かもしれません。

※にょろ(〜 全角チルダ)や半角カタカナを含むファイル名、「年表.xls」などは問題ありませんでした。

ハードディスクとUSBメモリのマウント

デバイスは自動認識されてデスクトップにアイコンが浮かんでますので、そのアイコンをクリックすればマウントされます。同時に Konqueror(Windowsのエクスプローラみたいなの) が起動しますので内容を確認しておきます。

※KNOPPIX起動後にUSBメモリなどを接続した場合は書き込み可能でマウントされるようです。

アイコンクリックでマウントできない

Windowsが正常にシャットダウンされなかった場合、「ダーティ・フラグ」が付くようです。Linuxでマウントしようとすると ERROR: Volume is dirty などと警告が出てマウントできないことがあります。回復コンソールからchkdskで治るかもしれませんが、余計におかしくなったり、トドメさしちゃう可能性もあるので判断難しいけど、安全のために読み取り専用でマウント試すべきかなぁと。(一概に言えませんけど。)

「カシャーン」とか音がしてマウントできないとか。Windowsがエラーで起動できない時などはマウントできないかもしれません。以下のコマンドを試して見てください。

※デスクトップのアイコンが【Hard Disk [hda1]の場合】、コンソールから

$ cat /etc/fstab      ---------【/dev/hda1】の列があるか確認
$ sudo umount /dev/hda1 ------- 念の為にアンマウント
$ sudo mount -o ro /dev/hda1 -- 読み取り専用でマウント試す

fstab に記述がないとかだとHDに異常あるかも?また、デスクトップにアイコンが無い場合は認識されてないかも?再起動して再度試すか、別のLiveCDを使うか?この手の情報に精通してる人に相談した方がいいかもしれません。壊れかけの場合は下手にいじるとトドメを挿しちゃう場合があるので(まぁ一概にいえませんけど)。

  • hda -(※IDE接続の)1台目のハードディスクドライブ。通常プライマリマスタ。
  • hda1 -(※IDE接続の)1台目のハードディスクドライブの1番目のパーティション
  • sda(sdb...) - Serial ATA, SCSI, USB接続の(HD)ドライブ

※通常 Windows上のCドライブは hda1 または sda1 となる場合が殆ど多いですが、メーカー製パソコンなどはリカバリ用隠しパーティションがあったりするので hda2, hda3 (sda2, sda3) とかになることもあるかと。とりあえず内容も確認しましょう。USBフロッピーが sda、USBメモリが sdb になったりすることもあります。

メーカー製パソコンの例

  • VAIOの一例
    • hda1 - リカバリー領域 (NTFS)
    • hda2 - Windows上のCドライブ (NTFS)
    • hda5 - Windows上のDドライブ (NTFS)
  • DELLの一例
    • hda1 - リカバリープログラム (FAT)
    • hda2 - Windows上のCドライブ (NTFS)
    • hda3 - リカバリーイメージ (FAT32)
  • DELLの一例
    • sda1 - 診断プログラム (FAT)
    • sda2 - リカバリー領域 (FAT32)
    • sda3 - Windows上のCドライブ (NTFS)
    • sda5 - Windows上のDドライブ (NTFS)

このままですと、読み取り専用マウントとなってるので、USBメモリ(など)を書き込み可能に設定変更します。

  1. 「sda」(など)のアイコンを右クリック
  2. 「Change read/write mode」をクリック

これでUSBメモリへのファイルのコピーが可能になります。

【追記】尚、SDメモリ/メモリースティック用PCカード型アダプタは hde1(マウントポイントは /mnt/hde1)で認識されました。USBメモリがない場合はデジカメ用などのフラッシュメモリ使ってもいいかも。USB接続カードリーダ(またはカードリーダ付プリンタ等)はおそらく sdx で認識されると思います。(一番いいのはUSB接続ハードディスクですけどね...)

LAN接続ハードディスクなどへコピーする場合は、Konquerorのメニューの「移動」(「進む」)から「ネットワークフォルダ」「Samba共有」

【追記】デジカメ(リムーバブルデバイスとして使えるもの)とかをUSBで直接繋ぐって手もありますね。これも sdnで認識されるはずです。(※容量が小さいとアレですが...)

※コンソールから mount コマンドを実行した場合はrootでなくても書き込み可能でマウントされるようです。

マウントのオプション確認

ハードディスク及びUSBメモリでは問題ないようですが、メモリカード用PCカードアダプタではKNOPPIX上で保存した日本語名ファイルが Windows 上では文字化けしたりしました。コードページ・文字セットオプションが指定されていないことが原因のようです。日本語名ファイルが保存されていないディスクではマウント時にオプションが正しく設定されないようです

  • コンソール(パネル = タスクバー のモニターアイコン)から mount コマンドで確認
$ mount
<省略>
/dev/hda1 on /media/hda1 type fuse (ro,nosuid,nodev,default_permissions,allow_other,user=knoppix)
/dev/hda2 on /media/hda2 type vfat (rw,nosuid,nodev,umask=000,shortname=winnt,uid=1000,gid=1000,iocharset=utf8,codepage=932)
/dev/hde1 on /mnt/hde1 type vfat (rw,nosuid,nodev)
/dev/sda on /media/sda type vfat (rw,nosuid,nodev,umask=000,shortname=winnt,uid=1000,gid=1000,iocharset=utf8,codepage=932)

(※type vfatのうち)/dev/hde1のオプションが指定されていないのでマウントし直します。コンソールで以下を実行。

$ sudo umount /dev/hde1
$ sudo mount -t vfat -o rw,uid=1000,gid=1000,iocharset=utf8,codepage=932,shortname=winnt /dev/hde1 /mnt/hde1

【追記】FAT(16/32)パーティションのファイル名のアルファベット大文字をそのままコピーするには、オプションshortname=winntが必要でした。

  • mount コマンドで確認
$ mount
<省略>
/dev/hda1 on /media/hda1 type fuse (ro,nosuid,nodev,default_permissions,allow_other,user=knoppix)
/dev/hda2 on /media/hda2 type vfat (rw,nosuid,nodev,umask=000,shortname=winnt,uid=1000,gid=1000,iocharset=utf8,codepage=932)
/dev/sda on /media/sda type vfat (rw,nosuid,nodev,umask=000,shortname=winnt,uid=1000,gid=1000,iocharset=utf8,codepage=932)
/dev/hde1 on /mnt/hde1 type vfat (rw,uid=1000,gid=1000,iocharset=utf8,codepage=932,shortname=winnt)

※オプションの rw は書き込み可能。ro は読み取り専用となります。

Windows ネットワークからアクセス

別のWindowsマシンがあるなら割と簡単。

ルータのDHCPサーバ機能が有効ならTCP/IPの設定は自動設定されますが、手動設定する場合はコンソールから netcardconfig & で。

ネットワークカードの手動設定

デバイス名の確認。コンソール(パネル = タスクバー のモニターアイコン)で以下を入力。

$ dmesg | grep eth
eth1394: eth0: IEEE-1394 IPv4 over 1394 Ethernet (fw-host0)
eth1: VIA Rhine II at 0xdffffe00, 00:40:45:**:**:**, IRQ 11.
eth1: MII PHY found at address 1, status 0x7869 advertising 05e1 Link 45e1.
eth1: link up, 100Mbps, full-duplex, lpa 0x45E1
eth1: no IPv6 routers present

IEEE-1394 が eth0 となってるので、eth1 であることがわかります。

$ netcardconfig &

eth1 を選択、DHCPはNoにしてそれぞれの値を入力。

Samba サーバの起動
  1. KNOPPIXメニュー(ペンギンアイコン)ServicesStart Samba Server
  2. 任意のパスワードを入力
  3. 次の画面でYesで書き込み可能に(マウントの設定次第です)
smb.conf を編集

【追記】ホームディレクトリにリンク張る方が簡単ですね。すみません...

$ ln -s /media /home/knoppix
$ ln -s /mnt /home/knoppix

KNOPPIX 5.1.1 CD では、起動させるとマウントされたすべてのドライブのパスがsmb.conf に自動的に追記されてましたので、smb.conf の編集作業は必要ないと思われます。確認は、cat /etc/samba/smb.conf で。

hda1 と hda2 にアクセスさせたい場合

コンソール(パネル = タスクバー のモニターアイコン)を起動

  1. sudo kwrite /etc/samba/smb.conf と入力
  2. smb.conf が開くので 文末に以下を追記
[hda1]
    path = /media/hda1
[hda2]
    path = /media/hda2

保存して終了。Sambaサービスを再起動。コンソールで以下を入力

sudo /etc/init.d/samba restart

KNOPPIXのIPアドレスを確認。「eth0」または「eth1」。(※IEEE1394端子がある場合は「eth1」になったりします。)

$ ifconfig
<省略>
eth1      Link encap:Ethernet  HWaddr 00:40:45:**:**:**
          inet addr:192.168.0.12  Bcast:192.168.0.255  Mask:255.255.255.0
<省略>

Windowsマシンで「Microsoft ネットワーク用クライアント」(Workstationサービスも)を有効に、ファイル名を指定して実行から[\\192.168.0.12]でアクセス可能になる筈です。(※ユーザ名は「knoppix」パスワードは設定したもので)

※読み取り専用でマウントした場合、ネットワーク上では一旦削除されるように見える場合がありますが実際には削除されません。

ネットワークから書き込み(削除)可能でマウント

LinuxのNTFS書き込み対応はまだまだ不安な面もあるので(?)あくまで自己責任にて...

※【追記】KNOPPIX 5.1.1 CD では smb.conf の編集は不要でした。

USBメモリの場合と同様に、KNOPPIX上で書き込み可能でマウント。smb.conf を編集して、Sambaサービスを再起動。

smb.conf を編集

$ sudo kwrite /etc/samba/smb.conf
[hda1]
    path = /media/hda1
    read only = no
    create mask = 0775
    directory mask = 0775
    writable = yes

[hda2]
    path = /media/hda2
    read only = no
    create mask = 0775
    directory mask = 0775
    writable = yes

memo

$ mount
/dev/root on / type ext2 (rw)
/ramdisk on /ramdisk type tmpfs (rw,size=478720k)
/UNIONFS on /UNIONFS type unionfs (rw,dirs=/ramdisk=rw:/KNOPPIX=ro,delete=whiteout)
/dev/hdc on /cdrom type iso9660 (ro)
/dev/cloop on /KNOPPIX type iso9660 (ro)
/proc on /proc type proc (rw)
/proc/bus/usb on /proc/bus/usb type usbfs (rw,devmode=0666)
/dev/pts on /dev/pts type devpts (rw)
$ ls -l /mnt
合計 1
lrwxrwxrwx 1 root root   11 2007-01-11 23:12 hda1 -> /media/hda1
lrwxrwxrwx 1 root root   11 2007-01-11 23:12 hda2 -> /media/hda2
lrwxrwxrwx 1 root root   11 2007-01-11 23:12 hda3 -> /media/hda3
lrwxrwxrwx 1 root root   11 2007-01-11 23:12 hda4 -> /media/hda4
drwxr-xr-x 2 root root 1024 2007-01-11 23:12 hde1
lrwxrwxrwx 1 root root   10 2007-01-11 23:12 sda -> /media/sda
lrwxrwxrwx 1 root root   10 2007-01-11 23:12 sdb -> /media/sdb
$ ls -l /media
合計 10
drwxr-xr-x 2 root root 1024 2007-01-11 23:12 cdrom
drwxr-xr-x 2 root root 1024 2006-02-22 08:07 fd0
drwxr-xr-x 2 root root 1024 2006-02-22 08:07 hd
drwxr-xr-x 2 root root 1024 2007-01-11 23:12 hda1
drwxr-xr-x 2 root root 1024 2007-01-11 23:12 hda2
drwxr-xr-x 2 root root 1024 2007-01-11 23:12 hda3
drwxr-xr-x 2 root root 1024 2007-01-11 23:12 hda4
drwxr-xr-x 2 root root 1024 2007-01-11 23:12 sda
drwxr-xr-x 2 root root 1024 2007-01-11 23:12 sdb
drwxr-xr-x 2 root root 1024 2006-02-22 08:07 test
$ cat /etc/fstab
/proc      /proc       proc   defaults            0 0
/sys       /sys        sysfs  noauto              0 0
/dev/pts   /dev/pts    devpts mode=0622           0 0
/dev/fd0   /media/fd0  auto   user,noauto,exec,umask=000    0 0
/dev/cdrom /media/cdrom  auto   user,noauto,exec,ro 0 0
/dev/hde1 /mnt/hde1 auto user,exec,noauto 0 0
# Added by KNOPPIX
/dev/hda1 /media/hda1 ntfs noauto,users,exec,umask=000,uid=knoppix,gid=knoppix,nls=utf8 0 0
# Added by KNOPPIX
/dev/hda2 /media/hda2 vfat noauto,users,exec,umask=000,shortname=winnt,uid=knoppix,gid=knoppix,iocharset=utf8,codepage=932 0 0
# Added by KNOPPIX
/dev/hda3 /media/hda3 auto noauto,users,exec 0 0
# Added by KNOPPIX
/dev/hda4 /media/hda4 ext3 noauto,users,exec 0 0
# Added by KNOPPIX
/dev/sda /media/sda vfat noauto,users,exec,umask=000,shortname=winnt,uid=knoppix,gid=knoppix,iocharset=utf8,codepage=932 0 0
# Added by KNOPPIX
/dev/sdb /media/sdb ext2 noauto,users,exec 0 0
  • 「KNOPPIXの設定を保存」 - KNOPPIXメニュー→Configure→KNOPPIXの設定を保存
    • ※スクリプトの保存先パスが /mnt/floppy/ となっているのでフロッピーに保存する場合はマウントポイントの変更が必要かも。(※ 5.1.1 CD では /media/fd0
  • USBフロッピーはHard Disk[sdn]で認識されるのでデスクトップのフロッピーアイコンをクリックしてもマウントされない
  • dosフロッピー
$ cat /etc/fstab | grep sdb
/dev/sdb /media/sdb vfat noauto,users,exec,umask=000,shortname=winnt,uid=knoppix,gid=knoppix,iocharset=utf8,codepage=932 0 0
$ mount | grep sdb
/dev/sdb on /media/sdb type vfat (ro,nosuid,nodev,umask=000,shortname=winnt,uid=1000,gid=1000,iocharset=utf8,codepage=932)
  • ext2フロッピー
$ cat /etc/fstab | grep sdb
/dev/sdb /media/sdb ext2 noauto,users,exec 0 0
$ mount | grep sdb
/dev/sdb on /media/sdb type ext2 (ro,nosuid,nodev)

テキストモードで起動

X(GUI)が起動できない時とか。慣れてる人は案外こっちの方が簡単だったりするかも。

ブートオプション
boot: knoppix lang=ja.utf8 keyboard=jp106 2

コマンドの英語メッセージは多分文字化けするので、コマンドの先にLANG=Cを付けて実行。親ディレクトリを指定して日本語名ファイル(機種依存文字など含む)のコピーが可能です。

5.0.1ではjfbtermの実行でコンソール上で日本語ファイル名表示が可能。

※日本語名ファイルの救出が不要なら、lang=usを指定すれば英語メッセージは正常に表示可能。但し、日本語名ファイルはすべて非表示となりコピーも不可。(※lang=jaを指定した場合は機種依存文字を含む日本語名ファイルの救出が不可でした。)

※テキストモードで日本語表示/入力したい場合はslax-jaを使う方がいいかと。

マウントポイント/オプションの確認
# cat /etc/fstab

/proc      /proc       proc   defaults            0 0
/sys       /sys        sysfs  noauto              0 0
/dev/pts   /dev/pts    devpts mode=0622           0 0
/dev/fd0   /media/fd0  auto   user,noauto,exec,umask=000    0 0
/dev/cdrom /media/cdrom  auto   user,noauto,exec,ro 0 0
# Added by KNOPPIX
/dev/hda1 /media/hda1 ntfs noauto,users,exec,umask=000,uid=knoppix,gid=knoppix,nls=utf8 0 0
# Added by KNOPPIX
/dev/hda2 /media/hda2 vfat noauto,users,exec,umask=000,shortname=winnt,uid=knoppix,gid=knoppix,iocharset=utf8,codepage=932 0 0
# Added by KNOPPIX
/dev/hda3 /media/hda3 auto noauto,users,exec 0 0
# Added by KNOPPIX
/dev/hda4 /media/hda4 ext3 noauto,users,exec 0 0
# Added by KNOPPIX
/dev/sda /media/sda vfat noauto,users,exec,umask=000,shortname=winnt,uid=knoppix,gid=knoppix,iocharset=utf8,codepage=932 0 0
マウント実行
# mount /dev/hda1
# mount /dev/hda2
# mount /dev/sda
マウント状態確認
# mount

/dev/root on / type ext2 (rw)
/ramdisk on /ramdisk type tmpfs (rw,size=478704k)
/UNIONFS on /UNIONFS type unionfs (rw,dirs=/ramdisk=rw:/KNOPPIX=ro,delete=whiteout)
/dev/hdc on /cdrom type iso9660 (ro)
/dev/cloop on /KNOPPIX type iso9660 (ro)
/proc on /proc type proc (rw)
/proc/bus/usb on /proc/bus/usb type usbfs (rw,devmode=0666)
/dev/pts on /dev/pts type devpts (rw)
/dev/hda1 on /media/hda1 type fuse (rw,nosuid,nodev,default_permissions,allow_other)
/dev/hda2 on /media/hda2 type vfat (rw,nosuid,nodev,umask=000,shortname=winnt,uid=1000,gid=1000,iocharset=utf8,codepage=932)
/dev/sda on /media/sda type vfat (rw,nosuid,nodev,umask=000,shortname=winnt,uid=1000,gid=1000,iocharset=utf8,codepage=932)

書き込み可能状態でマウントされてました。(rootで実行してるからかな?

日本語名ファイルは文字化けするので、親ディレクトリをコピーする(※保存は正常)。

# cp -r "/media/hda1/Documents and Settings/palm erooyaji/My Documents" /media/sda

【追記】(5.0.1のみ)日本語表示可能なコンソールの起動も可能でした。すみません...

# jfbterm

パスにスペースを含む場合は、スペースの直前にバックスラッシュ[\]を打つか、パス全体をダブルクォート["]で囲む。(数文字入力してTABキーの補完機能を使うと楽)

※Windows上の[\] は Linux 上ではバックスラッシュ[\]

Windowsマシンが別にあるなら、Samba を起動させてWindows側からアクセスした方がコピー操作は簡単かも。機種依存文字を含む日本語名ファイルも表示可能でした。

smb.conf の編集

【追記】ホームディレクトリにリンク張る方が簡単ですね。すみません...

# ln -s /mnt /home/knoppix
# ln -s /media /home/knoppix
  • パスを追記
# cat <> /etc/samba/smb.conf
> [hda1]
> path = /media/hda1
> [hda2]
> path = /media/hda2
> [sda]
> path = /media/sda
> END
  • 確認
# tail /etc/samba/smb.conf
<省略>
[hda1]
path = /media/hda1
[hda2]
path = /media/hda2
[sda]
path = /media/sda
パスワードの設定
# smbpasswd -a knoppix

パスワードを2回入力

Samba サーバ 起動
# /etc/init.d/samba start
IPアドレス確認
# ifconfig -a
<省略>
eth1      Link encap:Ethernet  HWaddr 00:40:45:**:**:**
          inet addr:192.168.0.12  Bcast:192.168.0.255  Mask:255.255.255.0
<省略>

Windows マシンから \\192.168.0.12 でアクセスする。ユーザ名は「knoppix」、パスワードは設定したもので。

起動できない時

isoイメージの確認

MD5の確認

CDの確認

きっちり焼けているかどうか

ブート時に boot: に続けて knoppix testcd と入力

LABEL - failsafe - で起動確認

ブート時に boot: に続けて failsafe と入力して起動するか確認。

LABEL failsafe では下記のオプションが指定されている。かなり制限された環境になるが起動できるかもしれない。

vga=normal atapicd nosound noapic noacpi pnpbios=off acpi=off nofstab noscsi nodma noapm nousb nopcmcia nofirewire noagp nomce nodhcp xmodule=vesa

ブート時に boot: に続けて knoppix noapic noacpi acpi=off などとと入力して起動確認。どのオプション(の組み合わせ)で起動可能になるか何度も試してみる。

これでも駄目だと、CDドライブが未対応(最新ドライブとかとか相性あるかも)、或いは不良(?)なのかもしれない。slax-ja, や Berry Linux, [CDlinux] など他の日本語版LiveCDを試した方がいいかもしれません。