LINUX.ORG.RU

Ubuntu, установленный на usb ssd диск, выдает /boot/grub/i386-pc/normal.mod на другом компьютере

 , ,


1

1

Ubuntu, установленный на usb ssd диск, выдает error: file '/boot/grub/i386-pc/normal.mod' not found на другом компьютере. При этом продолжая нормально загружаться на исходном. Мне необходимо без потери данных на носителе успешно запустить Ubuntu на другом пк.

Из вводных.

  • Установка проводилась через USB 3.0 (EFI)
  • Компьютер где не работает имеет порт USB 2.0 (BIOS)
  • В качестве загрузчика установился GRUB.
  • На всех устройствах в качестве основной ос на диске стоит Windows10.
  • Я пробовал использовать Boot repair (автоисправление) на машине где не работает но это не дает никакого эффекта.

У меня уже есть флешка с LiveCD и я готов предоставить любые данные для диагностики моей проблемы.

  • Полностью весь лог, включает в себя fstab’ы mbr.img и еще много непонятных для меня вещей boot-repair-log.zip
  • Базовый лог для тех кому не надо распаковывать архив Boot-info.txt
  • Вот так выглядит загрузка на машине где не работает. фото монитора Из странного даже для меня - директория /boot пустая (видно на фото), хотя если примонтировать это дело из LiveCD то там все есть (grub, i386 и тд)

Заранее спасибо за помощь. Уж очень напрягает бегать туда сюда от одного пк к другому)

UPD: 1 link

UPD: 2 link

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

mxfm ★★ ()

Система, установленная на одном железе, совсем не обязана работать на другом.

Как в армии. Не доходит через голову, дойдет через ноги. По пути почитай об УЕФИ, БИОС. Режимах ЕФИ, легаси.

в качестве основной ос на диске стоит Windows10

Когда есть винда, то плясать приходится под нее. В каком режиме установлена Винда, в таком должно быть все остальное.

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

Совсем не обязательно, uefi refind спокойно грузит и Винду установленную в легаси режиме и линукс установленный в uefi режиме.

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

А вот если ставилась система и загрузчик в uefi режиме, а потом пытаться запустить его на железе которое не поддерживает uefi , то да ничего не выйдет. В этом случае надо ставить два загрузчика , для поддержки как старых легаси систем так и новых

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

Тоже верно, запамятовал совсем.

Тогда пусть ТС покажет список разделов. Вдруг у него /boot/efi на USB-диске примонтирован, а сам /boot – на основном.

Korchevatel ★★★★★ ()

Проверь на переносном диске, наличие этой директории /boot/grub, возможно при установке груба ты не указал или неправильно указал директорию для установки файлов груба. Правильная команда будет такой

grub-install --boot-directory=/mnt/boot /dev/sdb
# где /mnt куда смонтирован переносной диск, не забыть смонтировать 
А вместо /dev/sdb поменять на дев  переносного диска 

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

Если sdb5 ваш переносной диск то


sudo mount /dev/sdb5 /mnt
ls /mnt/boot

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

Примонтировал раздел sdb1 на нем нет папки boot, но есть boot-sav с подпапками sda1 sda2 sda3 sda5 (если правильно понимаю то это там где винда стоит)

sdb1.png

Папка boot есть на основном разделе sdb5 где и все файлы.

sdb5.png

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

Вы показываете файлы используемой системы а не примонтированного диска. Если это таже система установленная на внешнем диске покажите ещё mount и cat /etc/fstab

anonymous ()
Ответ на: комментарий от uQuestion

Файл тогда на месте как видите, значит или при установке не указали boot/grub/где находится. Чтоб не мучится можете рефинд поставить и

sudo refind-install --usedefault /dev/sdb1

anonymous ()
Ответ на: комментарий от uQuestion

На новом , должен уже рефинд грузить, нажмите f12 или какой хоткей у вас для выбора загрузочной записи.

Вторая система грузится точно в uefi режиме? Что в настройках Биоса выставлено?

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

Перед обращением на форум я использовал утилиту Boot repair. Если я все правильно понимаю то он мог туда что-то записать.

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

Мог, но гляньте все же режим загрузки в биосе какой выставлен. У вас сейчас uefi загрузчики, и если режим легаси а не uefi они работать не будут

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

пк на котором не грузится

Пк на котором грузится граб по всей видимости тоже с обычным BIOS.

Обидно, я до этого дня думал что это просто какой то режим загрузки, а это новая альтернатива BIOS

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

Удали полностью разметку на этом SSD. Сделай нормальную. Только дура-винда делала первый (да еще и единственный) раздел расширенным. Хотя сама не очень-то хотела в нем быть. Заново установи систему.

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

Ты сам-то в свои картинки посмотри. Какого черта ты монтируешь разделы 1,2,3,4, если у тебя только раздел 5.

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

Вот смотри на первой машине у тебя показывает на sdb5 наличие /boot/grub а на второй на том же вроде диске hd0,mcdos5 /boot уже пустой или не может его прочесть хотя корень читает и ошибка с диском маловероятна

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

Можешь попробовать на /dev/sdb1 файлы груба поставить,

sudo mount /dev/sdb1 /mnt 
sudo grub-install --boot-directory=/mnt
sudo grub-mkconfig -o /mnt/grub/grub.cfg

хотя лучше сначала на флешке отдельной было бы потренероваться как говорил.

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

не вставил диск


sudo grub-install --boot-directory=/mnt /dev/sdb

anonymous ()

По рекомендации пробовал поставить Grub на sdb1. Словил вот это /usr/sbin/grub-probe:error:failed to get canonical path of /cow. на следующей команде sudo grub-mkconfig -o /mnt/grub/grub.cfg. Не смог решить, и просто скопировал папку grub из sdb5 на sdb1.

И о чудо, Grub запустился.

Правда запуск Ubuntu выдает следующее

Я обратил внимание что в конфиге все указывает на (hd1,msdos5) что справедливо для первого пк, но тут он определяется как hd0. Попытка изменить и запустить ничего не дала. конфиг1 конфиг2, а дальнейшие манипуляции стали выдавать вот это

Из важных как мне кажется наблюдений, папка boot на sdb5 все так же не читается. фото консоли grub.

Вот тут парни кажется столкнулись со схожей проблемой пост коммент, если коротко то там что-то про ограничения легаси биоса на размер диска из-за чего граб не мог прочитать дальше определенной отсечки.

Пока я в тупике и не понимаю что можно с этим сделать. Не устанавливая Ubuntu по новой.

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

Тебе надо прописывать диски только через uid или метку а не по номерам, так как номер меняется от смены машины и добавления или изъятия дисков. Смотри примеры https://wiki.archlinux.org/title/GRUB_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)#UUID

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

Там в конфиге дальше по тексту есть указание uid, если я правильно понимаю в случае если граб не может загрузить по алиасам он будет загружать по uid. Проблема сейчас не в этом.

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

В первый раз после переноса груба на первый раздел у тебя он грузился просто ядро убунты не мог найти. Вот и надо правильно прописать через uid а не по номерам, потому что у тебя там номера

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

А сможет он его найти даже по uid если при попытке посмотреть каталог boot в консоли grub он выдает пустоту? При этом каталог не пуст. Не хочу тратить пол дня на разбирательство как именно мне описать конфиг что бы оно теоретически заработало если оно априори не сможет сработать.

uQuestion ()
Ответ на: комментарий от anonymous

Вот так описано сейчас.

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-d9c8a675-6649-416c-9c02-33bc8f630a00' {
	recordfail
	load_video
	gfxmode $linux_gfx_mode
	insmod gzio
	if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
	insmod part_msdos
	insmod ext2
	set root='hd1,msdos5'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos5 --hint-efi=hd1,msdos5 --hint-baremetal=ahci1,msdos5  d9c8a675-6649-416c-9c02-33bc8f630a00
	else
	  search --no-floppy --fs-uuid --set=root d9c8a675-6649-416c-9c02-33bc8f630a00
	fi
	linux	/boot/vmlinuz-5.11.0-46-generic root=UUID=d9c8a675-6649-416c-9c02-33bc8f630a00 ro  quiet splash $vt_handoff
	initrd	/boot/initrd.img-5.11.0-46-generic
}

Правильно я понимаю что загрузка должна выглядеть как то так?

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-d9c8a675-6649-416c-9c02-33bc8f630a00' {
	recordfail
	load_video
	gfxmode $linux_gfx_mode
	insmod gzio
	if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
	insmod part_msdos
	insmod ext2
        UUID=d9c8a675-6649-416c-9c02-33bc8f630a00
        search --fs-uuid $UUID --set root
	linux	/boot/vmlinuz-5.11.0-46-generic root=UUID=$UUID rw
	initrd	/boot/initrd.img-5.11.0-46-generic
}
uQuestion ()
Ответ на: комментарий от uQuestion

Да как второй вариант, и проверьте что на диске с UUID=d9c8a675-6649-416c-9c02-33bc8f630a00 (/dev/sdb5) есть ядро и инит /boot/vmlinuz-5.11.0-46-generic и /boot/initrd.img-5.11.0-46-generic (чтобы имя совпадало)

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

Сделал по UUID. На пк где биос по свежее и EFI заработало нормально, а на пк со старым биосом получаю вот такое окно - фото. Что бы точно знать что изменения сработали я добавил menuentry с другим именем и запускал с него на обоих машинах.

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

Прошу прощения, что встреваю в Вашу дискуссию, но у меня пара замечаний:

  • если на разных компьютерах разные «стили» загрузки (я про Uefi и Bios), то надо и два разных загрузчика (возможно Вы уже это проделали) иметь на диске. Саму Ubuntu из-за этого переустанавливать необязательно. Один загрузчик ставиться из «системы», а второй надо «самостоятельно» внедрять. Есть масса мелких деталей делающих эти «танцы с grub» по-своему увлекательными.
  • поэтому если возможно, лучше чтобы загрузчик «жил» на целевом компьютере. Настроить локальный конфиг (или «универсальный» под конкретный ПК) на мой взгляд задача на порядок проще.
anonymous ()
Ответ на: комментарий от anonymous

Они и есть разные но проблема в том что загрузчик не может прочитать раздел в конце диска из за бага Биоса. перенос директории груба на другой раздел помог но теперь не может найти ядро на второй машине. Вот и надо глянуть есть ли оно и правильно ли прописано в конфиге загрузчика

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

Я не очень внимательно читал тред (потерял нить где-то в середине),да.

не может найти ядро на второй машине.

Это та, которая с биосом?

надо глянуть есть ли оно и правильно ли прописано в конфиге загрузчика

По-моему, для таких случаев и существует консоль grub…

anonymous ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.