Ubuntu Weekly Recipe

第639回 Ubuntuに「トラブル時に」ログインするいろいろな方法

この記事を読むのに必要な時間:およそ 10 分

ストレージから仮想マシンイメージを構築しログインする

PCのうちストレージと同じくらい壊れる印象の強いパーツが電源です。実際に壊れやすいかどうかの統計的なものは不明ですが,とにかく壊れてしまうとPCはまさに「うんともすんとも,ぶぉんとも,ぴっとも」言わなくなってしまいます。他にもCPUやメモリーが壊れた場合も,同様でしょう。こうなってくるともうGRUBがどうのこうのInitramfsがどうのこうの以前の問題です。

この状態でストレージ上のUbuntuに「ログインしたい」となると,電源を取り替えるか,ストレージを取り出して別のPCに繋ぐしかありません。最近の一般的なPCだと,使われているストレージは次のいずれかでしょう。

3.5インチ/2.5インチのSATA HDD/SSD
近くにHDD用スロットの空いているデスクトップPCがないのであれば,USB接続の外付けHDDケースを買ってくるのが一番楽です。
M.2 SATA/NVMe SSD
⁠M.2 エンクロージャー」などで検索すると外付け用のデバイスがいくつも見つかります。M.2 SATAタイプとM.2 NVMeタイプに分かれているので,使っているものに合わせて買うように注意してください。自作ユーザーだと,M.2接続のストレージは余る傾向にあるので,エンクロージャーを1台持っておくと「サイズの大きな小型USBストレージ」として使えるので便利です※6⁠。
eMMC
UMPCと呼ばれる超小型PCに多いタイプです。マザーボードに直付けされているので,はんだごてマイスターでもない限り諦めてください。
※6
筆者はツールレスでSSDを入れ替えできるAREAのSD-M2SAを使っています。こちらはM.2 SATA版で,M.2 NVMe版はSD-M2NVです。

単にデータを取り出したいだけであれば,あとは普通にファイルをコピーするだけです※7⁠。しかしながらストレージを使ってUbuntuに「ログインしたい」となると,何か方法を考えなくてはなりません。

※7
Windowsを使う場合は,Ubuntuのファイルシステムを読み書きする方法を別途用意する必要があります。ext4であれば,最新のWindowsとWSL2の組み合わせでできるようですが,いずれにせよいろいろと手間はかかるので,ファイルをコピーするにしてもUbuntuが動いているマシンを用意したほうが楽です。

できれば「別のPC」もUbuntuのほうが作業は楽になります。Ubuntuがインストールされたマシンがないのであれば,前項と同じように,Ubuntuをライブインストーラーで起動すると良いでしょう。リカバリしたいストレージを接続してUbuntuを起動したあとは,次の手順になります。

  1. ストレージ全体のバックアップを取る(前述の「ストレージのバックアップを取る」などを参照)
  2. ストレージを仮想マシンイメージ化する
  3. 仮想マシンでそのイメージを起動する

手順1は手順2以降でトラブルが起きた時の安全策です。バックアップ用の十分容量のあるストレージがなく,なおかつ手順2以降で失敗してデータを失うことになってもかまわないというのであれば,手順1を飛ばしてもかまわないでしょう。

この方法のメリットは,仮想マシンの中でデスクトップを立ち上げられる可能性があるということです。Firefoxのパスワードマネージャーなど,CLIからだと操作が難しいものをリストアしたい場合に便利です。

本記事ではUbuntuでの手順を紹介していますが,別にWindowsマシンで同じことができないというわけではありません。Windowsの場合,OSにインストールされた標準のツールだけでは難しく,今だとWSL2なども含めた,なにがしかのソフトウェアをインストールすることになります。ただしそのソフトウェアは千差万別であり,手順が複雑になりがちです。どうしてもWindows上で作業したいということであれば,いっそのことVirtualBoxのVBoxManageコマンドを使って,ディスク全体を仮想マシンで解釈可能なイメージファイルに変更してしまうのが一番楽かもしれません。

ここではQEMUを使うケースと,VirtualBoxを使うケースを考えましょう。このうちVirtualBox版はWindowsでも利用可能です。またストレージデバイス全体を保存できる程度に十分な空き容量があるものとします。

ストレージを仮想マシンイメージ化する(QEMU版)

QEMUそのものについては第441回などを参照してください。とりあえず次の手順で必要なパッケージをインストールしておきましょう。

$ sudo apt install qemu-kvm qemu-utils ovmf

イメージ化したいストレージが/dev/sdbだとすると,次の方法で変更可能です。

$ sudo qemu-img convert -c /dev/sdb -O qcow2 old-sda.qcow2

別の方法でバックアップ済みのイメージであれば,gunzipで展開した上で,/dev/sdbの代わりに展開したファイル名を指定してください。

あとはQEMUでこのイメージを指定して起動するだけです。

$ cp /usr/share/OVMF/OVMF_VARS.fd .
$ sudo qemu-system-x86_64 \
    -m 2G -enable-kvm \
    -net user,hostfwd=tcp::2222-:22 \
    -drive if=pflash,format=raw,readonly,file=/usr/share/OVMF/OVMF_CODE.fd \
    -drive if=pflash,format=raw,file=OVMF_VARS.fd \
    -drive file=old-sda.img,format=qcow2

体感的に普通に起動するよりもそれなりに時間がかかるため,気長に待つようにしてください。ストレージに余裕があるならqemu-img実行時に-cオプションを省いて,イメージを圧縮しないという手もあるでしょう。

図10 Ubuntuマシンの上のVirtualBoxの中において,仮想マシンイメージをQEMUで起動した様子

画像

ストレージを仮想マシンイメージ化する(VirutalBox版)

VirtualBoxをインストール済みの環境であれば,convertfromrawサブコマンド使ってVDIに変換できます。

$ sudo VBoxManage convertfromraw /dev/sda old-sda.vdi --format VDI
$ sudo chown $USER: old-sda.vdi

VBoxManageの場合,標準入力からの変換もサポートしているので,既存のバックアップからの変換も簡単です。

$ gunzip -c host-sda.img.gz | VBoxManage convertfromraw stdin old-sda.vdi --format VDI

VBoxManageでは,Windowsでも使用できます。ただしストレージデバイスの指定方法がUbuntuと異なる点に注意してください。VirtualBoxのドキュメントの9.7.1.1. Access to Entire Physical Hard Diskによると,Windowsの場合は\\.\PhysicalDrive0のような指定の仕方になるようです。たとえば次の方法で,パーティションの中身を確認できるので,どのディスクが該当するか0から順番に確認していくと良いでしょう。

Windows> VBoxManage internalcommands listpartitions -rawdisk \\.\PhysicalDrive0
Number  Type   StartCHS       EndCHS     Size (MiB)  Start (Sect)
1       0x00  0   /0  /0   0   /0  /0          512          2048
2       0x00  0   /0  /0   0   /0  /0        19966       1050624

あとは前述のVBoxManage convertfromraw/dev/sda\\.\PhysicalDriveXに置き換えれば同じです。

VDIファイルは仮想マシン作成時に「ハードディスク」の画面で,⁠すでにある仮想ハードディスクファイルを使用する」にチェックを入れて,フォルダアイコンをクリックします。すると表示される「ハードディスク選択」ダイアログで「追加」ボタンを押し,作成したVDIファイルを選択します。結果,次の画像のようになっていれば問題ありません。

図11 作成したVDIファイル(old-sda.vdi)が選択されていればOK

画像

UEFIシステムのイメージは,作成後に設定の「システム」から「マザーボード」タブの「EFIを有効化」にチェックを入れるのを忘れないでください。そうしないと「FATAL: No bootable medium found! System halted.」のエラーメッセージが出てしまいます。

あとは普通の仮想マシンと同じで,起動すればログイン画面が表示されるはずです。前述したとおり,QEMUやVirtualBoxを使うと,デスクトップ環境をそのまま起動できるというメリットがあります。どうしてもデスクトップ環境をそのままリカバリーして利用したい際は,強力な選択肢となるでしょう。

今回利用したVBoxManageコマンドは他にもいろいろ便利なサブコマンドが存在します。その一部はざっクリわかるVirtualBox 6.1対応版でも解説されているので,気になる人はチェックしてみてください。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。