Мультизагрузочный USB только для Linux — без стороннего программного обеспечения

С ш

while read a;do i=$((i+1));printf "%05d%s\n" $i "${a##*[0-9]}";done < infile > outfile

замена на месте

printf '%s\n' $(while read a;do i=$((i+1));printf "%05d%s\n" $i "${a##*[0-9]}";done < infile) > infile
1
01.12.2019, 02:32
1 ответ

Using Linux Mint 19 64 bits as host OS. It's quite safe to assume that similar distros and releases, like Ubuntu for example, will behave the same.

Нам понадобится:

  • USB-накопитель объемом не менее 8 ГБ (В настоящее время два ISO-образа Linux не помещаются на USB-накопитель емкостью 4 ГБ)
  • ISO-образы Linux. В данном случае Ubuntu 19.04 и Debian 10 . Эти изображения просто как примеры. Под это руководство подходят другие дистрибутивы или выпуски, включая такие инструменты, как Clonezilla или GParted.

Процесс

  1. Установите grub-efi-amd64для совместимости с GRUB EFI.

    sudo apt install -y grub-efi-amd64
    
  2. Отформатируйте USB с таблицей разделов msdos. Раздел должен быть отформатирован в FAT. Отметьте раздел как загрузочный.

  3. Подключить USB. Запишите :, какое устройство является, т. е. /dev/sdc1, и путь, на котором оно установлено, т. е. /media/foo/USB/. С этого момента я буду использовать эти два примера в качестве руководства.

  4. Установить GRUB:

    dirs=(bin dev etc lib lib64 proc sbin sys usr)
    for dir in "${dirs[@]}"; do
      mkdir /media/foo/USB/$dir && sudo mount --bind /$dir /media/foo/USB/$dir
    done
    
    sudo chroot /media/foo/USB/
    
    # chroot environment
    # first we install grub efi
    
    grub-install --force --removable --target=x86_64-efi --efi-directory=/ /dev/sdc1
    
    # now we install grub i386
    
    grub-install --force --removable --target=i386-pc --boot-directory=/ /dev/sdc
    
    # exit the chroot
    
    exit
    

WARNING!! Be very careful with the next command, since you could remove binded directories and harm you system. Use tab completion for the paths instead of typing them.

for dir in "${dirs[@]}"; do
  sudo umount /media/foo/USB/$dir && rm -rf /media/foo/USB/$dir
done
  1. Смонтируйте ISO и скопируйте файл /boot/grub/grub.cfgв /media/foo/USB/boot/grub. Измените имена, например ubuntu.cfgи debian.cfg

  2. .
  3. Скопируйте ISO-файлы на USB-накопитель.

Конфигурация GRUB:

  1. Создайте в /media/foo/USB/grubфайл grub.cfgи поместите туда следующее содержимое:

    set root='(hd0,1)'
    configfile /boot/grub/grub.cfg
    
  2. Создайте в /media/foo/USB/boot/grubфайл grub.cfgи поместите туда следующее содержимое:

    menuentry 'Ubuntu 19' {
      configfile /boot/grub/ubuntu.cfg
    }
    
    menuentry 'Debian 10' {
      configfile /boot/grub/debian.cfg
    }
    

Настройка ubuntu.cfg

Отредактируйте файл /media/foo/USB/boot/grub/ubuntu.cfgи добавьте следующие строки вверху:

set iso_path=/ubuntu-19.04-desktop-amd64.iso # the name of the ISO
loopback loop $iso_path

Заменить все вхождения строки /casper/на(loop)/casper/

Заменить все вхождения строки vmlinuzнаvmlinuz iso-scan/filename=$iso_path

Настройка debian.cfg

Отредактируйте файл /media/foo/USB/boot/grub/debian.cfgи добавьте следующие строки вверху:

set iso_path=/debian-live-10.2.0-i386-lxqt+nonfree.iso # the name of the ISO
loopback loop $iso_path

Заменить все вхождения строки /live/на(loop)/live/

Заменить все вхождения строки /d-i/на(loop)/d-i/


Теперь мы готовы проверить, правильно ли работает USB, просто загрузите компьютер с подключенным USB, и в зависимости от BIOS/EFI у вас будут разные варианты выбора между загрузкой BIOS или EFI или просто вариант загрузки с USB на старых машинах.


For the sake of simplicity, and because this method is moderately advanced, I omit lots of details which I assume the user will be able to sort out. Anyway, suggestions, critics, improvements are welcome. This answer can be edited to add GRUB configurations for other Linux systems if you ask.

Таким же способом для установщиков Windows .

1
27.01.2020, 23:56

Теги

Похожие вопросы