LINUX.ORG.RU

kernel: запоздалое определение устройтва флешки


0

0

Проблема такая: сделал я небольшой liveusb, но есть одна проблема, когда гружусь с флешки, доходит до initrd, он ищет подходящее устрйотва, но вот почему то когда он пишет, что устрйотво не найдено, появляются надписи о том, что найдено новое устройтво [sdb] - тоесть ядро только определило его.

Вопрос: можно ли как то дождаться того времени, когда _гарантированно_ ядро определит все устройства, которые были в момент загрузки (без хот плуга)?


нет, поскольку понятия "без хот плуга" для usb нет.

Hint: iPod должен загрузиться сам, прежде чем показывать себя компьютеру, а это может занят неопределеленно долгое время.

AEP ★★★★★
()
Ответ на: комментарий от chicane

> так ведь я гружусь с флешки, значит флешка уже давно "себя загрузила"

BIOS включил питание USB, подождал немного, загрузил что-то с флешки в память, выключил ее. Linux-у достается выключенная флешка, которую надо опять включить и подождать, пока она снова загрузится.

AEP ★★★★★
()
Ответ на: комментарий от chicane

> в любом случае ведь как-то же поступают дистростроители в этом случае.

Если они знают, что флешка должна быть, они ждут (sleep ; retry ; sleep ; retry), пока она не появится.

AEP ★★★★★
()
Ответ на: комментарий от AEP

но это же костыль :)

тем более мы точно не знаем на каком девайсе она появится, и вообще что если у меня "универсальный" лайв - как livecd, так и liveusb, что тогда?

chicane
() автор топика
Ответ на: комментарий от chicane

> но это же костыль :)

Но ничего лучше не может быть. Даже в BIOS'ах есть параметр, сколько ждать для загрузки с USB.

> тем более мы точно не знаем на каком девайсе она появится, и вообще что если у меня "универсальный" лайв - как livecd, так и liveusb, что тогда?

А какая разница, если эта проблема имеет место и для USB CD-ROM'ов? Перебрать все поблочные устройства, посмотреть, нет ли на них "универсального" лайва. Не нашлось - поспать маленько и повторить. И так до бесконечности или до большого (порядка двух минут) таймаута.

AEP ★★★★★
()
Ответ на: комментарий от AEP

>А какая разница, если эта проблема имеет место и для USB CD-ROM'ов? Перебрать все поблочные устройства, посмотреть, нет ли на них "универсального" лайва. Не нашлось - поспать маленько и повторить. И так до бесконечности или до большого (порядка двух минут) таймаута.

возможно я так и сделаю, но думал что есть лучше варианты :)

chicane
() автор топика
Ответ на: комментарий от chicane

а какое ядро? у меня 2.6.24-rc3 и там это есть.

алсо:

0. rootdelay=15
1. если есть initrd, почему бы не переписать linuxrc в нем?
2. почему бы не сделать root=/dev/ram и бОльшее число прог перенести в рамдиск?

generatorglukoff ★★
()
Ответ на: комментарий от generatorglukoff

> rootdelay=15

Не всегда хватает.

AEP ★★★★★
()
Ответ на: комментарий от chicane

> думал что есть лучше варианты

LFS LiveCD 6.3-r2145 можно грузить с опцией rootdelay=..., которая документирована на экране загрузки как "обязательная к применению с USB-устройствами". LiveCD спит $rootdelay секунд, ищет себя, после чего либо продолжает загрузку, либо, если не нашел, выводит инструкцию и запускает bash:

http://wiki.linuxfromscratch.org/livecd/browser/trunk/packages/initramfs/init.in

AEP ★★★★★
()
Ответ на: комментарий от AEP

это оно будет 20 секунд ждать? оно у меня буквально через 1-2 секунды появляется, пожалуй твой первый вариант будет получше :)

chicane
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.