1 (изменено: ypppu, 2024-03-07 00:26:40)

Тема: Настройка загрузчика GRUB

Хотел я , значит, потренироваться.
Взял ПК с чистым жёстким диском и начал разные ОС устанавливать в такой последовательности:
1) Windows XP x32 [SDA1 NTFS 75 GB]
2) Windows 10 x64 (после этого загрузчик, где можно выбирать ОС изменился 1ый раз) [SDA2 NTFS 150 GB]
3) Linux Ubuntu (после этого загрузчик изменился 2ой раз) [SDA3 EXT4 300 GB]
4) Android x86 [SDA4 NTFS 406.5 GB], при этом был добавлен boot loader GRUB (то есть загрузчик имзенился 3ий раз) - и тут появилась проблема. Остались доступны пункты (1) и (2), плюс к ним добавился пункт (4). Но пропал пункт (3) Linux Ubuntu.
Уверен, что сам Linux Ubuntu никуда не делся, просто подпорчен загрузчик. Как бы теперь Linux Ubuntu прописать в загрузчик, может кто поможет? Лениво изучать документацию.

2

Re: Настройка загрузчика GRUB

ypppu пишет:

Хотел я , значит, потренироваться.

ypppu пишет:

Лениво изучать документацию.

Что-то не пойму. Тренировка лени? А чего её тренировать? Она, по-моему, от природы у всех ого-го.

Комп у вас с UEFI и загрузка через него? Если да, то с этим дела не имел. Но нагуглить, думаю, не проблема.

3 (изменено: ypppu, 2024-03-07 21:26:20)

Re: Настройка загрузчика GRUB

Комп с MBR. Я подумал, вдруг кто сталкивался - подскажут, или дадут направление куда копать. Лень - двигатель прогресса. Ведь такой дичью не только я интересуюсь. 
Наверное лучше было сделать поисковый запрос по словам "Как прописать Linux Ubuntu в меню GRUB".

4

Re: Настройка загрузчика GRUB

Меню его лежит на каждом разделе, где он был установлен. Откуда он будет его брать, определяется тем, где он был установлен последним. Это если каждый раз он устанавливался на весь диск. Если систем с Грабом несколько, то лучше выбрать заранее ту, чьё меню он должен использовать, и установить Граб на весь диск только в ней, а в остальных — в их разделы. Тогда "глобальный" Граб на них не переключится. Если "главная" система устанавливалась последней, то другие уже будут в её меню. Если не последней, то достаточно в ней дать команду update-grub, чтобы он их нашёл.

В вашей ситуации, если Убунта позволяет загрузку с live-CD, то проще загрузиться с него и там всё сделать. При условии, что Убунта на файловой системе ext4 и её раздел определится как sda3 (можно проверить командой lsblk), команды должны быть такие:


sudo -i
mount -t ext4 /dev/sda3 /mnt
mount --bind /sys /mnt/sys
mount --bind /proc /mnt/proc
mount --bind /dev /mnt/dev
chroot /mnt
grub-install /dev/sda
update-grub
exit
reboot

5

Re: Настройка загрузчика GRUB

Спасибо за желание помочь, но мне не хватило терпения. Попывшись въехать во все эти mount и chroot, понял, что придётся сидеть изучать,  и что оно того не стоит ... и немного приуныл.
В общем прекращаю попытки установить на одной машине сразу и Windows, и Ubuntu, и Android. Лезть в такие дебри ради спортивного интереса не буду. https://i.smiles2k.net/music_smiles/nopityA.gif

6

Re: Настройка загрузчика GRUB

ypppu пишет:

Попывшись въехать во все эти mount и chroot, понял, что придётся сидеть изучать,  и что оно того не стоит ... и немного приуныл.

Линукс работает с единой виртуальной файловой системой, в которую файловые системы разделов монтируются как каталоги. После этого к ним можно получить доступ через такой каталог. Кроме того можно смонтировать один каталог на другой — параметром --bind. Для /sys, /proc и /dev это нужно потому, что они заполнены только во время работы системы. Соответственно, у просто лежащей на разделе Убунты они пустые, а они могут понадобиться для правильной работы команд. Поэтому вместо них подключаются соответствующие каталоги Убунты, загруженной с live-CD. Команда chroot нужна для того, чтобы сделать файловую систему Убунты, которая лежит на диске и смонтирована в каталог /mnt, корневой на время установки и корфигурации загрузчика — чтобы эти команды работали с разделом Убунты, а не с носителем live-CD. Команда chroot просто запускает в окне терминала новый экземпляр интерпретатора команд Bash, который думает, что корень файловой системы — на разделе Убунты. Соответственно, потом выполняется exit из этого интерпретатора в исходный, где уже делается reboot.

В Windows, кстати, тоже можно монтировать файловые системы разделов не как диски с буквами, а в пустые каталоги, а буквы удалить. Про каталог на каталог там не слышал, как и про аналог chroot.

ypppu пишет:

В общем прекращаю попытки установить на одной машине сразу и Windows, и Ubuntu, и Android.

В десятке ведь есть "подсистема Линукс" (WSL), куда можно установить Убунту. Я, правда, не пробовал.

7 (изменено: ypppu, 2024-03-12 00:30:20)

Re: Настройка загрузчика GRUB

YMP, Ваш рецепт похож на эту статью:
https://help.ubuntu.ru/wiki/%D0%B2%D0%B … _livecdusb
Только там в каждой строке sudo прописывается перед mount.
А хотя...

sudo -i в командной строке Linux используется для запуска интерактивной оболочки root (суперпользователя) с использованием команды sudo. Это позволяет пользователю получить полный доступ к системе и выполнить команды с привилегиями администратора (root) без необходимости продолжительного использования команды sudo перед каждой командой.

Всё равно не в ту степь...

Но тут Grub Customizer замаячил на горизонте. https://i.smiles2k.net/music_smiles/nopityA.gif Но он по Linux, который пропадёт при установке Androidx86. Замкнутый круг.

Попался видеоматериал How to dual-boot Android-X86 and Ubuntu.

8

Re: Настройка загрузчика GRUB

ypppu пишет:

Всё равно не в ту степь...

В каком смысле? Рецепт проверен мной на практике. Я уже многократно переносил с раздела на раздел и с диска на диск как Линукс, так и Виндовс. Соответственно, и загрузчики восстанавливал, и мультизагрузку настраивал. Единственно, как я уже упомянул, не имел дела с UEFI, т.к. комп у меня без него. Можно, конечно, в VirtualBox с ним потренироваться, но пока не накопилось достаточно мотивации.

9

Re: Настройка загрузчика GRUB

В том смысле, что я уже пробовал сделать, как в 4ом сообщении. Вроде как никаких ошибок/предупреждений при вводе команд не было. Однако, Ubuntu так и не прописалась в GRUB.

Недавно мне попался другой подход. Суть примерно такая: вместо Ubuntu и Android ставим Ubuntu и ещё раз Ubuntu. Потом устанавливаем Android x86 в тот раздел, где была вторая Ubuntu. После этого загрузчик 2ой Ubunt'ы как бы перекидывает на Android x86. Остаётся только переименовать 2ую Ubunt'у в Android x86 в списке выбора ОС.

10

Re: Настройка загрузчика GRUB

Ну, это странно. Я бы даже сказал, что не может такого быть. Но проверить несложно. Меню находится в файле /boot/grub/grub.cfg. Можно посмотреть время изменения файла и его содержимое. Как на разделе Убунты, так и Андроида. Для этого примонтировать оба раздела. Например, создать каталоги /mnt/ubuntu и /mnt/adnroid, смонтировать в них разделы и потом посмотреть файлы /mnt/ubuntu/boot/grub/grub.cfg и аналогично для Андроида. Увидеть время изменения можно так:


ls -l /mnt/ubuntu/boot/grub/grub.cfg

То бишь, после выполнения команд из №4 обновляется ли вообще этот файл? Или, может, раздел не тот и обновилось меню Андроида? Ну и что в файле написано, тоже было бы интересно посмотреть. Также и вывод команды update-grub.

Что касается другого подхода, то я не понял, как он должен сработать. Сразу приходит на ум, что проще сначала установить Андроид, а потом Убунту, чтобы она переписала загрузку на себя. Ну а в вашей ситуации просто переустановить Убунту.

Непонятно, зачем вообще нужен какой-то другой подход. Что такого особенного в Убунте и Андроиде? Я, правда, с ними не возился, но с трудом верится в такую их хитровывернутость.

11

Re: Настройка загрузчика GRUB

Попробовал сымитировать ситуацию на виртуальной машине: поставил сначала Убунту, потом Андроид. Андроид Убунту в меню не занёс. Командами выше переключил загрузку на Убунту, но она тоже Андроида не находит. Однако можно внести его в её меню вручную. Для ручного добавления пунктов служит файл /etc/grub.d/40_custom. Меню Андроида оказалось другого формата, там запись такая:


title Android-x86 9.0-r2 
        kernel /android-9.0-r2/kernel quiet root=/dev/ram0 SRC=/android-9.0-r2 
        initrd /android-9.0-r2/initrd.img 

В простейшем варианте в 40_custom можно вставить так:


menuentry 'Android-x86 9.0-r2' {
        set root='hd0,msdos2'
        linux /android-9.0-r2/kernel quiet root=/dev/ram0 SRC=/android-9.0-r2
        initrd /android-9.0-r2/initrd.img
}

У меня он там установлен на первый диск во второй раздел, отсюда значение root. Диски нумеруются с 0, а разделы с 1.
После сохранения 40_custom, нужна команда update-grub для пересборки меню.
В результате Андроид грузится из меню Убунты, только непонятно, какой от него толк, т.к. грузится в текстовую консоль. Вроде как у него и графическая оболочка должна быть, но, может, в виртуалке какие-то проблемы с этим.