Отказ от ответственности: я новичок, и мне нужно пошаговое руководство. Спасибо!

Я хочу сначала установить grub без ОС, так как он будет загружаться из файла ISO из локального сетевого хранилища. Я загрузился с liveCD (не могу его установить, так как мне нужна энергозависимая система) Я уже застрял на первом этапе. Я пробовал grub-install /dev/sda и получаю сообщение об ошибке grub-install: error: cannot open directory '/boot/grub/i386-pc': No such file or directory.

Итак, я создал и скопировал все нужные grub-install файлы, и теперь он говорит grub-install: error: failed to get canonical path of 'aufs'.

Я искал в Интернете и понял, что большинство ответов требуют, чтобы я использовал chroot, пока у меня есть установленная система (хотя может быть сломана) У меня не установлена ​​Ubuntu ни на одном диске, и моя цель — установить grub с liveCD на пустой диск.

Я хочу начать с пустого загрузчика.

Как мне это сделать?

Еще раз спасибо заранее.

1
newbie 26 Янв 2021 в 11:59

2 ответа

Лучший ответ

Вам не нужна полная файловая структура Linux, если вы просто загружаете ISO. Я установил grub на флешку с различными форматами и загрузил ISO на ту же флешку. Не уверен, что для сетевой загрузки требуется точная строфа загрузки grub.

У меня была старая флешка USB2, которую я переформатировал. Сначала я делаю это gpt, так как я предпочитаю его 40-летнему разделению MBR. Вы можете использовать gparted, что я обычно и делаю. Перед запуском выберите gpt под устройством, расширенный по сравнению с разделами по умолчанию msdos (MBR). или используйте parted или gdisk. Примечание. Это полностью стирает диск. sdX — это ваша флешка.

sudo parted /dev/sdX mklabel gpt

Затем я использовал gparted для создания большого раздела FAT32. Мне пришлось перезагрузиться, чтобы он отображался правильно, и файловый браузер не монтирует разделы ESP автоматически, поэтому использовал диски или монтировал вручную.

Model: Kingston DataTraveler 2.0 (scsi)
Disk /dev/sdc: 1998MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  1998MB  1996MB  fat32        esp2  msftdata

Затем я смонтировал его с помощью дисков, а затем он оказался в /media/fred:

/dev/sdc1 on /media/fred/FC87-F75C type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)

Затем установил grub. Мой диск был виден как sdc. Был немного медленным, как старая флешка USB2.

Sudo grub-install --root-directory=/media/fred/FC87-F75C/dev/sdc

Он создал структуру и обычный /EFI/ubuntu/grub.cfg, который представляет собой 3-строчный файл конфигурации для полного grub в /boot/grub/grub.cfg. Но не создавал загрузочный файл /boot/grub/grub.cfg. Обычно я вручную создавал один для загрузки локального ISO, используя эти ссылки и мои старые заметки. Вам нужно будет создать grub.cfg, но с путем и монтированием? в сеть.

Загрузка ISO и ссылка на примеры

https://help.ubuntu.com/community/Grub2/ISOBoot

Больше примеров

https://help.ubuntu.com/community/Grub2/ISOBoot/Примеры

Информация о сети, которую я нашел с помощью Google. nfs не будет работать, но есть пример для сетевой загрузки.

Настройте nfsroot для GRUB PXE

Как загрузить ядро ​​Linux из сети через консоль GRUB2?

1
oldfred 26 Янв 2021 в 20:32
sudo parted /dev/sdX mklabel gpt затем отформатировал мое устройство в жир и смонтировал его sudo grub-install --root-directory=/media/ubuntu/XXXX-XXXX /dev/sdX Это сработало очень хорошо. Спасибо!
 – 
newbie
26 Янв 2021 в 19:14

Вам не нужна установленная система. Сначала вам нужно смонтировать диск, с этого момента мы будем использовать в качестве примера sda. В качестве примера точки монтирования /media/usr/DISK

В терминале используйте этот код:

dirs=(etc bin usr proc sys lib lib64 dev sbin)

for dir in ${dirs[@]}; do
  mkdir /media/usr/DISK/$dir
  sudo mount --bind /$dir /media/usr/DISK/$dir
done

sudo chroot /media/usr/DISK/ grub-install --target=i386-pc --boot-directory=/ /dev/sda

for dir in ${dirs[@]}; do
  sudo umount /media/usr/DISK/$dir
  rm -r /media/usr/DISK/$dir
done

0
schrodigerscatcuriosity 26 Янв 2021 в 13:47