Kapatıldığında CD'yi çıkar


12

Tamam, bu yüzden basit bir sorunum var: Canlı bir CD'm var ve bilgisayar yeniden başlatıldığında veya durdurulduğunda CD'nin çıkmasını istiyorum.

Yürütmek /usr/bin/eject -mCD çıkartma iyi yapar ... sorun, beklediğiniz gibi, bu daha sonra herhangi bir dosya okuyamaz çünkü işletim sistemi çöküyor. Böylece yeniden başlatma asla gerçekleşmez, çünkü /sbin/rebooterişilemez. ( reboot --help > /dev/nullYeniden başlatmadan hemen önce yürütmeyi denedim , ancak hala okunamayan başka dosyalar var ...)

Özetle, çıkarmanın gerçekleşen son şey olmasını sağlamam gerektiği anlaşılıyor. Öyle görünüyor ki systemdoynamam gereken köpek yavrusu ... Ama hayatımın tam anlamıyla saatler sürüp boşa harcadım ve ne yaparsam yapayım, hiçbir koşulda CD'yi asla çıkarmaz. Ve neden olduğu hakkında hiçbir fikrim yok. Bir düzine farklı çağırma yöntemi denedim eject, ama hiçbir şey olmuyor.

Biri bana koşmanın en basit yolunu söyleyebilir ejectmi? (Hemen sonra umount.targetmantıklı olur ...)


Bilgisayarda başka bir işletim sisteminiz var ya da CD'yi neden yeniden başlattığınızda çıkarmak istersiniz? Bu nedenle, CD'den mi yoksa diskten mi önyükleme yapılacağını seçebileceğiniz bir önyükleme menüsü ayarlarsanız, muhtemelen daha iyisini yapabilirsiniz.
Emanuel Berg

CD'yi taktıktan sonra, hala initramf'lerinizin içeriğinde kalmadınız mı? Orada ejectvarsa, iyi olur muydun?
Ulrich Schwarz

Tut. Bu garip. Linux Mint ve bence Ubuntu bunu varsayılan olarak yapıyor.
Linuxios

Yanıtlar:


4

Sonunda meslektaşım aşağıdaki makaleyi buldu:

http://lists.freedesktop.org/archives/systemd-devel/2012-September/006573.html

Özetle, ben adlı bir dosya oluşturdum /lib/systemd/system/eject.serviceiçeriyor

[Unit]
Description=Eject the DVD
Before=final.target
After=shutdown.target
DefaultDependencies=no

[Service]
Type=oneshot
ExecStart=/usr/bin/eject -m
StandardInput=tty-force
StandardOutput=inherit
StandardError=inherit

[Install]
WantedBy=shutdown.target

Ayrıca çalıştırmak zorunda systemctl enable eject.servicebu aslında yapmak do şey. Ama şimdi systemdCD'yi tam olarak istediğim gibi kapatmadan önce çıkarıyor.

... ne yazık ki işletim sistemi CD'nin çıkarıldığı dosyaların geri kalanını bulamadığında hala hata veriyor. Ben yukarıdaki dosyaları ayarlamaya çalıştık After=unmount.target, bu yüzden dosya sistemleri kaldırıldıktan sonra komut dosyasını çalıştırdığını düşünürdüm . Ama hayır, yine de segfaults.

Öyle görünüyor ki, canlı CD görüntüsünü önyükleme sırasında RAM'e nasıl kopyalayacağımı bulmam gerekecek - ama bu başka bir soru ...


1

Aşağıdakiler size yardımcı olabilir:

  • Çıkarma komutunuzu /etc/init.d/halt.local adresine ekleyin

  • Ayrıca /etc/init.d/skeleton şablonuna bakabilir ve örneğin sistem kapatılması gibi bazı çıktılar eklemek için özelleştirebilirsiniz, cdrom'u çıkarmak için herhangi bir tuşa basın.

  • /Etc/init.d dizinindeki /etc/rc0.d (durma) çalışma düzeyi dizinlerine bağlanan komut dosyalarını inceleyin.


0

Çalışma /etc/init.ddüzeyi dizinlerindeki /etc/rc0.d(durma) ve /etc/rc6.d(yeniden başlatma) bağlantılı komut dosyalarına göz atın . Örneğin, eject komutunu girdim /etc/init.d/rebootve işe yaradı.

Ancak, Live CD'de değilim, bu yüzden neyin işe yarayacağını test edemiyorum.

Bunu düşünürseniz, böyle bir şey, bir senaryo veya hatta derlenmiş bir ikili koyarak hayal etmek zordur. Bir ikili bile bazı tahsis / dağıtma yükü gerektirir ve CD'yi çıkarır çıkarmaz işiniz biter. Aksine, bazı süper kalıcı bellekte saklanan bir makine talimatının bayrağı ve işaretçisi gibi olmalıdır ...

Belki de komutu çalıştırmak ve işletim sistemini kasıtlı olarak çökmek daha kolaydır, ancak hemen hemen tüm şeyler çevrimdışı olduğunda bunu yapmak, bu nedenle kalan sisteminizi kilitlemeniz önemli değildir.

(Düzenle) Başka bir düşünce: Bir şekilde dosya sisteminizi bölümleyebilir, sadece eject komutu için bir bölüm oluşturabilir ve yeniden başlatabilir, diğerlerinin bağlantısını kesebilir ve ardından komutu çalıştırabilir misiniz? (Ama muhtemelen fsck'e her seferinde çıkarma bölümünün doğru bir şekilde sökülmediğinden şikayet etmemesi söylenmelidir.) Veya bir USB çubuğuna koyabilir misiniz? (Bu çok ilginç bir sorundur; çözerseniz bize söyleyin!)

(Düzenle 2) Çıkarmayı ve yeniden başlatmayı birleştirmeye ne dersiniz , böylece bir ikili dosya alırsınız , belleğe yüklenir, CD'yi çıkarır, ancak herhangi bir dosya sisteminden yeniden başlatmaya gerek yoktur, zaten ana bellekte mi?


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.