LINUX.ORG.RU

Ubuntu после смены железа не загружается без USB-флешки

 , ,


0

2

Добрый день.

ssd-диск (установлена Ubuntu 14.04) нормально работал на ноутбуке. Я переставил его в десктопный компьютер, при загрузке получаю ошибк Loading operating Read Error и все.

После танцев с бубнами, boot-repair, grub-update и прочих рецептов (из-за моей глупости чуть не убивших загрузку совсем) случайно увидел, что если в USB воткнуть флешку (не обязательно загрузочную, а, например, с музыкой), то система стартует ок.

Что это, и как бы обойтись без флешки?

p.s. судя по BIOS, ssd воткнут в SCSI-0, пробовал втыкать в другие sata-разъемы, не помогло.


думаю что это просто баг биоса.

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

Я должен это выполнить на уже загруженной с ssd системе или с загрузочной USB-флешки? Возможно, вопрос тупой, но не хочется снова убить загрузку, ибо не очень понимаю ее процесса.

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

Процесс такой: биос выбирает диск, который указан в сетапе, как загрузочный, читает с него первый сектор и выполняет. В первом секторе находится загрузчик GRUB, который читает с того же диска ядро GRUB и запускает его. Ядро GRUB считывает свой конфиг, подгружает нужные модули (которые не вкомпилены в ядро) и рисует менюшку с выбором системы, которую нужно загружать.

Можно предположить, что в твоем случае загрузчик GRUB пытается считывать ядро с неправильного диска (например, он может пытаться читать со второго диска, которого без флешки просто нет, а с флешкой им может оказаться как раз твой SSD). Но это, конечно, спекуляция, потому что нифига не понятно, что у тебя там происходит.

grub-install /dev/sdX (где sdX - это твой SSD диск, может оказаться на другой букве) записывает на диск загрузчик GRUB в первый сектор и ядро GRUB в свободное место перед первым разделом. В процессе может правильно настроить загрузчик, чтобы он читал ядро GRUB c правильного диска. Проще всего делать это из живой системы, подняв ее с флешкой.

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

из живой системы, подняв ее с флешкой

Уточню: нужно поднять систему с SSD, предварительно воткнув какую-нибудь флешку, и выполнять команду из нее.

ddos3
()

Если не поможет, нужно больше инфы: в каком режиме у тебя загружается система (Legacy MBR или UEFI), как разбит диск и что рассказывает консолька GRUB по команде ls.

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

ssd это точно /dev/sda?

Что-то строка ″Loading operating Read Error″ не гуглится. Она пишется до загрузки grub'а или после?

Может на диске нет активного раздела, некоторым bios это не нравится.

mky ★★★★★
()
Последнее исправление: mky (всего исправлений: 1)
Ответ на: комментарий от mky

Мой ssd на sda, проверил в gparted. Сделал:

$ sudo grub-install /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
Подозрительно выглядит i386-pc, хотя система 64-битная:

$ uname -a
Linux ryasale-laptop 3.19.0-58-generic #64~14.04.1-Ubuntu SMP Fri Mar 18 19:05:43 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

1. Тем не менее, перезагрузился. Результат: без флешки по-прежнему не загружается.

2. Снова пробую без флешки, держу Shift для перехода в Grub. Ошибка стала подробнее:

Loading Operating System ...
GRUB loadingRead Error...
Splash-экрана GRUB-а не появляется. Похоже, тут и проблема, GRUB не запускается?

3. Вставляю флешку, все ок, запускаю Grub-консоль

grub> ls
(hd0) (hd0,msdos2) (hd0,msdos1) (hd1) (hd1,msdos1)

Фото gparted: https://yadi.sk/i/q4M_HZNnwfMsn
перед загрузкой: https://yadi.sk/i/FIK33_JjwfMqe
ошибка grub (без флешки): https://yadi.sk/i/t8-BumKbwfMrX
grub-консоль (с флешкой): https://yadi.sk/i/rEUbU6LvwfMsN

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

в каком режиме у тебя загружается система (Legacy MBR или UEFI)

Где бы это посмотреть? В биосе есть какой-то флажок EFI, переключал во все режимы, не влияет.

ryasal
() автор топика

BIOS последней версии?

Что за мамка?

Бут-меню есть (F8, F11 или F12 обычно)?

Если в бут-меню уефи версия загрузки с харда?

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

По ссылке на спецификацию http://www.gigabyte.com/products/product-page.aspx?pid=3947#bios увидел, что есть UEFI для моей мамки. А у меня обычный биос, версии F6.

Вопросы:
поставлю UEFI, поможет загружаться без флешки?
что он еще даст? Вкратце глянул что есть UEFI, вроде ничего интересного. Обновлять биос ради избавления от флешки - слишком геморно :) Еще чего сломается.

ryasal
() автор топика

Бывало у меня что-то подобное Посмотри, совпадают ли данные диска с данными фстаб'а и нет ли там чего лишнего.

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

Судя по мануалу, похоже, что мамка вообще не поддерживает UEFI. Так что тут все нормально.

Я глянул в код граба, если я правильно понимаю ситуацию, то сообщение «GRUB loadingRead Error» выводится, если первый кусок удалось прочитать, а второй - нет. При этом разница в чтении первого и второго куска в том, что если детектится поддержка LBA в биосе, то пробуется этот режим, но при ошибке при первом чтении происходит откат на CHS, а во втором не происходит. То есть выглядит так, что без флешки биос обещает поддержку LBA, но не дает ее, а с флешкой либо не обещает, либо обещает и таки дает. В общем, похоже на глюкодром в биосе.

Попробуй в биосе отключить EFI CD/DVD Boot Option, Second Boot Device и Third Boot Device и посмотри, как это повлияет на загрузку с флешкой/без флешки.

Если ничего не поможет, то можно попробовать пропатчить граб или обновить биос. Или воткнуть навсегда какую-нибудь старую флешку и смириться.

ddos3
()
Ответ на: комментарий от darkduke
$ sudo parted -l 
Model: ATA Samsung SSD 840 (scsi)
Disk /dev/sda: 250GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End    Size    Type     File system     Flags
 1      1049kB  241GB  241GB   primary  ext4            boot
 2      241GB   250GB  8938MB  primary  linux-swap(v1)


Model:  silicon-power (scsi)
Disk /dev/sdb: 2005MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      32,3kB  2005MB  2005MB  primary  fat32        boot

$ cat /proc/self/mounts
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,relatime,size=8067360k,nr_inodes=2016840,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,noexec,relatime,size=1615608k,mode=755 0 0
/dev/sda1 / ext4 rw,relatime,errors=remount-ro,data=ordered 0 0
none /sys/fs/cgroup tmpfs rw,relatime,size=4k,mode=755 0 0
none /sys/fs/fuse/connections fusectl rw,relatime 0 0
none /sys/kernel/debug debugfs rw,relatime 0 0
none /sys/kernel/security securityfs rw,relatime 0 0
none /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
none /run/shm tmpfs rw,nosuid,nodev,relatime 0 0
none /run/user tmpfs rw,nosuid,nodev,noexec,relatime,size=102400k,mode=755 0 0
none /sys/fs/pstore pstore rw,relatime 0 0
cgroup /sys/fs/cgroup/cpuset cgroup rw,relatime,cpuset 0 0
cgroup /sys/fs/cgroup/cpu cgroup rw,relatime,cpu 0 0
cgroup /sys/fs/cgroup/cpuacct cgroup rw,relatime,cpuacct 0 0
cgroup /sys/fs/cgroup/memory cgroup rw,relatime,memory 0 0
cgroup /sys/fs/cgroup/devices cgroup rw,relatime,devices 0 0
cgroup /sys/fs/cgroup/freezer cgroup rw,relatime,freezer 0 0
cgroup /sys/fs/cgroup/net_cls cgroup rw,relatime,net_cls 0 0
cgroup /sys/fs/cgroup/blkio cgroup rw,relatime,blkio 0 0
cgroup /sys/fs/cgroup/perf_event cgroup rw,relatime,perf_event 0 0
cgroup /sys/fs/cgroup/net_prio cgroup rw,relatime,net_prio 0 0
cgroup /sys/fs/cgroup/hugetlb cgroup rw,relatime,hugetlb 0 0
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,nosuid,nodev,noexec,relatime 0 0
systemd /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,name=systemd 0 0
/dev/sda1 /var/lib/docker/aufs ext4 rw,relatime,errors=remount-ro,data=ordered 0 0
gvfsd-fuse /run/user/1000/gvfs fuse.gvfsd-fuse rw,nosuid,nodev,relatime,user_id=1000,group_id=1000 0 0
ryasal
() автор топика
Ответ на: комментарий от ryasal

Кстати, а конфиг grub со времени переезда с ноута не менялся?

Если посмотреть в cat /boot/grub/grub.cfg | grep "set root", то совпадает ли диск и раздел с текущим системным (тем, что выдаётся по команде ls в консоле grub?

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

По-моему тут все ок:

$ cat /boot/grub/grub.cfg | grep "set root"
set root='hd0,msdos1'
	set root='hd0,msdos1'
		set root='hd0,msdos1'
		set root='hd0,msdos1'
		set root='hd0,msdos1'
		set root='hd0,msdos1'

ls grub-а выдает: https://yadi.sk/i/rEUbU6LvwfMsN

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

Все это проверили же уже. Граб успешно считывает второй загрузчик (т.е. проблема не в конфигурации загрузчика), но потом фейлится считать ядро (т.е. проблема не дальше загрузчика граба и к grub.cfg отношения не имеет). Судя по всему, глюкодром в биосе, в котором в зависимости от присутствия или отсутствия USB устройства по разному себя ведет int 13h (Ubuntu после смены железа не загружается без USB-флешки (комментарий)).

Следующий логический шаг - добавить в бутлоадер ГРАБа чуть больше логов и попытаться понять, что там происходит. Или можно на удачу в grub-core/boot/i386/pc/diskboot.S исправить

movb $0x42, %ah
int $0x13
jc LOCAL(read_error)

на

movb $0x42, %ah
int $0x13
jc LOCAL(chs_mode)

Вполне может быть, что это решит проблему. В любом случае, сейчас это место в коде выглядит как баг (если сравнивать с boot.S).

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

Попробуй в биосе отключить EFI CD/DVD Boot Option, Second Boot Device и Third Boot Device и посмотри, как это повлияет на загрузку с флешкой/без флешки.

Это тоже не помогло.

Рискнул пойти на кардианальное решение - прошил биос на UEFI, теперь и без флешки загружается.

Спасибо большое всем за советы, а ddos3 еще большее спасибо за разъяснения!

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

«кардианальное» опечатка :-) Но обошлось!

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