Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Jak sprawdzić, czy płyta CD jest w napędzie?
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Polskie forum (Polish)
View previous topic :: View next topic  
Author Message
Raku
Bodhisattva
Bodhisattva


Joined: 28 Feb 2004
Posts: 2374
Location: Poland

PostPosted: Wed Sep 14, 2005 6:32 am    Post subject: Jak sprawdzić, czy płyta CD jest w napędzie? Reply with quote

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
View user's profile Send private message
joi_
Apprentice
Apprentice


Joined: 28 Mar 2005
Posts: 171

PostPosted: Wed Sep 14, 2005 6:43 am    Post subject: Reply with quote

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
View user's profile Send private message
univac^
Apprentice
Apprentice


Joined: 19 Sep 2004
Posts: 231
Location: Suwalki, Polska

PostPosted: Wed Sep 14, 2005 7:15 am    Post subject: Reply with quote

Raczej chodzilo mi o nie zamontowana...
_________________
Gentoo own3d
Back to top
View user's profile Send private message
Raku
Bodhisattva
Bodhisattva


Joined: 28 Feb 2004
Posts: 2374
Location: Poland

PostPosted: Wed Sep 14, 2005 7:36 am    Post subject: Reply with quote

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 :D
_________________
raku

Powered by Archlinux ;-)
Back to top
View user's profile Send private message
ursereg
n00b
n00b


Joined: 21 Feb 2005
Posts: 3
Location: Poland

PostPosted: Wed Sep 14, 2005 7:45 am    Post subject: Reply with quote

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
View user's profile Send private message
sebas86
Guru
Guru


Joined: 01 May 2005
Posts: 568
Location: Szczecinek / Szczecin

PostPosted: Wed Sep 14, 2005 10:08 am    Post subject: Reply with quote

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
View user's profile Send private message
Raku
Bodhisattva
Bodhisattva


Joined: 28 Feb 2004
Posts: 2374
Location: Poland

PostPosted: Wed Sep 14, 2005 12:24 pm    Post subject: Reply with quote

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
View user's profile Send private message
sebas86
Guru
Guru


Joined: 01 May 2005
Posts: 568
Location: Szczecinek / Szczecin

PostPosted: Wed Sep 14, 2005 12:52 pm    Post subject: Reply with quote

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
View user's profile Send private message
mrto
Apprentice
Apprentice


Joined: 13 May 2005
Posts: 151

PostPosted: Wed Sep 14, 2005 2:21 pm    Post subject: Reply with quote

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
View user's profile Send private message
sebas86
Guru
Guru


Joined: 01 May 2005
Posts: 568
Location: Szczecinek / Szczecin

PostPosted: Wed Sep 14, 2005 2:32 pm    Post subject: Reply with quote

Znalazłem sposób :D

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
View user's profile Send private message
Raku
Bodhisattva
Bodhisattva


Joined: 28 Feb 2004
Posts: 2374
Location: Poland

PostPosted: Wed Sep 14, 2005 6:41 pm    Post subject: Reply with quote

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
View user's profile Send private message
ketjow
Guru
Guru


Joined: 01 Apr 2004
Posts: 382
Location: Krakow, Poland

PostPosted: Wed Sep 14, 2005 10:07 pm    Post subject: Reply with quote

raku, zauwaz ze plyty AudioCd nie mozna podmontowac a jednak fizycznie jest w napedzie :)
Back to top
View user's profile Send private message
Raku
Bodhisattva
Bodhisattva


Joined: 28 Feb 2004
Posts: 2374
Location: Poland

PostPosted: Thu Sep 15, 2005 5:56 am    Post subject: Reply with quote

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
View user's profile Send private message
Zwierzak
Veteran
Veteran


Joined: 19 Sep 2003
Posts: 1012
Location: /dev/null

PostPosted: Thu Sep 15, 2005 1:49 pm    Post subject: Reply with quote

Najprostrza metoda:
Code:
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
Back to top
View user's profile Send private message
sebas86
Guru
Guru


Joined: 01 May 2005
Posts: 568
Location: Szczecinek / Szczecin

PostPosted: Thu Sep 15, 2005 2:21 pm    Post subject: Reply with quote

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
View user's profile Send private message
qermit
Veteran
Veteran


Joined: 02 Feb 2005
Posts: 1032

PostPosted: Thu Sep 15, 2005 4:32 pm    Post subject: Reply with quote

u mnie dd nie wyświetla nic gdy w napędzie jest dysk audio :cry: . 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
View user's profile Send private message
wodzik
l33t
l33t


Joined: 12 Jun 2005
Posts: 713
Location: Człuchów

PostPosted: Thu Sep 15, 2005 7:24 pm    Post subject: Reply with quote

Zwierzak wrote:
Najprostrza metoda:
Code:
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


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
View user's profile Send private message
qermit
Veteran
Veteran


Joined: 02 Feb 2005
Posts: 1032

PostPosted: Thu Sep 15, 2005 7:54 pm    Post subject: Reply with quote

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
View user's profile Send private message
joi_
Apprentice
Apprentice


Joined: 28 Mar 2005
Posts: 171

PostPosted: Thu Sep 15, 2005 10:24 pm    Post subject: Reply with quote

qermit wrote:
a co powiecie na:
Code:
echo </dev/cdrom && echo "jest płytka" || echo "nie ma płytki"

genialne ;)
Back to top
View user's profile Send private message
Raku
Bodhisattva
Bodhisattva


Joined: 28 Feb 2004
Posts: 2374
Location: Poland

PostPosted: Fri Sep 16, 2005 5:47 am    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Polskie forum (Polish) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum