サーバーのデータ消去用のDebian 13 Live USBを作ってみた
サーバーを廃棄・返却する際には、搭載されているストレージのデータを確実に消去しておく必要があります。
実際の現場では、単にディスクを消去するだけでなく、作業前後にサーバーの構成を確認したり、ストレージの認識状況を見たり、BMC / IPMI まわりを確認したりすることもあります。用途ごとに個別のツールを持ち込むより、必要な道具をまとめた Live USB を 1 本用意しておくほうが扱いやすいです。
そこで今回は、サーバーのデータ消去作業で使うことを前提に、Debian 13 ベースの Live USB を作ってみました。
Debian 13 を選んだ理由
データ消去専用で考えると、もっとコンパクトで軽量な Linux ディストリビューションもあります。それでも今回は Debian 13 を選びました。
理由は、用途をデータ消去だけに限定しなかったためです。サーバーを処分する前後には、CPU やメモリ、ストレージ構成の確認、ネットワークの簡易確認、BMC / IPMI の情報取得などが必要になることがあります。Debian であればパッケージの選択肢が広く、必要なツールを素直に組み込みやすいため、少し汎用寄りのメンテナンス用 USB としてまとめやすいです。
この記事では、そうした用途を想定した Debian 13 Live USB の作成手順を整理します。実際のデータ消去コマンドは媒体の種類や運用ルールによって変わるため、本記事では「作業に入るための起動環境を作る」ところまでに絞ります。
Live USB の作成
Debian の Live イメージは、Debian Live Project が提供する live-build で作成できます。設定をファイルとして残せるため、一度作って終わりではなく、必要なツールを追加しながら再生成しやすいのが利点です。
live-build のインストール
まずは live-build をインストールします。
1 | |
作業ディレクトリの作成
ビルド用のディレクトリを作成します。
1 2 | |
ビルド設定の初期化
続いて、lb config で Live イメージの基本設定を作成します。実行するとカレントディレクトリに config/ が作られ、以降の lb build はその内容を参照してイメージを生成します。
1 2 3 4 5 6 7 8 | |
今回指定した主なオプションは次のとおりです。
| オプション | 意味 |
|---|---|
| --mode debian | 全体モード。設定可能な値は、現在は実質debianのみ |
| --distribution trixie | コードネームでdistroを指定する。trixieはDebian 13 |
| --architecture amd64 | アーキテクチャを指定 |
| --binary-image iso-hybrid | iso-hybrid はsyslinuxを使用した、CD/DVDとUSB両方をサポートするイメージ |
| --debian-installer none | 収録するインストーラーの種類を指定。cdromやnetinstなどから選択可能。インストーラー不要の場合、noneを指定 |
| --archive-areas "main non-free-firmware" | アーカイブ領域を指定。必要に応じてファームウェアを扱えるよう non-free-firmware を含める |
| --bootappend-live "..." | Live 起動時に渡すブートパラメータをまとめて指定 |
Live 起動時のブートパラメータ
--bootappend-live で渡しているパラメータも、用途が分かるように分解しておきます。
| ブートパラメータ | 意味 |
|---|---|
| boot=live | Debian Live として起動 |
| components | live-config の設定処理を有効にし、用意されている構成要素をすべて実行 |
| locales=en_US.UTF-8 | ロケールを en_US.UTF-8 に設定(画面表示が英語になる。CLIなので日本語表示だと逆に文字化けする) |
| keyboard-layouts=jp | キーボード配列を日本語配列に設定 |
| keyboard-model=jp106 | キーボードの物理モデルを日本語 106 キーとして扱う指定 |
| drm_kms_helper.poll=0 | ディスプレイ接続状態を定期監視するポーリングを無効化。一部の古いモニタに必要 |
| loglevel=5 | カーネルメッセージの画面表示を絞る。レベル 5 (notice)以下を非表示 |
パッケージリストの作成
次に、Live USB に入れておくパッケージを定義します。
live-build では、config/package-lists/<任意のファイル名>.list.chroot にパッケージ名を並べることで、Live 環境へインストールするパッケージを追加できます。
今回は server-tools.list.chroot を作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | |
ここでは、大きく分けて次の用途を意識しています。
まず、sudo、less、tmux、vim、curl、openssh-client は、作業中の基本操作をしやすくするためのものです。Live 環境とはいえ、少し調べ物をしたり、ログを保存したり、別ホストへ接続したりする場面はあります。
次に、inxi、dmidecode、lshw、pciutils、usbutils、lsscsi は、サーバーの構成確認用です。筐体ごとに確認したい情報が少しずつ違うため、単一のコマンドだけでなく複数の観点から見られるようにしています。
ストレージまわりでは、smartmontools、nvme-cli、hdparm、sg3-utils、mdadm を入れています。SATA、SAS / SCSI、NVMe といった媒体の種類ごとに必要な確認手段が異なるため、消去前の認識確認や状態把握をしやすくするためです。
また、サーバーでは BMC / IPMI の確認が必要になる場面もあるため、ipmitool と freeipmi-tools も含めています。さらに、fio、stress-ng、sysstat、iproute2、ethtool、iperf3 を入れておくと、軽い動作確認やネットワーク確認にも流用できます。
ビルド中の APT 設定
イメージをビルドする際、APT はパッケージ本体だけでなく、パッケージ説明文の翻訳インデックスも取得しようとします。今回の用途では不要なので、取得対象から外しておきます。
1 2 3 | |
これにより、APT は Translation-* を使わない設定になります。劇的に変わるわけではありませんが、取得量を少し減らし、ビルド時の処理もわずかに軽くできます。
ビルドの実行
設定がそろったら、イメージを生成します。
1 | |
ビルドが完了すると、カレントディレクトリに ISO イメージが生成されます。今回の構成では、たとえば次のようなファイルができます。
1 2 | |
iso-hybrid で作成しているため、この ISO はそのまま USB メモリへ書き込んで利用できます。
USB メモリへの書き込み
書き込み先のデバイスは必ず確認します。ここを間違えると、意図しないディスクを上書きしてしまいます。
今回は /dev/disk/by-id で対象 USB を確認しています。
1 2 3 4 | |
この例では、USB メモリ本体は /dev/sdf です。パーティションである /dev/sdf1 ではなく、デバイス全体へ書き込みます。
1 2 | |
sync まで終われば、OS の書き込みキャッシュもフラッシュされます。あとは対象サーバーのブートメニューから USB 起動すれば利用できます。
作り直す場合
パッケージを追加したり、起動オプションを変更したりしたあとに再ビルドする場合は、いったん生成物を掃除してから作り直します。
1 2 | |
--purge を付けても config/ は残るため、設定ファイルを保ったままビルド成果物とキャッシュを整理できます。
動作確認
サーバーでUSBから起動して動作確認します。
まとめ
サーバー返却や廃棄に伴うデータ消去では、作業環境の準備そのものが意外と面倒です。必要なツールを含んだ Debian 13 Live USB を作っておけば、現地で対象サーバーを起動し、構成確認から消去前チェックまでを同じ環境で進めやすくなります。
今回は、live-build を使ってサーバーメンテナンス用途の Live USB を構成するところまでを整理しました。作業対象に合わせてパッケージリストを少しずつ育てていくと、再利用しやすい現場用ツールとして定着しそうです。
