İlk önce, bir itiraf: hayır, yapmam gereken yedekleri yapmadım.
İkincisi, durum:
Fedora 25 çalıştıran katı hal diskli bir Dell XPS 9550'm var .
Bir dosya üzerinde çalışıyordum ve salt okunur bir dosya sistemine kaydetmeye çalıştığım söylendiğinde onu kaydetmeye çalıştım . Dosya sistemimin artık salt okunur ve her yerde g / ç hataları var .
Açık bir web tarayıcısı aracılığıyla bazı dosyaları kendime e-postayla göndermeyi başardım, ancak bu çöktü ve yeniden başlatamıyorum. Ancak yine de bir editörde ilgimi çeken dosyalar var. Dosyaları hiçbir yere kaydedemiyorum ama içeriğini kopyalayabiliyorum. Keşke dosya içeriğini boşaltmanın bir yolunu bulsaydım, aylarca kendimi kurtarabilirdim.
Ancak bazı korkunç sınırlamalar var. Bir USB sürücü takmaya çalıştım, ancak hiçbir cihaz onu temsil etmiyor gibi görünüyor ve mount
komut bir segfault ile ölüyor. Başka bir bilgisayara ssh göndermeye çalışabilirim, ancak "veriyolu hatası" alıyorum ve ölüyor. ping
, dmesg
, ifconfig
, Bunların hiçbiri işe yaramazsa. Ama var vim
ve less
ve ls
ve yeni iletebilir bash
örneklerini.
Hayır lynx
, hayır firefox
, hayır google-chrome
. DVD sürücüsü yok.
Temelde SSD'm öldü gibi görünüyor. Ya da belki bütün anakart. Hala çok değerli belgelerim var, bir IP adresim ve ağ bağlantım var, birkaç rastgele komut çalıştırabilirim ve deneyebileceğim yolda 3500 daha fazla olabilir.
cat
ve gcc
iş gibi görünüyor. / Tmp içindeki dosyalara yazabilirim. ipython
Hala işe yarayan çalışan bir örneğim var.
Yani ... şu ana kadar denediklerim başarısız oldu. Ama hala bin olasılık varmış gibi hissediyorum. Ne düşünmüyorum? Bu dosyaları ölmekte olan bilgisayarımdan nasıl alabilirim?
Bir yolu olmalı.
GÜNCELLEME : Yeni şeyler:
- Kendi salaklığım yüzünden ağ bağlantımı kaybettim.
- Değiştirmek için bir Python betiği yazdım
cp
vecp -r
/dev
SD kart için veya USB sürücüler için bir giriş yapmanın bir yolunu bulamazsam , veri almak için en iyi bahislerim ekrana ve muhtemelen hoparlör / ses kablosuna benziyor.- Dosyaları okumayı denemek için bir komut dosyası yazıyorum ve hangilerinin okunabileceğini gösteririm.
Öneriler hala çok hoş geldiniz!
GÜNCELLEME 2 : Yeni şeyler:
- Ölmek üzere olan bilgisayarda, bir dosyayı yavaş yavaş okuyacak bir Python betiği yazdım ve bu bitleri ekrana bir renk veya başka bir yanıp sönerek aktarmaya çalışacağım. Şu anda kırmızı, yeşil, mavi ve beyazın iki bitlik bir çifti temsil ettiği iki bitlik bir kod yapmaya çalışıyor. Bu o kadar iyi çalışmıyor ama, iki renge geçip her seferinde bir bit yapabilirim.
- Diğer dizüstü bilgisayarımda (bu yeni ve yeni XPS için bıraktığım eski ve güvenilir Thinkpad), OpenCV Python kütüphanesini kullanarak web kamerasından okuyan bir senaryo yazdım. Fikir, diğer bilgisayar tarafından gönderilen kodları çözmesini sağlamaktır. Sorun şu ki, kameradan alınan kare hızının saniyede 15 kare gibi bir şey olması, yani kusursuz, hatasız bir aktarım olsaydı, maksimum veri hızım saniyede 30 bit, yani saniyede 225 bayt olurdu. Bu günde 324k.
- Ölmekte olan XPS'de
tar
, istenen dosyaları 1.7 MB olan tek bir arşive paketlemek için kullanabilirim . Ne yazık ki,gzip
,bzip2
,xz
,lzop
ve yardımcı programlar kullanılamaz olursa olsun sıkıştırma. ANCAK Pythonzlib
modülünü kullanarak bu dosyayı 820KB'a kadar sıkıştırabilirim. Bu büyüklük göz önüne alındığında, bu şeyi birkaç gün içinde gönderebilirim. - Bu aktarım yöntemi büyük olasılıkla hataya meyilli olacağından, verileri iletirken bazı hata düzeltmeleri eklemek için XPS'ye Hamming kodları uygulayacağım.
- Muhtemelen komplikasyonlar olacaktır çünkü olan budur, ama en azından bu veriyi çıkarmak bir şekilde uygun görünüyor!
- Bu hala veri gönderme konusunda oldukça berbat bir yol olduğundan, USB seri sürücülere daha fazla baktım. Denedim modülleri yüklemek için (
usb-serial-simple
,usb-debug
,safe-serial
) / o hataları i verir. İçinde de olduğunu sanmıyorum, çünkü / dev / ttyUSB * cihazı yok.
Şu ana kadar ki herkesin önerileri için teşekkürler --- bunun önceden tanımlanmış bir soru olmadığını biliyorum çünkü siz hangi programları / dosyaları okuyabileceğinizi veya okuyamayacağınızı önceden bilmiyorsunuz. Hala bu video yaklaşımından daha iyi önerilere açık!
GÜNCELLEME 3 : En yeni şeyler
- Bir PS3 Eye web kamerasına sahibim ve otomatik kazancını ve gösterimini devre dışı bıraktıktan sonra, saniyede hatalı bir bayt olsa bile, XPS'den verileri başarıyla okuyorum. Bu büyük bir başarıdır --- ilk veri boşaltıldı! Ancak bu oran 820KB’yi makul bir sürede çıkarmak için çok yavaştır ve hata oranı çok yüksektir.
- Sorun terminale yazmanın çok yavaş olmasıdır. Ekran güncellemeleri anlık gibi bir şey değil
urxvt
, erişimimin olduğu terminal emülatörünün yavaşlığına (sanırım) teşekkürler . - XPS'deki bir Rust derleyicisine erişimim olduğunu keşfettim. Terminal betiği hızını arttırıp arttırmayacağını görmek için aktarım komut dosyasını Rust kullanarak yeniden yazdım, ancak işe yaramadı.
- Kare hızını arttıramayacağım için, kare başına veri miktarını artırmaya çalışacağım. Mevcut yaklaşımım şuna benzer:
Sağ taraf hala bir saat sinyalidir ve yeni karelerin geldiğini işaretlemek için yanıp söner. Fakat sol şimdi, her hücrenin köşesinde kırmızı bir kare ile işaretlendiği bir ızgaradır ve daha sonra yeşil hücrenin, kırmızı kareden sağa ve aşağıya yanıp sönmesi bir bit belirtmek üzere açılıp kapanmaktadır. Kırmızı kareler alıcı bilgisayarın hücrelerin bulunduğu yeri kalibre etmesine izin vermelidir. Henüz bu yolla ilgili veri alamadım, ama üzerinde çalıştığım şey bu.
- Biri bu geçici renk desenleri yerine QR kodları yazmamı önerdi. Ben de bunu inceleyeceğim ve belki de bu ızgara yaklaşımı yerine bunu uygulayacağım. Hata düzeltme, iyi bir kazanç olur ve aynı zamanda kod çözme için standart kütüphaneleri kullanabilir.
- Libasound'a (ALSA ses kütüphanesi) erişebildiğimi, ancak onunla ilişkili başlık dosyalarına (
alsa/asoundlib.h
ya da her neyse) erişimim olmadığını öğrendim . Herhangi biri, paylaşılan bir kitaplığı başlıkları kullanmadan kullanmayı biliyorsa veya ses çıkışı üretmeme izin vermek için doğru başlığı yazmama yardımcı olabilirse, dosyaları çıkarmak için ses tabanlı bir yöntemim olabilir. - Alternatif olarak, biri USB aygıtları libusb'a erişmeden kullanmama yardımcı olabilirse, belki bununla bir şeyler yapabilir miyim?
İlerliyor!
GÜNCELLEME 4 : üretilen ses çıkışı!
Kullanıcı Francesco Noferi, önceki güncellemede belirtilen ALSA kütüphanesinden faydalanmama yardımcı olacak harika bir iş çıkardı. C derleyicisinin bir sorunu vardı, ama Rust derleyicisini kullanarak doğrudan FFI'yı kullanabildim libasound
. Şimdi ses verilerimin bir demetini çaldım ve kulağımın müziğine benziyor! Hala gerçek bir iletişim kanalı kurmaya ihtiyacım var, ama kendimi çok umutlu hissediyorum. Bu noktada benim işim temelde bir modemi uygulamak, bu yüzden herhangi biri iyi yollarla ilgili herhangi bir rehbere sahipse, benim kulaklarım. İdeal olarak elle kolayca uygulanabilen modülasyon ve bunun için kullanabileceğim bir kütüphanenin bulunduğu demodülasyon. Bu, telefon şebekesi üzerinden değil, doğrudan bir ses kablosu üzerinden yapılabildiğinden teorik olarak 56kbps'den veya günün geri kalanında ne olursa olsun daha iyisini yapabiliriz, ancak pratikte ne alacağımızı bilen var.
Burada boyunca ve şu herkese teşekkür / r / techsupportmacgyver de ve / r / pas de çok mükemmel öneri katkıda. Bu "modemi" yakında uygulamaya sokacağım ve sonra bunu bir epilog ile bitireceğim. Sanırım kodumu ileride kullanmak üzere diğer umutsuz insanların kullanabileceği bir yere koyabilirim - belki de elle ölmekte olan bir makineye yazması kolay tuhaf atık filtreleme araçları deposu? Ne olacağını göreceğiz.
GÜNCELLEME 5 : ALSA ve ucuz StarTech USB ses yakalama cihazımla (alıcı dizüstü bilgisayarda yerleşik bir hat yok) çok uzun zaman aldı ve çoğu yanlış kendi iletim protokolümü almaya çalışırken, ancak sonunda bazılarının tavsiyesi altında Ham radyo meraklısı arkadaşlarımın150 baudda çalışan RTTY hat protokolünü uyguladım, bu da pratikte saniyede yaklaşık 10 bayt veriyor. Süper hızlı değil ama oldukça güvenilir. Ve neredeyse 820KB dosyamı transfer ettim, CRC32 sağlama toplamlarını kullanarak (Python’un crc32 işlevini kullanarak)zlib
erişebildiğim modül). Bu yüzden zafer ilan ediyorum ve bir kez daha teşekkür etmek istiyorum! Okunabilen ve aktarabileceğim başka dosyalar bulmak için biraz daha zaman harcayacağım, ancak kuruluş yerinde. Hepinizle çalışmak eğlenceli oldu!
NİHAİ GÜNCELLEME :
Ölmekte olan makinede:
$ 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.
Kurtarma makinesinde:
$ 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
. Şimdi dosyaları 8000 numaralı bağlantı noktasındaki bir http sunucusu üzerinden paylaşıyorsunuz . Aynı ağdaki diğer cihazda bir tarayıcı açın ve aşağıdakini yazın: ve yapabildiğiniz her şeyi indirmeye başlayın. http://<IP address>:8000