View previous topic :: View next topic |
Author |
Message |
Raku Bodhisattva
Joined: 28 Feb 2004 Posts: 2374 Location: Poland
|
Posted: Wed Sep 14, 2005 6:32 am Post subject: Jak sprawdzić, czy płyta CD jest w napędzie? |
|
|
Czy jest jakiś sprytny sposób, aby sprawdzić czy płyta CD jest w napędzie?
piszę sobie ksrypcik uruchamiający Windows 2000 w qemu z obsługą sieci (ładowanie modułu kqemu, inicjacja fde do obsługi sieci, uruchomienie win2k i wyłączneie wszystkiego po zakończeniu).
No i jest problem z qemu - jeśli poda się mu patametr -cdrom /dev/hda (mój wypalacz do DVD) a nie ma tam płytki włożonej, to się nie uruchamia. Jesli nie podam parametru -cdrom, jest OK. Ale chcę zrobić wykrywanie obecności CD w napędzie i podstawianie parametru w przypadku pozytywnym.
Patrzyłem za czymś użytecznym w /proc, ale coś nie mogę znaleźć _________________ raku
Powered by Archlinux |
|
Back to top |
|
|
joi_ Apprentice
Joined: 28 Mar 2005 Posts: 171
|
Posted: Wed Sep 14, 2005 6:43 am Post subject: |
|
|
jeżeli płyta jest zamontowana, to możesz zgrepować wynik polecenia mount,
jeżeli nie jest - możesz spróbować zamontować (jeżeli się uda, to jest, jeżeli nie, to nie ) |
|
Back to top |
|
|
univac^ Apprentice
Joined: 19 Sep 2004 Posts: 231 Location: Suwalki, Polska
|
Posted: Wed Sep 14, 2005 7:15 am Post subject: |
|
|
Raczej chodzilo mi o nie zamontowana... _________________ Gentoo own3d |
|
Back to top |
|
|
Raku Bodhisattva
Joined: 28 Feb 2004 Posts: 2374 Location: Poland
|
Posted: Wed Sep 14, 2005 7:36 am Post subject: |
|
|
na montowanie tez wpadłem, ale to trochę takie naokoło rozwiązanie.
Myślałem, żeby wykorzystać do tego jakieś informacje z /proc
Teraz mi przyszło do głowy, że może by spróbować czegoś z dbus/hal ?
Tylko nie wiem jeszcze jak te informacje wydobyć. Gdyby ktoś mógł pomóc _________________ raku
Powered by Archlinux |
|
Back to top |
|
|
ursereg n00b
Joined: 21 Feb 2005 Posts: 3 Location: Poland
|
Posted: Wed Sep 14, 2005 7:45 am Post subject: |
|
|
Troche na około zapewne, ale używając ivman'a można by coś takiego zrobić (działą to jak automounter, i można chyba dowolną akcje przypisać). _________________ M.M. |
|
Back to top |
|
|
sebas86 Guru
Joined: 01 May 2005 Posts: 568 Location: Szczecinek / Szczecin
|
Posted: Wed Sep 14, 2005 10:08 am Post subject: |
|
|
Ja rozwiązałem kiedyś coś takiego inaczej (skrypt który wysówał płyte jeśli ta była zamontowana lub montował w odwrotnym przypadku). Wykorzystaj fakt, że w Linuksie wszystkie napędy to katalogi do których montujesz, stwórz w nim plik o nazwie np. .nomount i testuj jego obecność . Oczywiście tego pliku nie będzie jeśli płytka będzie zamontowana w danym katalogu .
--edit--
Gentoo domyślnie tworzy pliki .keep w niektórych miejscach |
|
Back to top |
|
|
Raku Bodhisattva
Joined: 28 Feb 2004 Posts: 2374 Location: Poland
|
Posted: Wed Sep 14, 2005 12:24 pm Post subject: |
|
|
ale ja nie chcę się bawić w montowanie
jeśli będę miał zamontowaną płytę, to mogę sobie polecenie mount wygrepować i wycutować
cóż - pobawię się halem w wolnej chwili, a póki co napisze dwie wersje skryptu _________________ raku
Powered by Archlinux |
|
Back to top |
|
|
sebas86 Guru
Joined: 01 May 2005 Posts: 568 Location: Szczecinek / Szczecin
|
Posted: Wed Sep 14, 2005 12:52 pm Post subject: |
|
|
Widzisz (a może właśnie nie...), że jak masz stworzony plik to jeśli urządzenie jest podmontowane to plik wraz z resztą zawartości katalogu jest przesłonięty, nikt nie karze nic Ci montować na nowo, po prostu sprawdzasz i już. I nie trzeba się bawić w filtrowanie wyjść innych poleceń. |
|
Back to top |
|
|
mrto Apprentice
Joined: 13 May 2005 Posts: 151
|
Posted: Wed Sep 14, 2005 2:21 pm Post subject: |
|
|
Widzisz (albo raczej nie ) twoja metoda jest doskonała, ale raku nie chce montować płyty. Potrzebuje sprawdzic jedynie czy fizycznie jest ona w napedzie (bez montowania). |
|
Back to top |
|
|
sebas86 Guru
Joined: 01 May 2005 Posts: 568 Location: Szczecinek / Szczecin
|
Posted: Wed Sep 14, 2005 2:32 pm Post subject: |
|
|
Znalazłem sposób
wykorzystaj dd do testowania i patrz na kod błędu. Ja zrobiłem coś takiego na nie zamountowanej płytce (ale płyta w napędzie):
Code: | dd if=/dev/cdrom of=~/test.1 count=1 bs=1000 |
u mnie to wyglądało tak (płyta w napędzie):
Code: | seba@icss:/dev$ seba@icss:/media$ umount /media/cdrom
seba@icss:/media$ dd if=/dev/cdrom of=~/test.1 count=1 bs=1000
1+0 rekordów wczytanych
1+0 rekordów zapisanych
1000 bytes transferred in 0,076862 seconds (13010 bytes/sec) |
przy braku płyty:
Code: | seba@icss:/media$ dd if=/dev/cdrom of=~/test.1 count=1 bs=1000
dd: otwieranie `/dev/cdrom': Brak medium |
|
|
Back to top |
|
|
Raku Bodhisattva
Joined: 28 Feb 2004 Posts: 2374 Location: Poland
|
Posted: Wed Sep 14, 2005 6:41 pm Post subject: |
|
|
sebas86 wrote: | Widzisz (a może właśnie nie...), że jak masz stworzony plik to jeśli urządzenie jest podmontowane to plik wraz z resztą zawartości katalogu jest przesłonięty, nikt nie karze nic Ci montować na nowo, po prostu sprawdzasz i już. I nie trzeba się bawić w filtrowanie wyjść innych poleceń. |
po co mam tworzyć jakieś pliki i sprawdzać ich istnienie, skoro coś takiego mi sprawdza, czy dysk jest zamontowany (tu akurat sprawdzam czy jeden z dysków twardych w kieszeni jest zamontowany):
Code: |
if [ -z "`mount |grep /dev/hdh5`" ]; then echo "Nie zamontowany"; else echo "Zamontowany"; fi
|
Nie zmienia to faktu, że musiałbym CD montować, a nie zawsze jest taka potrzeba (nie używam ivmana, tylko korzystam z hala i kioslaves w KDE)
seba86: coś podobnego mi się kręciło po głowie, tylko że ja zrobiłem test poleceniem cat /decv/cdrom )) Nie pomyślałem o dd
póki co, to jest najlepsza metoda. A jak mi się uda odpytać hala, dam znać o rezultatach. _________________ raku
Powered by Archlinux |
|
Back to top |
|
|
ketjow Guru
Joined: 01 Apr 2004 Posts: 382 Location: Krakow, Poland
|
Posted: Wed Sep 14, 2005 10:07 pm Post subject: |
|
|
raku, zauwaz ze plyty AudioCd nie mozna podmontowac a jednak fizycznie jest w napedzie |
|
Back to top |
|
|
Raku Bodhisattva
Joined: 28 Feb 2004 Posts: 2374 Location: Poland
|
Posted: Thu Sep 15, 2005 5:56 am Post subject: |
|
|
masz rację, ale w moim przypadku, obecność płyty audo jest równoznaczna z jej brakiem w napędzie. Przypominam, że jest mi to potrzbene tylko do uruchamiania win2k w qemu. Audio CD nie muszę czytać w emulowanym systemie. Mam do tego system podstawowy (linuksa). _________________ raku
Powered by Archlinux |
|
Back to top |
|
|
Zwierzak Veteran
Joined: 19 Sep 2003 Posts: 1012 Location: /dev/null
|
Posted: Thu Sep 15, 2005 1:49 pm Post subject: |
|
|
Najprostrza metoda:
Co prawda raczej nie jest polecane robienie tego kiedy jest cdrom wewnątrz, ale najprostrzym sposobem na sprawszenie czy jest cdrom to poprostu proba czytania z niego |
|
Back to top |
|
|
sebas86 Guru
Joined: 01 May 2005 Posts: 568 Location: Szczecinek / Szczecin
|
Posted: Thu Sep 15, 2005 2:21 pm Post subject: |
|
|
raku wrote: | po co mam tworzyć jakieś pliki i sprawdzać ich istnienie, skoro coś takiego mi sprawdza, czy dysk jest zamontowany (tu akurat sprawdzam czy jeden z dysków twardych w kieszeni jest zamontowany) |
Przepraszam nie doczytałem, czasami z pośpiechu coś przeocze .
raku wrote: | masz rację, ale w moim przypadku, obecność płyty audo jest równoznaczna z jej brakiem w napędzie. Przypominam, że jest mi to potrzbene tylko do uruchamiania win2k w qemu. Audio CD nie muszę czytać w emulowanym systemie. Mam do tego system podstawowy (linuksa). |
Zastanawiam się właśnie nad jakimiś magicznymi bitami, które by identyfikowały rodzaj płytki (dane czy audio) bo w końcu system też musi się jakoś domyślać z czym ma do czynienia. Każdy system plików ma swój identyfikator, tylko trzeba wiedzieć gdzie jest zapisany i jak wygląda, a wtedy wyciągnięty kawałek danych za pomocą dd może być rozwiązaniem .
Zwierzak wrote: | Najprostrza metoda:
Kod:
cat /dev/cdrom
Co prawda raczej nie jest polecane robienie tego kiedy jest cdrom wewnątrz, ale najprostrzym sposobem na sprawszenie czy jest cdrom to poprostu proba czytania z niego |
dd bezpieczniejsze - można limitować wielkość odczytanej porcji danych. W podanym przeze mnie przykładzie można podać jeszcze jako cel /dev/null będzie chyba bezpieczniejsze i sprawiało mniej problemów . |
|
Back to top |
|
|
qermit Veteran
Joined: 02 Feb 2005 Posts: 1032
|
Posted: Thu Sep 15, 2005 4:32 pm Post subject: |
|
|
u mnie dd nie wyświetla nic gdy w napędzie jest dysk audio . Za to znalazłem program cdstatus (jest w portage) i zacząłem przeglądać źródła, a w szczegulności przyjrzałem się funkcji basicInfo z pliku cdstatus.c. Niestety nie mam czasu (przynajmniej narazie) napisać sobie programu, który by sprawdzał typ płyty. Ale może ktoś się o to pokusi, albo znajdzie program który to robi. _________________ "A co ty masz w swoim LinuXie?" - Dr Qermit |
|
Back to top |
|
|
wodzik l33t
Joined: 12 Jun 2005 Posts: 713 Location: Człuchów
|
Posted: Thu Sep 15, 2005 7:24 pm Post subject: |
|
|
Zwierzak wrote: | Najprostrza metoda:
Co prawda raczej nie jest polecane robienie tego kiedy jest cdrom wewnątrz, ale najprostrzym sposobem na sprawszenie czy jest cdrom to poprostu proba czytania z niego |
ja poieram ta metode. przed chwila sprawdzalem i wystarczy zrobic skrypt. jesli wywala napis:cat: /dev/cdrom1: Brak medium znaczy ze nie ma. jesli cokolwiek innego jest. tylko powinno zaraz zabijac cat chyba ;/
pozdro wodzik |
|
Back to top |
|
|
qermit Veteran
Joined: 02 Feb 2005 Posts: 1032
|
Posted: Thu Sep 15, 2005 7:54 pm Post subject: |
|
|
a co powiecie na: Code: | echo </dev/cdrom && echo "jest płytka" || echo "nie ma płytki" |
_________________ "A co ty masz w swoim LinuXie?" - Dr Qermit |
|
Back to top |
|
|
joi_ Apprentice
Joined: 28 Mar 2005 Posts: 171
|
Posted: Thu Sep 15, 2005 10:24 pm Post subject: |
|
|
qermit wrote: | a co powiecie na: Code: | echo </dev/cdrom && echo "jest płytka" || echo "nie ma płytki" |
|
genialne |
|
Back to top |
|
|
Raku Bodhisattva
Joined: 28 Feb 2004 Posts: 2374 Location: Poland
|
Posted: Fri Sep 16, 2005 5:47 am Post subject: |
|
|
qermit wrote: | a co powiecie na: Code: | echo </dev/cdrom && echo "jest płytka" || echo "nie ma płytki" |
|
póki co ma u mnie numer 1 _________________ raku
Powered by Archlinux |
|
Back to top |
|
|
|