USBブートLinuxでデータ救出!GUIディスクユーティリティ「salvage_linux」開発奮闘記

USBブートLinuxでデータ救出!GUIディスクユーティリティ「salvage_linux」開発奮闘記

こんにちは!先日、同僚から「Windowsが起動しなくなったPCからデータを取り出せないか?」と相談を受けました。
しかも、「物理的にディスクを取り出すのは面倒だし、Linuxのコマンド操作も分からない…」とのこと。

そこで、「USBブートLinuxで起動して、GUIで簡単にディスクをマウントし、データを取り出せるツールがあればいいのに…」
…という思いから、今回のプロジェクト、「salvage_linux」の開発がスタートしました!

最終的な目標は、

  1. USBブートLinuxでPCを起動
  2. 内蔵ディスクをマウントし、必要なデータを救出
  3. (既存の削除ツールを使って)ディスクを完全消去し、PCを廃棄

という一連の作業を、GUIで簡単に行えるようにすることです。

この記事では、「salvage_linux」の開発背景、機能、使い方、そして、開発の裏側を、余すところなくお伝えします!

「Linuxでデータ復旧って、難しそう…」「コマンド操作はちょっと…」という方も、ご安心ください。
このツールは、GUIで直感的に操作できるように設計してあります!

この記事を読めば、

  • 「salvage_linux」で何ができるのかが分かる!
  • ツールの使い方(プレリリース版)が分かる!
  • 開発の裏側、苦労話が聞ける!(そして、応援したくなる!)

Linuxでデータトラブルに直面している方、システム管理に携わる方、そして、開発秘話に興味がある方、ぜひ最後までお付き合いください!

開発の背景:同僚のSOS!Windows PCからデータを救え!

今回の開発のきっかけは、同僚からのSOSでした。
「Windowsが起動しなくなったノートパソコンがあるんだけど、中のデータを取り出せない?物理的にディスクを取り出すのは面倒だし、Linuxのコマンド操作も分からない…」

私自身、Linuxのコマンド操作にはある程度慣れていましたが、GUIツールとなると話は別です。
しかし、「困っている同僚を助けたい!」という思いと、「新しい技術に挑戦したい!」という好奇心から、開発を決意しました。

調べてみると、軽度の破損したディスクは読み取り専用になることがあるものの、データのコピーは可能とのこと。
そこで、

  • USBブートLinuxでPCを起動
  • 内蔵ディスクをマウント
  • 必要なファイルを外付けHDDなどにコピー
  • (既存の削除ツールで)ディスクを完全消去

という一連の作業を、GUIで簡単に行えるツールを目指すことにしました。

(ちなみに、ディスクの完全消去には、既に別のツールが使われているとのことでした。)

実験的に、`chmod 777` コマンドでファイル/ディレクトリのアクセス権を変更し、読み取り専用状態から復旧できる機能も盛り込みました。
ただし、この機能は、実際にそのような状態のPCが現れないとテストできないため、現時点では動作未確認です。

「salvage_linux」の特徴:ここがスゴイ!

「salvage_linux」には、こんな特徴があります!

  • USBブートLinuxで動作: システムが起動しないPCでも、USBメモリからLinuxを起動して、データ復旧作業を行えます。
  • GUIで簡単操作: コマンド操作が苦手な方でも、直感的に操作できます。
  • ファイルシステム自動判別: NTFS, exFAT, ext4など、主要なファイルシステムに対応。
  • Windowsが起動しないPCからのデータ救出に特化:
    内蔵ディスクをマウントし、必要なデータを安全な場所に退避させることができます。

対象ユーザーは、Linuxの基本操作(ターミナルの使い方、コマンドの実行など)ができる方を想定しています。

「salvage_linux」の使い方(プレリリース版)

基本的な使い方を説明します。

1. インストール

GitHubリポジトリから、ソースコードをクローンします。


git clone https://github.com/toma4423/salvage_linux.git

現在リポジトリにてプレリリース版をリリースしています。
実行可能な状態のファイルが用意してあります。
Lubuntuにて sudo ./salvage_linux をターミナルで実行することで動作することを確認しました。

(将来的には、バイナリファイルをダウンロードして、すぐに使えるようにする予定です。)

2. 実行

※GUIの画像を追加予定

ターミナルで、`salvage_linux` ディレクトリに移動し、`main.py` スクリプトを実行します。


cd salvage_linux
sudo python3 main.py

スクリプトを実行すると、GUIが表示されます。

表示される指示に従って操作を進めていくことで、ディスクのマウント、データの抽出などを行うことができます。

コピー先ディスクのフォーマット、マウントしたディスクをファイルマネージャーで開く、
マウントしたディスクに権限付与を行うことが可能です。

「salvage_linux」の仕組み(技術的な概要)

「salvage_linux」は、Pythonで記述されており、GUIにはTkinterライブラリを使用しています。

メインの処理はmain.pyファイルに記述されており、
ディスク関連の処理はsrc/disk_utils.pyファイルに定義されたDiskUtilsクラスで実行されます。
src/logger.pyファイルにはLoggerクラスが定義されており、ログの記録に利用されます。

このツールでは、主に以下の処理を行っています。

  1. ディスク/パーティションの検出:
    • `lsblk` コマンドで、システムに接続されているブロックデバイス(ディスク、パーティション)の情報を取得します。
    • `fdisk -l` コマンドで、各ディスクの詳細情報(パーティションテーブルなど)を取得します。
    • これらの情報から、未マウントのディスク/パーティションを特定します。
  2. ファイルシステムの特定:
    • `blkid` コマンドで、選択されたディスク/パーティションのファイルシステムの種類(NTFS, exFAT, ext4など)を特定します。
  3. マウントポイントの作成:
    • ユーザーが指定したマウントポイント(デフォルトは `/mnt/usb`)が存在しない場合、`mkdir` コマンドでディレクトリを作成します。
  4. マウント:
    • `mount` コマンドで、指定されたディスク/パーティションを指定されたマウントポイントにマウントします。
    • ファイルシステムの種類に応じて、適切なオプション(`-t ntfs-3g`, `-t exfat` など)を指定します。
  5. 権限付与:
    • `chmod` コマンドで、マウントされたディレクトリ以下のファイル/ディレクトリに対して、適切なアクセス権限を付与します。(現時点では `chmod -R 777` を使用)

GUIは、PythonのTkinterライブラリを使用して実装しました。
Tkinterを選んだ理由は、Pythonの標準ライブラリであり、追加のインストールが不要で、シンプルなGUIを簡単に作成できるためです。

開発の舞台裏:AIと二人三脚、試行錯誤の日々

今回の開発では、AIエディタ「Cursor」が大活躍!
Pythonのコードの記述、Linuxコマンドの使い方、エラーの解決など、様々な場面でCursorに助けてもらいました。

事前にどのような処理をするのかドキュメントにまとめてから、
それを元にAIへ指示を出しました。
その結果、スムーズに開発を進められました。

特に苦労したのは、macOSでの「壊れています」エラーの解決です。
原因を特定するために、エラーメッセージやログをCursorに解析してもらったり、シンボリックリンクや拡張属性について教えてもらったり…と、まさにAIと二人三脚で問題に取り組みました。

また、PyInstallerでのパッケージング、Info.plistの編集、macOSのセキュリティ機構など、初めて知ることばかりで、試行錯誤の連続でした。
しかし、その過程で、macOSの仕組みについて অনেক深く学ぶことができました。

プレリリース版について:現状と課題

「salvage_linux」は、現在プレリリース版として公開しています。
基本的な機能は実装されていますが、まだいくつかの問題点や制限事項があります。

  • ウィンドウサイズを変更したときにボタンなどのレイアウトが見切れてしまう問題があります。
  • ファイルマネージャーで開くボタンが機能していません。これは開発に使用したVirtualBoxと実際に動かす環境との差でパスが違うため機能していません。
  • エラー処理が不十分: 想定外のエラーが発生した場合、適切なエラーメッセージが表示されない可能性があります。
  • テストが不足: 様々な環境での動作確認が十分にできていません。

これらの問題点については、今後の開発で順次対応していく予定です。

もし、このツールを試してみて、不具合や改善点などがありましたら、ぜひGitHubリポジトリのIssuesで報告してください!
皆様からのフィードバックが、開発の大きな助けになります。

まとめ:Linuxデータ復旧の希望の光を目指して

今回は、開発中のGUIディスクユーティリティ「salvage_linux」について、その背景、機能、仕組み、そして開発の裏側をご紹介しました。

このツールが、Linuxでデータトラブルに直面した際の、心強い味方となることを目指して、今後も開発を続けていきます!

プレリリース版ではありますが、ぜひ実際に使ってみて、感想や意見を聞かせていただけると嬉しいです。
一緒に、「salvage_linux」をより良いツールに育てていきましょう!

今後の開発予定としては、

  • レイアウト崩れ ファイルマネージャーで開くボタンの修正
  • エラー処理の強化
  • 対応ファイルシステムの追加
  • テストの充実

などを考えています。ご期待ください!

今回の開発ではAIエディタの利用がなければここまで早く開発を進められなかったと思います。
ありがとうAI!

Comments

No comments yet. Why don’t you start the discussion?

    コメントを残す

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