LINUX.ORG.RU

live fs

 , ,


0

2

Есть у меня свой мини дистр на основе дебиана. Запускается через grub-install (GRUB) 2.02~beta2-36ubuntu3.9

Пакуется mksquashfs version 4.3-git (2014/06/09)

Сам дистр не менялся давно, но обновляется основная ос (ubuntu 16.04) в которой я его пакую, после обновления вдруг он перестал запускаться на некоторый компах (большинстве). Под виртуал боксом все ок.

Симптомы:

unable to find a medium containing a live file system
...
Когда попадаю в бизибокс делаю ls /dev/sd* и вижу, что таки действительно не может найти, так как есть только /dev/sdb, а если передернуть флешку то будет /dev/sdb1.

Не могу понять толи так граб дообновлялся толи squashfs...

(подробности по требованию)

★★★★

Последнее исправление: LinuxDebian (всего исправлений: 4)
Ответ на: комментарий от kostik87

Сам дистр я не обновлял... Он лежит в папке уже года полтора, я просто запустил ребилд образа :( Ох нужно было под виртуалкой держать инструменты... Или вы о ядре основной ОС? Толко что пробывал из дебиана 8.9 там 3е тоже самое...

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

Если ты грузишься с USB, то нужно добавить параметры указывающие ядру, что нужно подождать, т.к. на инициализацию USB устройств требуется время.

Посмотри в сторону параметров usb-storage.delay_use=, rootwait, в первом вроде бы должно указывать время ожидания в секундах.

И ещё, вроде бы, был параметр usbdelay или как-то так.

В общем, ищи параметр ядра, указывающий что нужно ждать инициализации USB устройств.

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

Они подвешивают загрузку чуть раньше чем вылазит ошибка. А потом все равно виснет на пункте:

[sdb] Attached SCSI removable disk

Поле чего падает в бизибокс

LinuxDebian ★★★★
() автор топика
Последнее исправление: LinuxDebian (всего исправлений: 1)
Ответ на: комментарий от kostik87
#insmod part_msdos
#insmod fat
set default=0
set timeout=30
#search -u 123edded-b564-40f5-b9af-f2af66259485 -s
 
#     insmod vbe
#     insmod vga
#     insmod vga_text
#     insmod video_fb
#     insmod video_bochs
#     insmod video_cirrus

menuentry "backuper" {
    gfxpayload=1280x1024x24,1024x768x24
    set root='(hd0,2)'
    linux /live/vmlinuz boot=live usb-storage.delay_use=30 toram=filesystem.squashfs
    initrd /live/initrd 
}
LinuxDebian ★★★★
() автор топика
Ответ на: комментарий от LinuxDebian

Когда попадаю в бизибокс делаю ls /dev/sd* и вижу, что таки действительно не может найти, так как есть только /dev/sdb, а если передернуть флешку то будет /dev/sdb1.

В таком случае разбирайся как подать ядру сигнал, что нужно перечитать таблицы разделов подключенных SD устройств и создать соответствующие разделам устройства.

kostik87 ★★★★★
()

Пробовали подключить флешку как блочное устройство к QEMU, чтобы оно видело его как обычный жесткий диск ATA ?

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

как обычный жесткий диск ATA

Пробовал именно так в виртуал боксе и там все ок. Но зачем? Мне нужно как флешку на реальном железе...

LinuxDebian ★★★★
() автор топика
Последнее исправление: LinuxDebian (всего исправлений: 2)

Когда попадаю в бизибокс делаю ls /dev/sd* и вижу, что таки действительно не может найти, так как есть только /dev/sdb, а если передернуть флешку то будет /dev/sdb1.

Вместо этого можно partprobe команду дать.

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

Эта утилита часть пакета с parted, ему в таком случае надо её вызывать на этапе работы initramfs. А это значит что ему надо перепаковать Initramfs и поместить туда эту утилиту со всеми зависимостями.

Попробовать конечно можно, но лучше, если это возможно, собрать утилиту статически и поместить статическую сборку в Initramfs, а уже затем прописать в init сценарий в initramfs вызов утилиты перед кодом монтирования корня / флешки для поиска squashfs образа.

С другой стороны должет быть способ без этой утилиты заставить ядро перечитать таблицу разделов и создать блочные устройства.

UPD:
А вот и он:

echo 1 > /sys/block/sdX/device/rescan 
Но с другой стороны всё это странно.

ТС, добавь код, который будет пытаться перечитать таблицу разделов, для все /dev/sdX устройств и размести его перед кодом монтирования файловой системы флешки для монтирования squashfs образа.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)

Проблема решена

Против лома нет приема :) Заменил grub2 на grab4dos и все начало работать. Так я и не понял каким образом граб смог заблокировать раздел.

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

echo 1 > /sys/block/sdX/device/rescan

пробовал добавить ноль реакции

LinuxDebian ★★★★
() автор топика

Не, все таки проблема сохранилась на некоторых 3.0 портах. Видимо пройдется обновлять свой дист.

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