閉じる

Debianが起動しない状態からデータを救出する方法

Debianが黒い画面で止まる、GRUBから先へ進まない、ログイン画面が表示されない場合でも、内蔵HDD・SSDが読み取れる状態なら、データを救出できる可能性があります。もっとも安全性を重視しやすい方法は、別のUSBメモリーからDebian Liveを起動し、元のディスクを読み取り専用にして、外付けHDD・SSDへコピーする方法です。

先に結論
  1. 起動しないDebianを何度も立ち上げず、再インストールもしない
  2. 別のパソコンでDebian Live USBを作成する
  3. Live USBから起動し、内蔵ディスクと保存先を確実に見分ける
  4. 元ディスクを読み取り専用にしてマウントする
  5. rsyncでホームフォルダーを外付けドライブへコピーする
  6. コピー結果を確認してから安全に取り外す
異音・認識切れ・I/O errorがある場合は、通常コピーを繰り返さない

HDDからカチカチ音がする、SSDが途中で消える、読み込みが極端に遅い、Input/output errorが出る場合は物理故障の疑いがあります。データが重要なら電源を切り、専門業者への依頼を優先してください。自分で作業する場合も、後半のGNU ddrescueで先にディスクイメージを作り、元ディスクへのアクセス回数を抑えます。

救出前にしてはいけないこと

起動しない原因がファイルシステムの破損やストレージ故障だった場合、書き込み操作によって状態が悪化することがあります。救出が完了するまでは、次の操作を避けてください。

  • Debianを同じディスクへ再インストールする
  • パーティションを削除、初期化、フォーマットする
  • 元ディスクに救出データを保存する
  • 状態を確認しないままfsck -yを実行する
  • 異音のするHDDを何度も再起動する
  • コピー前に大規模なアップデートやGRUB修復を試す
修復より先にデータを救出する

GRUBや起動設定だけが壊れているように見えても、重要なデータのコピーを先に行うと安全です。起動修復はデータを確保したあとに試します。

必要なものを準備する

必要なもの目安・用途
正常に動く別のパソコンDebian Live ISOのダウンロードとUSB作成に使用
USBメモリー8GB以上を推奨。作成時に中身は消去される
外付けHDD・SSD救出したいデータ量より十分に大きいもの。元ディスクとは別の媒体を使用
ACアダプターノートPCの作業中の電源切れを防止
暗号化パスフレーズLUKS暗号化を使用している場合に必要

保存先がext4なら、Linuxの所有者・権限・ACL・拡張属性を保持しやすくなります。Windowsでも読みたい場合はNTFSまたはexFATを利用できますが、Linux固有の属性は完全には保存できません。FAT32には1ファイル4GBの上限があるため、ディスクイメージや大きな動画の救出先には適しません。

優先して救出したい場所

場所主な内容優先度
/home/user/文書、画像、動画、ダウンロード、デスクトップ、アプリ設定、隠しファイル最優先
/etc/システムやサービスの設定必要に応じて
/var/www/Webサーバーの公開データ運用していた場合
/srv/・/opt/サービス用データ、手動導入したアプリ使用していた場合
/var/lib/データベースやアプリの状態用途を確認して救出

ブラウザーのプロファイルや多くのアプリ設定は、ホームフォルダー内の.config、.local、.mozillaなどにあります。ホームフォルダー全体をコピーすれば、先頭が「.」の隠しファイルも含まれます。

1Debian Live USBから起動する

  1. 正常なパソコンでDebian公式のLiveイメージ配布ページを開きます。
  2. 通常は64ビットPC向けのamd64版を選びます。操作に慣れていない場合はGNOME版またはXfce版が分かりやすいでしょう。
  3. RufusやbalenaEtcherなどでISOをUSBメモリーへ書き込みます。Rufusで書き込み方式を尋ねられた場合は、Debian Wikiの案内に従いDDイメージモードを選びます。
  4. 起動しないPCへLive USBを挿し、電源投入直後にブートメニューを開きます。キーは機種によりF12、F9、Esc、F8などです。
  5. UEFI: USBなど、作成したUSBメモリーを選択します。
Debian GNU/Linux LiveDebian GNU/Linux Live (failsafe)Debian InstallerDebian Installer with Speech Synthesis ↑ / ↓ で選択し、Enterで起動
Live起動メニューでは「Debian GNU/Linux Live」を選択します。表示項目はイメージやバージョンにより異なります。
「Install」ではなく「Live」を選ぶ

今回はインストールしません。誤操作を避けるため、Debian InstallerではなくLive環境を起動してください。公式インストーラーのrescue modeでも作業できますが、ファイルをコピーするだけならLive環境のほうが確認しやすくなります。

2元ディスクと保存先を確認する

Liveデスクトップが表示されたら端末を開きます。外付けHDD・SSDも接続し、次のコマンドでディスク名、容量、ファイルシステム、ラベル、機種名を確認します。

lsblk -o NAME,SIZE,FSTYPE,LABEL,UUID,MOUNTPOINTS,MODEL
user@debian: ~
user@debian:~$ lsblk -o NAME,SIZE,FSTYPE,LABEL,MOUNTPOINTS,MODEL NAME SIZE FSTYPE LABEL MOUNTPOINTS MODEL nvme0n1 476.9G Samsung SSD 980 ├─nvme0n1p1 512M vfat EFI └─nvme0n1p2 476.4G ext4 debian-root sda 931.5G External SSD └─sda1 931.5G ext4 BACKUP sdb 14.6G iso9660 Debian Live /run/live/medium USB Flash 内蔵元ディスク: /dev/nvme0n1 保存先: /dev/sda1
容量・MODEL・LABELを組み合わせて判断します。実際のデバイス名は環境ごとに変わります。

この例では、内蔵SSDが/dev/nvme0n1、Debianのext4パーティションが/dev/nvme0n1p2、外付け保存先が/dev/sda1です。SATA接続の内蔵ディスクは/dev/sda、外付けディスクは/dev/sdbになることもあります。

デバイス名を見た目だけで決めない

/dev/sdaが必ず内蔵、/dev/sdbが必ず外付けとは限りません。容量、MODEL、LABELを確認し、分からない状態では先へ進まないでください。元と保存先を逆にすると、重要なデータを失うおそれがあります。

3元ディスクを読み取り専用で開く

以下は、元ディスクが/dev/nvme0n1、Debianのext4パーティションが/dev/nvme0n1p2だった例です。自分の環境で確認した名前に置き換えてください。

1. 自動マウントされていないか確認する

findmnt -S /dev/nvme0n1p2

何も表示されなければ未マウントです。マウント先が表示された場合だけ、次のように解除します。

sudo umount /dev/nvme0n1p2

2. ディスク全体を読み取り専用にする

sudo blockdev --setro /dev/nvme0n1
sudo blockdev --getro /dev/nvme0n1

--getroの結果が1なら読み取り専用、0なら書き込み可能です。

3. ext4パーティションを読み取り専用でマウントする

sudo mkdir -p /mnt/source
sudo mount -o ro,noload /dev/nvme0n1p2 /mnt/source

ext3・ext4では単なるro指定でも、状態によってジャーナルが再生される可能性があります。noloadを加えるとジャーナルを読み込まず、さらにブロックデバイス自体も読み取り専用にしているため、元ディスクへの書き込みを防ぎやすくなります。

lsblkのFSTYPEマウント例
ext3・ext4sudo mount -o ro,noload デバイス マウント先
XFSsudo mount -o ro,norecovery デバイス マウント先
Btrfssudo mount -o ro デバイス マウント先
NTFSsudo mount -o ro デバイス マウント先
crypto_LUKS先にLUKSを読み取り専用で開く手順を実行
LVM2_member論理ボリュームを有効化してからマウント

4. 読み取り専用になっていることを確認する

findmnt -no SOURCE,FSTYPE,OPTIONS /mnt/source
sudo ls -la /mnt/source/home
user@debian: ~
user@debian:~$ sudo blockdev –getro /dev/nvme0n1 1 user@debian:~$ findmnt -no SOURCE,FSTYPE,OPTIONS /mnt/source /dev/nvme0n1p2 ext4 ro,relatime,noload user@debian:~$ sudo ls -la /mnt/source/home total 12 drwxr-xr-x 3 root root 4096 Aug 20 18:02 . drwxr-xr-x 18 root root 4096 Aug 27 21:15 .. drwx—— 42 user user 4096 Aug 27 20:54 user
1とroを確認し、ホームフォルダーのユーザー名を調べます。
ホームが別パーティションの場合

lsblkで別のext4パーティションがあり、以前の/etc/fstabに/homeとして登録されていた場合は、そのパーティションを別途読み取り専用でマウントします。ホームだけを救出するなら、sudo mount -o ro,noload /dev/nvme0n1p3 /mnt/source-homeのように直接開いて構いません。

4外付けHDD・SSDへコピーする

1. 保存先をマウントして空き容量を確認する

次の例では外付けドライブのパーティションが/dev/sda1です。lsblkで確認した自分のデバイス名に置き換えます。

sudo mkdir -p /mnt/backup
sudo mount /dev/sda1 /mnt/backup
df -h /mnt/source /mnt/backup

MOUNTPOINTS欄に/media/user/BACKUPなどがすでに表示されている場合は、外付けドライブはマウント済みです。そのパスを保存先として使用し、重ねてmountしないでください。

2. ext4の保存先へホーム全体をコピーする

ホームフォルダー名がuserだった例です。最初に保存用フォルダーを作り、rsyncでコピーします。

sudo mkdir -p /mnt/backup/debian-rescue/home/user
sudo rsync -aHAX --numeric-ids --info=progress2 \
  /mnt/source/home/user/ \
  /mnt/backup/debian-rescue/home/user/
  • -a:再帰コピーと主要な属性の保持
  • -HAX:ハードリンク、ACL、拡張属性を保持
  • --numeric-ids:ユーザー名ではなくUID・GIDをそのまま扱う
  • --info=progress2:コピー全体の進行状況を表示

rsync: command not foundと表示された場合は、Live環境をインターネットへ接続し、sudo apt updateとsudo apt install rsyncを実行してからコピーします。

末尾の「/」も含めて入力する

/mnt/source/home/user/の末尾にあるスラッシュは、「userフォルダーの中身」を保存先へコピーする指定です。このコマンドには削除オプションを付けていないため、中断後に同じコマンドを実行してコピーを続けられます。

3. 保存先がNTFS・exFATの場合

Linux固有の所有者・権限・ACLを保存できないため、個人ファイルの内容、日時、フォルダー構造を中心にコピーします。

sudo mkdir -p /mnt/backup/debian-rescue/home/user
sudo rsync -rltvh --info=progress2 \
  --no-perms --no-owner --no-group \
  /mnt/source/home/user/ \
  /mnt/backup/debian-rescue/home/user/

NTFS・exFAT側で使用できないファイル名や属性があると、一部の項目でエラーになる場合があります。元の状態をできるだけ忠実に保存したい場合は、ext4の保存先を用意するか、後述のディスクイメージ方式を使います。

4. システム設定なども必要なら追加でコピーする

sudo mkdir -p /mnt/backup/debian-rescue/etc
sudo rsync -aHAX --numeric-ids --info=progress2 \
  /mnt/source/etc/ \
  /mnt/backup/debian-rescue/etc/

Webサーバーを使用していた場合は/var/www/、独自サービスのデータは/srv/や/opt/も同様にコピーします。データベースは単純なファイルコピーだけで完全に復元できない場合がありますが、起動不能時の保全用としてコピーしておく価値があります。

user@debian: ~
user@debian:~$ sudo rsync -aHAX –numeric-ids –info=progress2 \ > /mnt/source/home/user/ \ > /mnt/backup/debian-rescue/home/user/ 38.72G 76% 91.34MB/s 0:02:14 (xfr#18420, to-chk=3821/22451) 50.81G 100% 88.10MB/s 0:09:51 (xfr#22451, to-chk=0/22451) sent 50.82G bytes received 436.12K bytes 85.96M bytes/sec total size is 50.81G speedup is 1.00 コピーが完了しました
端末を閉じず、to-chk=0/...となってプロンプトが戻るまで待ちます。
コピー中に停止しても、すぐ元ディスクを修復しない

No space left on deviceなら保存先の空き容量を確認します。Input/output errorなら元ディスクの故障が疑われるため、通常コピーの再試行を繰り返さず、GNU ddrescueまたは専門業者を検討してください。

5コピー結果を確認して安全に取り外す

ファイル数を比較する

sudo find /mnt/source/home/user -xdev -type f -printf . | wc -c
sudo find /mnt/backup/debian-rescue/home/user -xdev -type f -printf . | wc -c

両方の数が一致するか確認します。ソケットなど通常ファイル以外の項目はこの数に含まれません。

内容をチェックサムで確認する

元ディスクが正常に読み取れており、保存先がext4の場合は、次のドライランで内容を照合できます。

sudo rsync -aHAXnc --numeric-ids \
  /mnt/source/home/user/ \
  /mnt/backup/debian-rescue/home/user/

何も一覧表示されなければ、rsyncが比較した範囲では差異がありません。-nは実際には変更しないドライラン、-cはファイル内容のチェックサム比較です。チェックサム確認は元と保存先の全ファイルを読み直すため、故障が疑われるディスクでは行わず、救出できたデータを優先します。

書き込みを完了して取り外す

sync
sudo umount /mnt/backup
sudo umount /mnt/source

target is busyと表示された場合は、ファイルマネージャーや端末がマウント先を開いていないか確認し、cd ~を実行してから再度アンマウントします。アンマウントが成功したあとにシャットダウンし、外付けドライブとLive USBを取り外します。

救出完了の確認項目
  • 外付けドライブ側で文書や画像を数点開ける
  • 隠しファイルを含むホーム全体が保存されている
  • rsyncの最後に重大なエラーが出ていない
  • syncとumountが完了している
  • 修復作業を始める前に、重要データをもう1か所へ複製する

LUKS暗号化・LVMを使用している場合

lsblk -fのFSTYPEにcrypto_LUKSと表示される場合は、パスフレーズで暗号化領域を開きます。さらに内部がLVMなら、論理ボリュームを有効化してからマウントします。

lsblk -f
sudo cryptsetup open --readonly /dev/nvme0n1p3 rescue_crypt
sudo vgs
sudo vgchange -ay debian-vg
sudo lvs -o lv_name,vg_name,lv_size,lv_path
lsblk -f

debian-vgはこの例のボリュームグループ名です。先にvgsで表示された実際の名前へ置き換えます。cryptsetupがパスフレーズを求めたとき、入力中は画面に文字や「*」が表示されませんが、そのまま入力してEnterを押します。

user@debian: ~
user@debian:~$ sudo cryptsetup open –readonly /dev/nvme0n1p3 rescue_crypt Enter passphrase for /dev/nvme0n1p3: user@debian:~$ sudo vgchange -ay debian-vg 2 logical volume(s) in volume group “debian-vg” now active user@debian:~$ sudo lvs -o lv_name,vg_name,lv_size,lv_path LV VG LSize Path root debian-vg 80.00g /dev/debian-vg/root home debian-vg 380.00g /dev/debian-vg/home
論理ボリュームのPathを確認し、rootとhomeを取り違えないようにします。

rootとhomeが別の論理ボリュームになっている例では、次のように読み取り専用で開きます。

sudo mkdir -p /mnt/source /mnt/source/home
sudo mount -o ro,noload /dev/debian-vg/root /mnt/source
sudo mount -o ro,noload /dev/debian-vg/home /mnt/source/home
findmnt /mnt/source
findmnt /mnt/source/home

あとは通常の手順と同じく、/mnt/source/home/user/を外付けドライブへコピーします。終了時はhome、rootの順でアンマウントし、LVMと暗号化マッピングを閉じます。

sync
sudo umount /mnt/source/home
sudo umount /mnt/source
sudo vgchange -an debian-vg
sudo cryptsetup close rescue_crypt

コマンドが見つからない場合は、Live環境をインターネットへ接続して次を実行します。インストール先はLive環境の一時領域であり、元ディスクではありません。

sudo apt update
sudo apt install cryptsetup lvm2
暗号化パスフレーズを忘れた場合

LUKSの有効なパスフレーズまたは回復に使える鍵ファイルがなければ、通常の方法で暗号化データを復号することはできません。パスフレーズを推測するための初期化やフォーマットは行わないでください。

ディスク故障が疑われる場合はGNU ddrescueでイメージ化する

不良セクターがあるディスクへ通常のrsyncを使うと、読めないファイルのたびに再試行が発生します。GNU ddrescueは、読み取れる領域を先に別媒体へコピーし、進捗をmapfileへ記録できます。ただし、故障ディスクへ通電すること自体が悪化要因になる場合があります。代替できないデータは専門業者へ相談してください。

保存先には元ディスク全体以上の空き容量が必要

500GBの元ディスクをイメージ化するなら、使用量が少なくても約500GBのファイルを保存できる領域が必要です。保存先はFAT32以外を使用し、イメージファイルとmapfileを同じ故障ディスクへ保存してはいけません。

Live環境をネットワークへ接続し、GNU ddrescueを導入します。Debianのパッケージ名はgddrescue、実行コマンド名はddrescueです。

sudo apt update
sudo apt install gddrescue

元ディスクが/dev/nvme0n1、外付け保存先が/mnt/backupの場合、まず再試行を抑えた初回コピーを行います。

sudo umount /dev/nvme0n1p1 2>/dev/null
sudo umount /dev/nvme0n1p2 2>/dev/null
sudo ddrescue -f -n \
  /dev/nvme0n1 \
  /mnt/backup/debian-disk.img \
  /mnt/backup/debian-disk.map

debian-disk.mapは必ず残します。処理を中断しても、同じイメージファイルとmapfileを指定すれば続きから再開できます。元ディスクの状態が安定している場合だけ、次のように不良領域を1回再試行します。

sudo ddrescue -d -r1 \
  /dev/nvme0n1 \
  /mnt/backup/debian-disk.img \
  /mnt/backup/debian-disk.map

異音、切断、温度上昇がある場合は再試行せず停止します。イメージ作成後は元ディスクを外し、イメージを読み取り専用のループデバイスとして開いて、そこからファイルを救出できます。

sudo losetup --find --show --partscan --read-only \
  /mnt/backup/debian-disk.img

# 例として /dev/loop0 と表示された場合
lsblk -f /dev/loop0
sudo mount -o ro,noload /dev/loop0p2 /mnt/source

イメージ内がLUKS暗号化されている場合は、/dev/loop0p3など実際に表示されたパーティションを、前節のcryptsetup open --readonlyで開きます。

うまくいかない場合の対処法

症状・表示確認すること避ける操作
内蔵ディスクがlsblkに出ないUEFI/BIOSで認識されるか、SATA・電源ケーブル、別のUSB-SATA変換器を確認。BIOSでも見えなければ物理故障の可能性再起動の繰り返し
wrong fs typelsblk -fとsudo blkidでFSTYPEを確認。LUKS・LVMなら専用手順を使用mkfsやフォーマット
bad superblockファイルシステム破損の可能性。重要なら先にddrescueでイメージ化し、修復は複製側で検討元ディスクへのfsck -y
Permission deniedsudo ls、sudo rsyncを使用。暗号化の場合は先に解除元ディスク全体への無計画なchmod -R
No space left on devicedf -h /mnt/backupで空き容量を確認。別の十分な保存先を用意元ディスクへの保存
Input/output errorケーブルを確認し、物理故障なら通電を減らす。重要データは業者、自己作業ならddrescueを検討同じコピーの長時間反復
target is busy開いているファイルマネージャーを閉じ、端末でcd ~してから再度umountコピー中の強制取り外し
パーティションが表示されないsudo fdisk -lで確認。パーティションテーブル破損が疑われる場合は、先にディスク全体をイメージ化新しいパーティションテーブルの作成

よくある質問

Debianのログインパスワードが分からなくても救出できますか?

通常のLinuxファイル権限だけなら、Live環境からsudoを使ってコピーできます。ただし、LUKSやeCryptfsなどで暗号化されているデータには、有効なパスフレーズや鍵が必要です。

インストールUSBのrescue modeでも救出できますか?

はい。Debian公式インストーラーにはrescue modeがあり、壊れたシステムのディスクを認識してシェルを使えます。ただし、初心者がファイルを確認しながら外付けドライブへコピーする用途では、デスクトップを使えるDebian Live USBのほうが分かりやすいでしょう。

ホームフォルダーだけで十分ですか?

個人の文書、写真、動画、ブラウザープロファイル、一般的なアプリ設定の多くはホーム内にあります。サーバー用途では/etc、/var/www、/srv、/var/libなども確認してください。

削除済みのファイルもこの方法で戻りますか?

この手順は現在ファイルシステム上に残っているデータをコピーする方法です。削除済みファイルの復元は別作業になります。元ディスクの使用を直ちに止め、できればディスクイメージを作成してから復元ツールを試します。

救出後、すぐDebianを再インストールしてよいですか?

外付けドライブ上の重要ファイルを実際に開き、可能なら別の媒体にも複製してから行います。コピーが1つだけの状態で元ディスクを消去しないでください。

まとめ

Debianが起動しなくても、ストレージが認識されて読み取れるなら、Live USBからデータを救出できる可能性があります。重要なのは、修復や再インストールを急がず、元ディスクを読み取り専用にして、別のHDD・SSDへ先にコピーすることです。

  • Debian Live USBから起動する
  • lsblkで元ディスクと保存先を確実に見分ける
  • 元ディスクをブロックレベルで読み取り専用にする
  • ext4はro,noloadでマウントする
  • rsyncでホーム全体を別ドライブへコピーする
  • 物理故障の兆候があれば通常コピーを繰り返さない

データを2か所以上へ確保できたあとで、GRUB修復、ファイルシステム検査、Debianの再インストールなど、起動問題そのものへの対処を進めます。

参考にした公式情報

コマンド例はDebian 13を基準にしています。デバイス名、パーティション構成、暗号化方式は環境ごとに異なります。

コメントを残す

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