1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

俺様サーバー構築記 - archiso で無線LANを使って Windows が入っている HDD をバックアップ@ノートパソコン3台目(UEFI)

Last updated at Posted at 2019-04-02

俺様サーバー構築記 - 基本方針」に基づいて、自宅サーバーの構築を目指して Arch Linux + ZFS をインストールしてきましたが、最近は古いノートパソコンの再生ばかりやって既に2台。ここへ来て3台目の再構築に着手します。

これが割と最近の可愛らしいマシンで、小型で持ち運びも楽な軽い物なのですがBIOSではなくてUEFIでした。そのため作業記録を採る事にします。

前書き:マシンスペック

機種:HP Pavilion TouchSmart 10-e013AU
型番: F6C99PA#ABJ
CPU: AMD A4-1200 APU with Radeon(TM) HD Graphics
クロック: 1.00GHz
メモリ: 2GB
HDD: 320GB

はい。HP製の、悪評高い例のアレです。

中身にはまだコピーを取ってないかも知れないデータが存在する可能性があるので、まずはそのバックアップからです。

廃棄予定の不要HDDを貰ってあるので、それと換装するつもりだったんですが。マニュアル通りにやっても途中で分解不可能になりました…。筐体が爪で留まっている箇所があり、力を入れて無理矢理外す工程があるのですけども。工作精度が悪いのかどうなのか外せませんでした。何だかなぁ:sob: ネットで事例を探しても、マニュアル通りで換装できた話しか出てきません。

諦めました。中身の情報だけバックアップします。

FreeNASにて領域を確保して、CIFS共有して、まずは普通にWindowsから C:\Users\該当ユーザー 以下全部をコピー。C:ドライブ直下を見渡して、データを持っていると思われる他のフォルダをすべて浚いました。最後に2〜3のファイルを表示して確認。

これで退路は確保できました。後は失敗してぶっ潰してしまっても何とかなります。

無線LAN

一つの試みとして、インストールの時点で無線LANを使用してみます。
参考文献1: 俺様サーバー構築記 - Arch Linux + ZFS の無線LAN設定@ノートパソコン2台目(BIOS)
参考文献2: ネットワーク - 俺様サーバー構築記 - ZFS の上に Arch Linux をインストール@ノートパソコン(BIOS)

まずは「俺様サーバー構築記 - ZFSをarchisoに埋め込む@物理マシン(BIOS)」で作ったZFS埋め込みarchisoを焼き付けたUSBメモリをマシンに挿して電源を入れ、ここからブートします。

キーボード

# loadkeys jp106

ドライバーの状態を確認する

# lspci -k | grep -i wireless
01:00.0 Network controller: Ralink corp. RT3290 Wireless 802.11n 1T/1R PCIe
$ lspci -ks 01:00.0
01:00.0 Network controller: Ralink corp. RT3290 Wireless 802.11n 1T/1R PCIe
        DeviceName: Ralink RT3290LE 802.11bgn Wi-Fi Adapter
        Subsystem: Hewlette-Packard Company Ralink RT3290LE 802.11bgn 1x1 Wi-Fi and Bluetooth 4.0 Combo Adapter
        Kernel driver in use: rt2800pci
        Kernel modules: rt2800pci, wl

無線インターフェイスが作成されているか確認。

# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:11:22:33:44:b2 brd ff:ff:ff:ff:ff:ff
3: wlo1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:11:22:33:44:c5 brd ff:ff:ff:ff:ff:ff

無線インターフェイスを起こして確認。

# ip link set wlo1 up
# ip link show wlo1
3: wlo1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:11:22:33:44:c5 brd ff:ff:ff:ff:ff:ff

ワイヤレス管理

情報を取得する

# iw dev
phy#0
        Interface wlo1
                ifindex 3
                wdev 0x1
                addr 00:11:22:33:44:c5
                type managed
                txpower 20.00 dBm
# iw dev wlo1 link
Not connected.

アクセスポイント検索

# iw dev wlo1 scan | grep SSID
        SSID: 〈我が家のアクセスポイントのSSID〉
        〈以下省略〉

関連付け

参考文献:WPA supplicant - ArchWiki

/etc/wpa_supplicant/wpa_supplicant.conf は存在しません。

# ls -a /etc/wpa_supplicant/
.  ..

必要な内容で作成し、コマンドを実行します。

# cat >/etc/wpa_supplicant/wpa_supplicant.conf <<___
\`heredoc> ctrl_interface=/run/wpa_supplicant
\`heredoc> update_config=1
\`heredoc> ___
# wpa_supplicant -B -i wlo1 -c /etc/wpa_supplicant/wpa_supplicant.conf 
Successfully initialized wpa_supplicant

wpa_cli コマンドを使って操作します。

# wpa_cli
wpa_cli v2.6
Copyright (c) 2004-2016, Jouni Malinen <j@w1.fi> and contributors

This software may be distributed under the terms of the BSD license.
See README for more details.


Selected interface 'wlp4s0'

Interactive mode

> scan
OK
<3>CTRL-EVENT-SCAN-STARTED 
<3>CTRL-EVENT-SCAN-RESULTS 
<3>CTRL-EVENT-NETWORK-NOT-FOUND 
> scan_results
bssid / frequency / signal level / flags / ssid
aa:bb:cc:dd:6e:f3	2462	-43	[WPA2-PSK-CCMP][ESS]	〈我が家のSSID〉
11:22:33:44:d0:86	2412	-94	[WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]	〈知らないSSID〉
> add_network
0
> set_network 0 ssid "〈我が家のSSID〉"
OK
> set_network 0 psk "〈我が家のSSIDのパスワード〉"
OK
> enable_network 0
OK
<3>CTRL-EVENT-SCAN-STARTED 
<3>CTRL-EVENT-SCAN-RESULTS 
<3>WPS-AP-AVAILABLE 
<3>SME: Trying to authenticate with aa:bb:cc:dd:6e:f3 (SSID='〈我が家のSSID〉' freq=2462 MHz)
<3>Trying to associate with aa:bb:cc:dd:6e:f3 (SSID='〈我が家のSSID〉' freq=2462 MHz)
<3>Associated with aa:bb:cc:dd:6e:f3
<3>CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
<3>CTRL-EVENT-REGDOM-CHANGE init=COUNTRY_IE type=COUNTRY alpha2=JP
<3>WPA: Key negotiation completed with aa:bb:cc:dd:6e:f3 [PTK=CCMP GTK=CCMP]
<3>CTRL-EVENT-CONNECTED - Connection to aa:bb:cc:dd:6e:f3 completed [id=0 id_str=]
> save_config
OK
> quit

ネットワーク

IPv4で接続する為の設定です。

# cat >/etc/systemd/network/all.network <<___
\`heredoc> [Match]
\`heredoc> Name=*
\`heredoc> 
\`heredoc> [Network]
\`heredoc> DHCP=ipv4
\`heredoc> ___
# systemctl start systemd-networkd
# ip link show wlo1
3: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:11:22:33:44:c5 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.2/24 brd 10.0.0.255 scope global dynamic wlo1
       valid_lft 86398sec preferred_lft 86398sec
    inet6 fe80::5635:30ff:fe9b:f8c5/64 scope link
       valid_lft forever preferred_lft forever 

家庭内無線LANに接続できました!

バックアップ

nfs

我が家のFreeNASを設定してnfsで共有します。画面操作内容は省略。ごく普通のNFS共有です。NFSv4は設定が面倒臭いので、NFSv3で接続する事にします。

なおFreeNASのIPアドレスは 10.0.0.100 とします。

参考文献: 2.2 クライアント - 2 設定 - NFS - ArchWiki

# showmount -e 10.0.0.100
Export list for 10.0.0.100
/mnt/tank/webdav/taro 10.0.0.0
# mount -t nfs 10.0.0.100:/mnt/tank/webdav/taro /mnt

ddコマンドで念入りにバックアップ

バックアップファイルを保管するフォルダを作成。

# mkdir /mnt/backup
# cd /mnt/backup

バックアップ対象のデバイスを確認。

# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0         7:0    0 573.2M  1 loop /run/archiso/sfs/airootfs
sda           8:0    0 298.1G  0 disk
├sda1        8:1    0   400M  0 part
├sda2        8:2    0   260M  0 part
├sda3        8:3    0   128M  0 part
├sda4        8:4    0   285G  0 part
└sda5        8:5    0  12.3G  0 part
sdb           8:16   1   7.3G  0 disk
├sdb1        8:17   1   686M  0 part /run/archiso/bootmnt
└sdb2        8:18   1    64M  0 part
mmcblk0     179:0    0  14.9G  0 disk
└mmcblk0p1 179:1    0  14.9G  0 part

sdaが対象のHDDになりますが、どうしてこんなに沢山のパーティションに分かれてるんでしょう?まあいいや。

Windowsが使っているのは一際目立つ大容量のsda4ですね。

念の為にセクタサイズを確認。

# fdisk -l /dev/sda | grep size
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

512バイトセクタではなくて4Kセクタです。これを踏まえてddコマンドを使用します。一応、/dev/sda の眷属全部をバックアップ対象にしておきます。

参考文献1: Linux ddコマンドでHDDコピー
参考文献2: 1.2 ハードディスク全体のクローン - 1 dd を使う - ディスクのクローン - ArchWiki
参考文献3: 3.2 sfdisk を使う - 3 バックアップとリストア - fdisk - ArchWiki

バックアップ用途でddコマンドを使用する場合は、ブロックサイズはセクタサイズにしておいた方が無難です。ブロックサイズを大きく指定するとスピードは数倍になるようですが、セクタ読み取りエラーが発生した場合に悲惨な事になります。詳細は参考文献2を読みましょう。

# cd /dev
# ls sda?
sda1  sda2  sda3  sda4  sda5
# ls sda? | while read drv; do dd if=/dev/$drv of=/mnt/backup/$drv.dd bs=4096 conv=noerror,sync; done
  〈省略〉

まあとにかく時間が掛かります。完了するまでひたすら待ちましょう。ddコマンドにオプション status=progress を付けた方が良いかも知れません。

完了後、念の為、/dev/sda 全体も保管します。パーティションを分けたデバイスを丸ごとddする場合には、パーティション情報も保存しておいた方がよろしい模様。

# dd if=/dev/sda bs=4096 conv=noerror,sync | gzip >/mnt/backup/sda.dd.gz
  〈省略〉
# sfdisk -d /dev/sda >/mnt/backup/fdisk_sda.dump

出来上がったファイルを確認。

# ls -l /mnt/backup
total 318318560
-rw-r--r-- 1 nobody nobody         1053 Apr  1 12:14 fdisk_sda.dump
-rw-r--r-- 1 nobody nobody 156798110046 Apr  1 00:04 sda.dd.gz
-rw-r--r-- 1 nobody nobody    419430400 Mar 29 15:31 sda1.dd
-rw-r--r-- 1 nobody nobody    272629760 Mar 29 15:32 sda2.dd
-rw-r--r-- 1 nobody nobody    134217728 Mar 29 15:32 sda3.dd
-rw-r--r-- 1 nobody nobody 306054168576 Mar 30 06:35 sda4.dd
-rw-r--r-- 1 nobody nobody  13191086080 Mar 30 07:10 sda5.dd

ループバックデバイス

Windowsがインストールされていたハズの /dev/sda4 の内容を軽く確認します。その為にループバックデバイスを利用します。

# losetup -f /mnt/backup/sda4.dd
# losetup -l
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                                     DIO LOG-SEC
/dev/loop1         0      0         0  0 /mnt/backup/sda4.dd                             0     512
/dev/loop0         0      0         0  1 /run/archiso/bootmnt/arch/x86_64/airootfs.sfs   0     512

ループバックデバイスをマウントして、中身を確認します。

# cd
# mkdir win
# mount /dev/loop1 win
Windows is hibernated, refused to mount.
The disk contains an unclean file system (0, 0).
Metadata kept in Windows cache, refused to mount.
Falling back to read-only mount because the NTFS partition is in an
unsafe state. Please resume and shutdown Windows fully (no hibernation
or fast restarting.)

Windowsは普通にシャットダウンすると高速起動の為にズルい事をします。mount時のゴチャゴチャしたメッセージはその事に関する注意書きです。

今回は書き込みをしないで、読み出しのみなので問題無いでしょう。

# ls win
  〈省略〉

色々ゴチャゴチャしていたので省略しましたが、WindowsのCドライブ直下が表示されました。フォルダの中にcdしたり、適当なテキストファイルをcatしたりすると、確かに自分のファイルが見えました。どうやらバックアップは成功したようです。

さて後始末。

# cd
# umount win
# losetup -d /dev/loop1
# losetup -l
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                                     DIO LOG-SEC
/dev/loop0         0      0         0  1 /run/archiso/bootmnt/arch/x86_64/airootfs.sfs   0     512

これで心置き無く ArchLinux をインストールできます。やったね:thumbsup_tone2:

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?