2019-01-23 11:28:41
Создайте U-диск для системы Ubuntu с чистой загрузкой UEFI
предисловие
Целью данной статьи является создание USB-накопителя Ubuntu To Go, который поддерживает загрузку UEFI через ISO-образ Ubuntu 16.04.
Я уже ссылался на другие статьи ранее и успешно создал U-дисковую систему, которая поддерживает как Bios, так и UEFI, но требует подключения к Интернету для установки EFI Grub2.
Лично чувствую, что сам файл ISO поддерживает UEFI, почему бы не извлечь файл загрузки непосредственно из файла образа.
Через поиск я извлек папку EFI в ISO, использовал строки EFI / grubx64.efi для просмотра его исходного кода и обнаружил, что он будет читать файл конфигурации /boot/grub/grub.cfg в корневом каталоге диска EFI, который был вдохновлен для подведения итогов. Следующие этапы производства.
Препараты
Ubuntu 16.04 LTS ISO
http://releases.ubuntu.com/xenial/ubuntu-16.04.5-desktop-amd64.iso
DiskGenius Free Edition
Программное обеспечение для декомпрессии HaoZip
USB3.0 64 ГБ или выше U диск, 2.0 не рекомендуется, скорость слишком низкая
Возьмите мой Chipfancier 256 ГБ в качестве примера, используйте DiskGenius для установки типа GPT, раздел выглядит следующим образом
размер | формат | замечание |
---|---|---|
200MB | FAT32 | EFI различие |
100GB | EXT4 | Здесь установлена Ubuntu, смонтируйте корневой каталог / |
133GB | EXFAT | Для хранения файлов формат exFat является общим для Windows, MacOSX, Linux |
2 Гб | FAT32 | Сохраните ISO установочного диска, iso файл загрузки Grub2 может быть только в Fat32 |
Кроме того, диск U объемом 64 ГБ использует тип MBR. Рекомендуемые разделы следующие: Третий раздел может быть объединен со вторым разделом после установки.
размер | формат | замечание |
---|---|---|
200MB | FAT32 | Основной раздел, активный, EFI различие |
50GB | EXT4 | Основной раздел, на котором установлена Ubuntu, монтирует корневой каталог / |
2 Гб | FAT32 | Основной раздел, хранящий установочный диск ISO |
** Используйте программное обеспечение для распаковки, чтобы скопировать всю папку EFI из ubuntu-16.04.5-desktop-amd64.iso в первый раздел **
# EFI 文件夹应该包含以下内容
# UEFI 系统会搜索所有FAT32 磁盘根目录下的EFI/BOOT/BOOTx64.efi(不分大小写)
|____EFI
|____BOOT
|____BOOTx64.EFI <-- 由shimx64.efi 改名而来,针对主板开启了SecureBoot
|____grubx64.efi <-- 如果关闭了SecureBoot 可直接将grubx64.efi 改名为bootx64.efi
** Создайте /boot/grub/grub.cfg в первом разделе, который содержит команду для запуска Ubuntu, но ее можно использовать после модификации после установки системы **
set timeout=10
menuentry "Ubuntu 16.04 LTS" {
set uuid=0dcc1a29-32ad-4c59-a14d-ab0d9b3c1c00
search --no-floppy --fs-uuid --set=ubdisk $uuid
#search.fs_uuid $uuid ubdisk # same as above
set root=($ubdisk)
linux /boot/vmlinuz-4.15.0-29-generic root=UUID=$uuid
initrd /boot/initrd.img-4.15.0-29-generic
}
submenu "Others" {
menuentry "Reboot" {
reboot
}
menuentry "Halt" {
halt
}
}
** Создайте папку ISO в последнем разделе, скопируйте ubuntu-16.04.5-desktop-amd64.iso в ISO и создайте /ISO/set-hdisk-source.txt, содержимое которого предназначено для загрузки ISO-файла на диске U. Команда **
set isofile=/ISO/ubuntu-16.04.5-desktop-amd64.iso
loopback loop $hdisk$isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet splash
initrd (loop)/casper/initrd
boot
** Полученная древовидная диаграмма файловой системы **
|____第一分区,即EFI 分区
| |____EFI
| | |____BOOT
| | |____BOOTx64.EFI
| | |____grubx64.efi
| |____boot
| |____grub
| |____grub.cfg
|____最后分区,即保存ISO 的分区
| |____ISO
| |____ubuntu-16.04.5-desktop-amd64.iso
| |____set-hdisk-source.txt
Шаги установки
Вставьте диск U с развернутыми выше файлами в компьютер и выберите загрузку с диска U. Когда появится меню Grub2, нажмите c, чтобы войти в командную строку grub>
ls # Проверьте, какие буквы дисков доступны в данный момент, например, iso is на диске (hd0, gpt4)
ls (hd0, # В это время вам будет предложено нажать клавишу Tab, какие разделы находятся на жестком диске, а также UUID и тип формата раздела
Направьте iso-файл на диск U следующей командой: FAT32 изменит все буквы на строчные, источник эквивалентен чтению командного файла
set hdisk=(hd0,gpt4)
source $hdisk/iso/set-hdisk-source.txt
После входа в Ubuntu LiveCD, нажмите на логотип в верхнем левом углу, чтобы войти в терминал, чтобы открыть терминал
sudo -s # 切换到root 用户
umount -l /isodevice # 卸载iso 挂载的盘符,否则无法对U 盘进行写入操作
ubiquity --no-bootloader # 千万不要用桌面的安装图标直接安装,否则UEFI 引导文件会被修改
Установка Ubuntu такая же, как и при использовании других носителей, единственное, что нужно отметить, это выбрать точку монтирования корневого каталога /
- Выберите язык, мне нравится выбирать китайский, а затем установить каталог на английский
- Отказаться от
- Выберите для установки дополнительного стороннего программного обеспечения
- Раздел жесткого диска
- Подсказка «Размонтировать установленный раздел» выберите «Да»
- Выберите второй раздел диска U, введите Ext4, основной раздел, отметьте «format», точку монтирования «/».
- Подсказка не устанавливает своп на игнорирование, нажимаем «Продолжить»
- Выберите часовой пояс
- Выберите клавиатуру, английский, американский
- Установите имя пользователя, имя хоста, пароль
Не «перезагружать» после установки, выберите «продолжить пробную версию»
fdisk -l # 查找U 盘的设备名,通过分区类型及数量判断,例如/dev/sdb
blkid | grep sdb # 查看各个磁盘的UUID,主要关注U 盘的第一、第二个分区的UUID
mount /dev/sdb2 /mnt
mount /dev/sdb1 /mnt/boot/efi
vi /mnt/etc/fstab # 将最后一行的UUID 改成U 盘第一个盘即EFI 分区的UUID
# /etc/fstab 最后一行影响的是新系统/boot/efi 目录的挂载
# Ubuntu 在安装的时候会将Windows 的ESP 分区挂载到/boot/efi
# 在MacBook 上启动报错就是因为/boot/efi 挂载的设备不存在
# 所以,将/boot/efi 挂载点设置为U 盘就不会找不到设备了
vi /mnt/boot/efi/boot/grub/grub.cfg # 将set uuid=U盘第二个盘即Ext4 分区的UUID
# 这里设置的是告诉Grub2,Ubuntu 的安装位置,UUID 是磁盘的唯一标识,除非格式化才会改变
# 以上vi 都修改完文件后卸载挂载的磁盘并重启系统
umount /mnt/boot/efi
umount /mnt
init 6 # 重启系统
Начните снова с диска U, выберите «Ubuntu 16.04 LTS», чтобы войти во вновь установленную систему
уборка
После выключения компьютера отключите диск U. В процессе установки Ubuntu все еще что-то писал в UEFI, взяв в качестве примера мою исходную систему X270 Windows 8.1.
Войдите в Windows и используйте DiskGenius, чтобы просмотреть раздел ESP и удалить папку Ubuntu в папке EFI.
Справочная статья
Сделать Legacy BIOS / EFI с двойной загрузкой Ubuntu To Go с загрузочного диска
https://www.littleqiu.net/archives/771
https://zhuanlan.zhihu.com/p/27871019
Установка Ubuntu на USB-накопитель с чистой загрузкой EFI (Mac-совместимый)
Загрузка Ubuntu ISO-файла из меню Grub
https://askubuntu.com/questions/500295/booting-ubuntu-iso-file-from-grub-menu
Как загрузчик GRUB2 UEFI знает, где искать файлы конфигурации
https://stackoverrun.com/cn/q/9723219