まず、告白:いいえ、必要なバックアップを行いませんでした。
第二に、状況:
Fedora 25を実行するソリッドステートディスクを搭載したDell XPS 9550があります。
読み取り専用ファイルシステムに保存しようとしていると言われたときに、ファイルを作成して保存しようとしました。私のファイルシステムは現在読み取り専用であり、至る所にI / Oエラーがあります。
開いているWebブラウザーを介して自分自身にメールで送信することで、いくつかのファイルを保存できましたが、クラッシュし、再起動できません。しかし、私はまだエディターで関心のあるファイルを開いています。ファイルをどこにも保存できないようですが、その内容をコピーできます。ファイルの内容を盗み出す方法を見つけることができれば、何ヶ月もの作業を省くことができます。
しかし、いくつかの恐ろしい制限があります。USBドライブを挿入しようとしましたが、それを表すデバイスが表示されず、mount
コマンドがセグメンテーション違反で終了します。別のコンピューターにsshを試みることができますが、「バスエラー」が発生し、死にます。ping
、dmesg
、ifconfig
、これらの作品のどれも。しかし、私は持っていないvim
とless
してls
、新たな生成できるbash
インスタンスを。
いいえlynx
、いいえfirefox
、いいえgoogle-chrome
。DVDドライブはありません。
基本的に、私のSSDは死んだようです。または、マザーボード全体。メモリにはまだ価値のあるドキュメントがあり、IPアドレスとネットワーク接続があります。いくつかのランダムなコマンドを実行し、試行できるパスにさらに3500個あります。
cat
そして動作するgcc
ようです。/ tmpのファイルに書き込むことができます。ipython
まだ動作しているように見える実行中のインスタンスがあります。
だから...私が今まで試したことは失敗しました。しかし、私はまだ千の可能性があると感じています。何を考えていないのですか?どうすればこれらのファイルを死にかけているコンピューターから取得できますか?
方法がなければなりません。
更新:新しいもの:
- 自分の愚かさのためにネットワーク接続を失いました。
- 私は交換するPythonスクリプトを書いた
cp
し、cp -r
/dev
SDカードまたはUSBドライブのエントリを作成する方法を見つけない限り、データを取り出すための最善の方法は、画面と、場合によってはスピーカー/オーディオケーブルのようです。- 私はスクリプトを書いて、ファイルを読み、どのファイルが読めるかを出力しようとしています。
提案は大歓迎です!
更新2:新しいもの:
- 死にかけているコンピューターで、ファイルを少しずつ読み取り、画面を1色ずつ点滅させてそれらのビットを伝えようとするPythonスクリプトを書きました。現在、赤、緑、青、白がすべて2ビットペアを表す2ビットコードを実行しようとしています。しかし、これはうまく機能していないので、2色に切り替えて、一度に1ビットずつ実行するだけです。
- 私の他のラップトップ(このホットな新しいXPSをあきらめた信頼できる古いThinkpad)で、OpenCV Pythonライブラリを使用してWebカメラから読み取るスクリプトを作成しました。アイデアは、他のコンピューターから送信されたコードをデコードすることです。問題は、カメラからのフレームレートが毎秒15フレームのようなものであるということです。つまり、完璧なエラーのない転送があった場合、最大データレートは毎秒30ビット、つまり毎秒225バイトになります。それは1日あたり324kです。
- 死にかけているXPSでは
tar
、目的のファイルを1.7 MBの単一のアーカイブにパックするために使用できます。残念ながら、gzip
、bzip2
、xz
、lzop
と何でも圧縮ユーティリティは使用できません。zlib
しかし、Pythonのモジュールを使用して、このファイルを820KBに圧縮できます。そのサイズを考えると、おそらく数日でこのことを送信することができます。 - この転送方法は非常にエラーを起こしやすいため、XPSにハミングコードを実装して、データを送信するときにエラー修正を追加します。
- おそらくそれが起こるため、合併症が発生する可能性がありますが、少なくともこのデータを取得することは何らかの形で実現可能だと思われます!
- これはまだデータを送信するのにかなり下品な方法であるため、USBシリアルドライバーについて詳しく調べました。私は、負荷(しようとしたモジュールは
usb-serial-simple
、usb-debug
、safe-serial
)エラーO / Iを与えます。/ dev / ttyUSB *デバイスが存在しないため、カーネルに組み込まれているとは思いません。
これまでの皆さんの提案に感謝します---誰がどのプログラム/ファイルを読むことができるかを事前に知らないので、これは明確に定義された質問ではないことを知っています。このビデオのアプローチよりも優れた提案を受け入れます!
更新3:最新のもの
- PS3 Eyeウェブカメラを手に入れ、自動ゲインと露出を無効にした後、エラーのある1秒あたり1バイトであるにもかかわらず、XPSからデータを正常に読み取りました。これは大成功です---最初のデータが流出しました!しかし、レートは遅すぎて、合理的な時間内に820KBを出力できず、エラーレートが高すぎます。
- 問題は、端末への書き込みが遅すぎることです。画面の更新は瞬間的なものではありません
urxvt
。アクセスできるターミナルエミュレータの速度が遅いためです(と思います)。 - XPSのRustコンパイラにアクセスできることを発見しました。Rustを使用して送信スクリプトを書き直し、端末の更新速度が向上するかどうかを確認しましたが、役に立ちませんでした。
- 私はフレームレートを上げることができそうにないので、フレームごとに取得するデータの量を増やす必要があります。私の現在のアプローチは次のようになります。
右半分はまだクロック信号であり、新しいフレームの到着を示すために点滅します。しかし、左はグリッドになり、各セルはコーナーの赤い正方形でマークされ、赤い正方形から右下の緑のセルが点滅してビットを示します。赤い四角は、受信コンピューターがセルの位置を調整できるようにする必要があります。私はまだこの方法でデータを取得していませんが、私が取り組んでいるのはそれです。
- これらのアドホックカラーパターンの代わりにQRコードを書くことを検討することを誰かが提案しました。私もそれを調べて、おそらくこのグリッドアプローチの代わりにそれを実装します。エラー修正は、標準ライブラリを使用してデコードすることができるのと同様に、素晴らしい勝利です。
- libasound(ALSAサウンドライブラリ)にアクセスできることを学びましたが、それに関連するヘッダーファイル(
alsa/asoundlib.h
または何でも)にはアクセスできません。誰かがヘッダーなしで共有ライブラリを使用する方法を知っているか、音声出力を生成するために適切なヘッダーを書くのを助けることができれば、ファイルを取り出す音声ベースの方法があります。 - あるいは、libusbにアクセスせずに誰かがUSBデバイスを操作するのを手伝うことができたら、それで何かできるでしょうか?
前進!
更新4:オーディオ出力が生成されました!
ユーザーFrancesco Noferiは、前回のアップデートで言及したALSAライブラリを活用するのに役立つ素晴らしい仕事をしてくれました。Cコンパイラには問題がありましたが、Rustコンパイラを使用して、FFIを使用してを直接呼び出すことができましたlibasound
。私は今、たくさんのデータをオーディオで再生しましたが、それは私の音楽のように聞こえます!まだ本当のコミュニケーションチャネルを確立する必要がありますが、私は非常に希望を感じています。この時点で、私の仕事は基本的にモデムを実装することです。だから誰かがそれを行う良い方法についてのガイダンスを持っているなら、私はすべて耳です。手作業で簡単に実装できる変調と、既存のライブラリを使用できる復調が理想的です。これは、理論的には、電話ネットワークを介さずにオーディオケーブルを介して直接送信できるため、 56kbpsまたはその当時の標準に比べてはるかに優れた成果を上げることができますが、実際には私たちが何を手に入れるかを知っている人がいます。
ここと/ r / techsupportmacgyverと/ r / rustでたくさんの素晴らしい提案をしてくれたすべての人に感謝します。この「モデム」をすぐに実装し、それからエピローグでこれを仕上げます。私は自分のコードを他の絶望的な人々が将来利用できるようにどこかに置くかもしれないと思う---たぶん、死にかけているマシンに手で入力しやすい奇妙なエクストルージョンツールのリポジトリでさえあるだろうか?何が起こるか見てみましょう。
更新5:ALSAと安価なStarTech USBオーディオキャプチャデバイス(受信側のラップトップにビルトインラインがない)とのレスリングに長い時間がかかりました。私のアマチュア無線愛好家の友人は、150ボーで実行される RTTYラインプロトコルを実装しました。超高速ではありませんが、かなり信頼できます。そして、CRC32チェックサムを使用して確認された820KBファイルの転送はほぼ完了しました(Pythonのcrc32機能を使用してzlib
私がアクセスできるモジュール)。だから私は勝利を宣言している、ともう一度感謝したい!読みやすく、転送できるファイルをさらに見つけるためにもう少し時間を費やしますが、基礎は整っています。皆さんと一緒に仕事をするのは楽しかったです!
最終更新:
死にかけているマシンで:
$ tar cf ./files
$ ./checksum.py ./files.tar 9999999
Part 1 checksum: -1459633665
$ ./zlib_compress.py ./files.tar
$ ./checksum.py ./files.tar.z 9999999
Part 1 checksum: -378365928
$ ./transmit_rust/target/debug/transmit ./files.tar.z
Transmitting files.tar.gz over audio using RTTY
Period size: 2048
Sample rate: 44100
Samples per bit: 294
Sending start signal.
Transmitting data.
nread: 2048
nread: 2048
...
nread: 2048
nread: 208
Transmission complete. Sending hold signal.
レスキューマシンで:
$ minimodem --rx -8 --rx-one -R 44100 -S 915 -M 1085 --startbits 3
--stopbits 2 --alsa=1 150 -q > ./files.tar.z
$ ./checksum.py ./files.tar.z
Part 1 checksum: -378365928
$ ./zlib_decompress.py ./files.tar.z
$ ./checksum.py ./files.tar
Part 1 checksum: -1459633665
:-)
python -m SimpleHTTPServer
。これで、ポート8000のhttpサーバーを介してファイルを共有しています。同じネットワーク内の他のデバイスでブラウザを開き、次のように入力します: 可能なすべてのダウンロードを開始します。http://<IP address>:8000