FreeBSD disk on Ubuntu

投稿日:

FreeBSD機のデータ救出するためにUbuntu studio機につないでみた.

1. 認識

何はともあれ,dmesgを見てみる.

[    1.159211] scsi 3:0:0:0: Direct-Access     ATA      Hitachi HDS5C302 ML6O PQ: 0 ANSI: 5
[    1.159330] sd 3:0:0:0: Attached scsi generic sg2 type 0
[    1.159404] sd 3:0:0:0: [sdb] 3907029168 512-byte logical blocks: (2.00 TB/1.81 TiB)
[    1.159504] sd 3:0:0:0: [sdb] Write Protect is off
[    1.159507] sd 3:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[    1.159550] sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    1.184219]  sdb: sdb1
[    1.184219]  sdb1: <bsd: sdb5 sdb6 sdb7 sdb8 sdb9 sdb10 >

しっかりFreeBSDのパーティション (bsd: sdb5 sdb6 sdb7 sdb8 sdb9 sdb10) を認識してる.

2. マウント

順番にマウントしてみる.

root@dahlia:/# uname -a
Linux dahlia 3.11.0-14-lowlatency #6-Ubuntu SMP PREEMPT Wed Nov 20 23:59:04 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
root@dahlia:/# mount -r -t ufs -o ufstype=ufs2 /dev/sdb5 /mnt
root@dahlia:/# ls /mnt
COPYRIGHT  boot.config  entropy  home     media  rescue  sys  var
bin        compat       etc      lib      mnt    root    tmp
boot       dev          export   libexec  proc   sbin    usr
root@dahlia:/# umount /mnt
root@dahlia:/# mount -r -t ufs -o ufstype=ufs2 /dev/sdb6 /mnt
mount: 間違ったファイルシステムタイプ、不正なオプション、
       /dev/sdb6 のスーパーブロックが不正、コードページまたは
       ヘルパープログラムの未指定、或いは他のエラー
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

root@dahlia:/# mount -r -t ufs -o ufstype=ufs2 /dev/sdb7 /mnt
root@dahlia:/# ls /mnt
bin     include  libexec  ports  src             src_R83p4.tar.gz
compat  lib      local    sbin   src_82R.tar.gz  src_R83p8
games   libdata  obj      share  src_R83p4
root@dahlia:/# umount /mnt
root@dahlia:/# mount -r -t ufs -o ufstype=ufs2 /dev/sdb8 /mnt
root@dahlia:/# ls /mnt
account  backups  db     heimdal     mail   nmbd      rwho   yp
at       crash    empty  log         msgs   preserve  spool
audit    cron     games  lost+found  named  run       tmp
root@dahlia:/# umount /mnt
root@dahlia:/# mount -r -t ufs -o ufstype=ufs2 /dev/sdb9 /mnt
root@dahlia:/# ls /mnt
samba  ueda
root@dahlia:/# umount /mnt
root@dahlia:/# mount -r -t ufs -o ufstype=ufs2 /dev/sdb10 /mnt
root@dahlia:/# ls /mnt
db  samba  www

内容的に以前のマウントポイントはこんな感じの様子.

  • sdb5: /
  • sdb6: swap
  • sdb7: /usr
  • sdb8: /var
  • sdb9: /home
  • sdb10: /export

マウントポイントを作って一気にマウントするスクリプトを作っておいた.

rose@dahlia:~# mkdir /rose
root@dahlia:~# cat mount_rose_disk.sh 
#!/bin/sh

mount -r -t ufs -o ufstype=ufs2 /dev/sdb5 /rose
mount -r -t ufs -o ufstype=ufs2 /dev/sdb7 /rose/usr
mount -r -t ufs -o ufstype=ufs2 /dev/sdb8 /rose/var
mount -r -t ufs -o ufstype=ufs2 /dev/sdb9 /rose/home
mount -r -t ufs -o ufstype=ufs2 /dev/sdb10 /rose/export

ここまでくれば後は吸い出すだけだから大丈夫か.

3. 文字コードの変換

と思いきや,ファイルを読み込んでいくとEUC-JPなファイル名がゴロゴロ出てくる.そのままでは困るので convmv というツールを入れた.デフォルトでは実際に変更をかけないという超安全設計なツール.これでsamba経由で書き込んだ日本語ファイル名が元に戻った.

(事前確認)
> convmv -r -f euc-jp -t utf8 *
(実際に変換する)
> convmv --notest -r -f euc-jp -t utf8 *

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です