Linux mount efi partition

Dids / raw_img_gpt_efi.md

I originally wanted to create bootable disks for UEFI (i)PXE booting, meaning I could directly boot premade disk images over the network, no matter what they may contain.

While this guide serves my purpose well, it’s also generic enough to be extended to almost any use case. For example, you might use it as temporary or even portable storage, mountable across different operating systems, or you might use it as a disk image for a virtual machine.

DISCLAIMER: Be very careful with the commands listed below, as you could potentially not only cause data loss, but even prevent your operating system from booting, no matter how unlikely either of those may be. Pay attention to the commands, comments and differences between the guide and your local environment.

Create a blank disk image

dd if=/dev/zero of=image.img iflag=fullblock bs=1M count=100 && sync
# Mount the image on the first available loopback device losetup -f image.img # List currently mounted loopback devices # (this is just to confirm it was mounted) losetup

Create the EFI partition on the image

# Get the loopback device for the mounted image LOOP_DEV_PATH=`losetup -a | grep image.img | awk -F: ''` # Partition the loopback device # (enter the commands/characters and press enter) gdisk $LOOP_DEV_PATH o y n # 0xEF00 w y # Trigger partition discovery for the newly partitioned loopback device partprobe $LOOP_DEV_PATH # List the partitions of the loopback device # (this is only for confirming that the partitions are visible) ls $LOOP_DEV_PATH*
# Get the loopback device for the mounted image LOOP_DEV_PATH=`losetup -a | grep image.img | awk -F: ''`p1 # Format the EFI partition as FAT32 mkfs.fat -F32 $LOOP_DEV_PATH
# Get the loopback device for the mounted image LOOP_DEV_PATH=`losetup -a | grep image.img | awk -F: ''`p1 # Make sure the target mounting directory exists mkdir -p /mnt/image # Mount the EFI partition to a local path mount $LOOP_DEV_PATH /mnt/image

Working with files on the EFI partition

At this point you should be able to freely create, edit and remove files mounted under the /mnt/image path. Once you’re done, simply continue to the next step, where we will safely and cleanly unmount the partition and image/loopback device.

Unmount the EFI partition

# Unmount the EFI partition umount /mnt/image # Remove the mount point # DISCLAIMER: Be careful with this, as you could potentially lose data if unmounting was unsuccessful etc. rm -rf /mnt/image

Unmount the image/loopback device

# Get the loopback device for the mounted image LOOP_DEV_PATH=`losetup -a | grep image.img | awk -F: ''` # Unmount the loopback device losetup -d $LOOP_DEV_PATH # Verify that the image is no longer mounted losetup -l

Working with the disk image

This section assumes that you no longer have the image mounted in any way. It also assumes your image is properly formatted and you’re familiar with its partition layout.

# Mount the image as a loopback device first # -f searches for the next free loop device (no need to manually select one) # -P triggers a scan for any available partitions in the image losetup -f -P image.img # Get the loopback device for the mounted image LOOP_DEV_PATH=`losetup -a | grep image.img | awk -F: ''`p1 # Mount the EFI partition to a local path (create path first if necessary) mkdir -p /mnt/image mount $LOOP_DEV_PATH /mnt/image # List the image contents to verify that it is mounted correctly ls -lah /mnt/image

Working with files on the image

At this point you should be able to freely create, edit and remove files mounted under the /mnt/image path. Once you’re done, simply continue to the next step, where we will safely and cleanly unmount the partition and image/loopback device.

# Unmount the EFI partition umount /mnt/image # Remove the mount point # DISCLAIMER: Be careful with this, as you could potentially lose data if unmounting was unsuccessful etc. rm -rf /mnt/image # Get the loopback device path LOOP_DEV_PATH=`losetup -a | grep image.img | awk -F: ''` # Remove the loopback device losetup -d $LOOP_DEV_PATH

Источник

Создание загрузочной системы EFI⚓︎

Отключите secure boot ! На данный момент эта технология не поддерживается. Чтобы настроить процесс загрузки с помощью GRUB для UEFI, необходимо отключить её в интерфейсе конфигурации прошивки. Прочтите документацию, предоставленную производителем вашей системы, чтобы узнать, как это сделать.

Убедитесь, что вы не пропустили раздел по настройке ядра, для поддержки EFI.

Поиск, или создание системного раздела EFI⚓︎

В системе на основе EFI загрузчики устанавливаются в специальный раздел FAT32, называемый системным разделом EFI (ESP). Если ваша система поддерживает EFI и предустановлен дистрибутив Linux и (или) Windows, скорее всего, ESP уже создан. Посмотрите все разделы на вашем жёстком диске (замените sda на нужное устройство):

Столбец ESP type должен быть EFI System .

 Устр-во начало Конец Секторы Размер Тип /dev/sda1 4096 618495 614400 300M EFI /dev/sda2 618496 268430084 267811589 127,7G Файловая система Linux 

Если система или жёсткий диск новые, или если вы впервые устанавливаете ОС, загружаемую через UEFI , ESP может не существовать. В этом случае создайте новый раздел, создайте на нем файловую систему vfat и установите тип раздела EFI system .

Некоторые (старые) реализации UEFI могут требовать, чтобы ESP был первым разделом на диске.

Создайте точку монтирования для ESP и смонтируйте ее (замените sda1 на соответствующий ESP ):

 mkdir -pv /boot/efi && mount -v -t vfat /dev/sda1 /boot/efi 

Добавьте запись для ESP в /etc/fstab , чтобы он автоматически монтировался во время загрузки системы:

 cat >> /etc/fstab  /dev/sda1 /boot/efi vfat defaults 0 1 EOF 

Монтирование EFI Variable File System⚓︎

Для установки GRUB на UEFI необходимо смонтировать файловую систему EFI Variable, efivarfs . Если она еще не была смонтирована ранее, выполните команду:

 mountpoint /sys/firmware/efi/efivars || mount -v -t efivarfs efivarfs /sys/firmware/efi/efivars 

Добавьте запись для efivarfs в /etc/fstab , чтобы она автоматически монтировалась во время загрузки системы:

 cat >> /etc/fstab  efivarfs /sys/firmware/efi/efivars efivarfs defaults 0 0 EOF 

Если система не загружается с UEFI, каталог /sys/firmware/efi будет отсутствовать. В этом случае вы должны загрузить систему в режиме UEFI с аварийным загрузочным диском.

Настройка⚓︎

В системах на основе UEFI GRUB работает устанавливая приложение EFI (особый вид исполняемого файла) в /boot/efi/EFI/[id sizes/grubx64.efi , где /boot/efi — точка монтирования ESP , а [id] заменяется идентификатором, указанным в командной строке grub-install . GRUB создаст запись в переменных EFI , содержащую путь EFI/[id]/grubx64.efi , чтобы прошивка EFI могла найти grubx64.efi и загрузить его.

grubx64.efi очень легкий (136 Кб), поэтому он не будет занимать много места в ESP. Типичный размер ESP составляет 100 Мб (для диспетчера загрузки Windows, который использует около 50 Мб в ESP). Как только grubx64.efi загружен прошивкой, он загрузит модули GRUB в загрузочный раздел. Расположение по умолчанию — /boot/grub .

Установите файлы GRUB в /boot/efi/EFI/LFS/grubx64.efi и /boot/grub . Затем настройте загрузочную запись в переменных EFI:

 grub-install --bootloader-id=LIN --recheck 

Если установка прошла успешно, вывод должен быть:

 Installing for x86_64-efi platform. Installation finished. No error reported. 

Запустите efibootmgr , чтобы ещё раз проверить конфигурацию загрузки EFI.

 BootCurrent: 0000 Timeout: 1 seconds BootOrder: 0005,0000,0002,0001,0003,0004 Boot0000* ARCH Boot0001* UEFI:CD/DVD Drive Boot0002* Windows Boot Manager Boot0003* UEFI:Removable Device Boot0004* UEFI:Network Device Boot0005* LIN 

Обратите внимание, что 0005 является первым в BootOrder , а Boot0005 — это LIN . Это означает, что при следующей загрузке системы будет использоваться версия GRUB , установленная в LIN .

Создание файла конфигурации GRUB⚓︎

Создайте /boot/grub/grub.cfg для настройки меню загрузки GRUB:

 cat > /boot/grub/grub.cfg  # Begin /boot/grub/grub.cfg set default=0 set timeout=5 insmod part_gpt insmod ext2 set root=(hd0,2) if loadfont /boot/grub/fonts/unicode.pf2; then set gfxmode=auto insmod all_video terminal_output gfxterm fi menuentry "GNU/Linux, Linux 5.10.17-lfs-10.1"  linux /boot/vmlinuz root=/dev/sda2 ro > menuentry "Firmware Setup"  fwsetup > EOF 

(hd0,2) , sda2 следует заменить в соответствии с вашей конфигурацией.

Для GRUB файлы используются относительно раздела. Если вы использовали отдельный раздел /boot , удалите /boot из указанных выше путей (к ядру и к unicode.pf2). Вам также нужно будет изменить строку корневого раздела, чтобы она указывала на загрузочный раздел.

Загрузка вместе с Windows⚓︎

Добавьте запись в файл конфигурации grub.cfg :

 cat >> /boot/grub/grub.cfg  # Begin Windows addition menuentry "Windows 10"  insmod fat insmod chain set root=(hd0,1) chainloader /EFI/Microsoft/Boot/bootmgfw.efi > EOF 

(hd0,1) следует заменить назначенным GRUB именем для ESP. Директива chainloader может использоваться, чтобы указать GRUB запустить другой исполняемый файл EFI, в данном случае диспетчер загрузки Windows. вы можете поместить больше используемых инструментов в исполняемом формате EFI (например, оболочку EFI) в ESP и создать для них записи GRUB.

Источник

How to mount the EFI system partition using Ubuntu 16.04 Live CD

My Hard drive has the GRUB boot loader on there from a leftover Ubuntu installation and I want to delete it but I need to mount the EFI system partition first. So how can I mount it from the Live CD? Help appreciated, Bondy.

1 Answer 1

To begin, note that deleting the Ubuntu boot loader is not usually necessary. If you plan to re-install Ubuntu, the new installation will take over the old one’s location, so deleting the old boot loader won’t achieve anything. If you plan to boot some other OS that’s already installed, changing the boot order (with efibootmgr in Ubuntu or another Linux, EasyUEFI in Windows, or other similar tools) should be sufficient. The main reason to delete the old boot loader is if you’ve installed (or plan to install) some other OS or boot manager, and you want to keep Ubuntu’s GRUB out of its menu. Beyond that, deleting Ubuntu’s GRUB could qualify as «good housekeeping,» but it’s likely unnecessary.

That said, the most reliable way to mount the EFI System Partition (ESP) from the Ubuntu installer/emergency disk is as follows:

  1. Open a Terminal window. (To do this, click the Ubuntu icon in the top-left corner of the screen, type «terminal», and either hit Enter or select the Terminal option.)
  2. Type sudo fdisk -l . This should produce output that identifies the ESP (among other things), like this:
Device Start End Sectors Size Type /dev/sda1 2048 1128447 1126400 550M EFI System /dev/sda2 1128448 79626398 78497951 37.4G Linux filesystem /dev/sda3 79628288 85917854 6289567 3G Linux swap 
  1. Identify your ESP; it should specify EFI System in the Type column. In this example, it’s /dev/sda1 . (The ESP is usually /dev/sda1 or /dev/sda2 , but that’s just what’s most common.)
  2. With the ESP identified, mount it to /mnt , as in sudo mount /dev/sda1 /mnt . If you prefer, you can create a mount point other than /mnt and mount the ESP there. This might be necessary if you want to mount multiple partitions.

You can then use ls , cp , mv , rm , and other text-mode commands in the Terminal window. Note that, unless you add various mount options, you’ll need to use sudo to operate on files on the ESP.

Источник

Читайте также:  Определить версию python linux
Оцените статью
Adblock
detector