Как загрузить Debian с UEFI после переноса содержимого с меньшего диска с компьютера, загружающегося по BIOS, на диск в компьютере только с UEFI?

Вопрос или проблема

У меня установлен Debian 12 для загрузки из BIOS на SATA-диске. Разделение типа MBR было определено по умолчанию, установленному в установщике Debian. Я скопировал точное содержимое этого диска на новый, больший диск, который будет использоваться другим, более новым компьютером, который может загружаться только через UEFI. Меньший диск имеет ёмкость 250 ГБ с размером сектора 512 байт, а больший диск имеет ёмкость 500 ГБ с размером сектора 4096 байт. Больший диск в настоящее время установлен в компьютере, который может загружаться только по UEFI.

Каковы шаги, необходимые для конвертации большего диска в GPT и установки работающего загрузчика Grub с поддержкой UEFI?

Старый компьютер имеет 2048 МБ оперативной памяти, а новый компьютер имеет 4096 МБ оперативной памяти. Поскольку память больше, я хотел бы соответственно увеличить пространство под подкачку.

Записи таблицы разделов MBR

Раздел Устройство Загрузка Начальный
сектор
Конечный
сектор
Размер в
секторах
Размер Тип Id
Первичный /dev/sda1 * 2048 479561485 479559438 228.7 GiB Файловая система Linux 83
Вторичный /dev/sda2 479561486 488424194 8862709 4327 MiB Подкачка Linux 82

Размер диска /dev/sda составляет 232.9 GiB, 250074470400 байт, 488426700 секторов @ 512 байт/сектор

Шаги перечислены ниже.

  1. Преобразовать таблицу разделов MBR в GPT.

    Этот шаг требует загрузки с внешнего носителя, что позволит выполнять базовые команды Linux. Это может быть либо USB-накопитель, либо DVD. В данном ответе используется DVD. Здесь был случайным образом выбран SystemRescue. Файл, загруженный из SystemRescue, был systemrescue-11.03-amd64.iso.

    Введите команду ниже, чтобы отобразить список всех блочных устройств. Из вывода определите, какое блочное устройство является диском. В данном ответе блочное устройство – это /dev/sda.

    lsblk
    

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

    blockdev -v --getss /dev/sda
    

    Команда ниже создаёт новую пустую таблицу разделов GUID (GPT). Существующая таблица разделов MBR будет удалена.

    parted /dev/sda mklabel gpt
    

    Корневой раздел (содержащий объем ext4 Debian) необходимо добавить в GPT. Согласно таблице, данной в вопросе, этот раздел начинался на секторе 1024 на старом диске, который имеет размер сектора 512 байт. Новый диск имеет размер сектора 4096 байт, что в 8 раз больше. Это означает, что раздел находится на новом диске на секторе 256, что точно соответствует 1024, делённому на 8. Команда, приведённая ниже, добавляет корневой раздел в GPT, который содержит объем ext4 Debian.

    parted -- /dev/sda unit s rescue 256 -1
    

    На этом этапе не будет предпринято попытки добавить раздел подкачки. Это будет сделано на более позднем этапе в этом ответе. Введите команду ниже, чтобы смонтировать объем ext4 Debian в корневом разделе. Это позволит получить доступ к файлу fstab, чтобы строка, относящаяся к объему подкачки, могла быть закомментирована.

    mount /dev/sda1 /mnt                                  
    

    Введите команду ниже, чтобы вывести файл fstab с номерами строк.

    Примечание: Этот вывод представлен в разделе ниже с заголовком “Содержимое консоли SystemRescue”.

    cat -n /mnt/etc/fstab
    

    Вывод показывает, что строка 9 содержит запись для раздела подкачки. Команда ниже комментирует эту строку.

    sed -i '9s/^/#/' /mnt/etc/fstab
    

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

    Примечание: Этот вывод представлен в разделе ниже с заголовком “Содержимое консоли SystemRescue”.

    cat /mnt/etc/fstab
    

    Введите команды ниже, чтобы размонтировать /dev/sda1 и выключить компьютер.

    umount /mnt
    shutdown -P now
    

    После выключения удалите внешний носитель.

  2. Загрузка UEFI Debian без Grub.

    Этот шаг требует загрузки менеджера загрузки rEFInd с внешнего носителя. Информацию о загрузках rEFInd можно найти здесь. Также есть ссылки для загрузки образа CD-R или образа USB-накопителя. В данном ответе используется CD, сделанный из файла refind-cd-0.14.2.iso.

    Менеджер загрузки rEFInd может инструктировать UEFI загружать дистрибутивы Linux без использования Grub. Процесс описан ниже.

    • UEFI загружает с внешнего носителя rEFInd.
    • Менеджер загрузки rEFInd затем устанавливает драйвер Ext4 в UEFI.
    • Менеджер загрузки rEFInd ищет объем Debian, отформатированный в Ext4, и находит загрузочные файлы Debian.
    • Менеджер загрузки rEFInd отображает меню с иконкой Debian.
    • Иконка Debian выбирается вручную или автоматически после короткой задержки.
    • Менеджер загрузки rEFInd инструктирует UEFI загрузить Debian. В этом случае файл загрузки показан ниже.
      boot\vmlinuz-6.1.0-25-amd64
      

      Также в этом случае параметры загрузки показаны ниже.

      ro root=UUID=82e62c10-56ab-43e1-96f8-9d7d959acf66 initrd=boot\initrd.img-6.1.0-25-amd64
      

    Ниже показано меню rEFInd, отображаемое после загрузки в rEFind.

    rEFInd

  3. Откройте окно приложения Терминал.

    Введите команду ниже, чтобы стать пользователем root.

    sudo -s
    
  4. Используйте приложение GParted для создания и изменения размеров разделов.

    Приложение GParted будет использоваться для следующих действий.

    • Добавить новый раздел подкачки размером 8613 MiB
    • Добавить раздел EFI размером 300 MiB
    • Расширить объем ext4 Debian и содержащий корневой раздел, чтобы включить все немедленно следующее свободное пространство.

    Примечание: Приложение Диски, включенное в установщик, может быть использовано вместо приложения GParted. Приложение Диски не будет форматировать раздел EFI в FAT32. Поэтому, если это необходимо, то команду mkfs.vfat -F 32 /dev/sda3 можно использовать после выхода из приложения Диски.

    Введите команду ниже, чтобы установить приложение GParted.

    apt update
    apt install gparted dosfstools mtools
    

    Введите следующее, чтобы открыть приложение GParted.

    gparted
    

    Выберите незанятое пространство сразу после раздела /dev/sda1, как показано ниже.

    Создайте новый раздел подкачки размером 8613 MiB с 301 MiB свободного пространства следом, как показано ниже.

    Выберите незанятое пространство сразу после “Нового раздела #1”, как показано ниже.

    Создайте новый раздел fat32 размером 300 MiB, как показано ниже.

    Выберите раздел /dev/sda1, как показано ниже.

    Измените размер объема ext4 и содержащего раздела так, чтобы за ним следовало 0 MiB свободного пространства, как показано ниже.

    Выберите зеленую галочку, чтобы “Применить все операции”, как показано ниже.

    Установите флаги, как показано ниже, для /dev/sda3. Это изменит тип раздела на EFI System.

    Результат показан ниже. Выйдите из приложения GParted.

  5. Смонтируйте раздел EFI System.

    Введите команды, указанные ниже.

    mkdir -p /boot/efi
    mount /dev/sda3 /boot/efi
    
  6. Обновите файл fstab.

    Введите команду ниже, чтобы просмотреть файл fstab.

    cat /etc/fstab
    

    Ниже приведён пример. UUID корневого (/) и swap имеют форму xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, где каждый x – это шестнадцатеричная цифра. Ниже UUID корневого и swap были заменены на {UUID корневого раздела} и {оригинальный UUID swap} соответственно.

    cat /etc/fstab
    # /etc/fstab: статическая информация о файловой системе.
    #
    # Используйте 'blkid', чтобы напечатать универсальный уникальный идентификатор для устройства; это может
    # использоваться с UUID= в качестве более надежного способа наименования устройств, который работает даже если
    # жесткие диски добавляются и удаляются. См. fstab(5).
    #
    # <файловая система>             <точка монтирования>  <тип>  <опции>  <дамп>  <пас>
    UUID={UUID корневого раздела} /              ext4    defaults,noatime 0 1
    UUID={оригинальный UUID swap} swap           swap    defaults,noatime 0 0
    

    UUID swap необходимо обновить, и UUID для EFI-объема необходимо добавить. Команда ниже выводит новые UUID. UUID EFI имеет форму XXXX-XXXX, где каждая X – шестнадцатеричная цифра.

    blkid -s UUID /dev/sda2 /dev/sda3
    

    Пример вывода показан ниже. UUID EFI и swap были заменены на {UUID EFI} и {новый UUID swap} соответственно.

    /dev/sda2: UUID="{UUID EFI}"
    /dev/sda3: UUID="{новый UUID swap}"
    

    Чтобы внести изменения в /etc/fstab, вы можете использовать nano, другой редактор или ввести команды ниже. При вводе команд ниже замените {оригинальный UUID swap}, {новый UUID swap} и {UUID EFI} на соответствующие актуальные UUID.

    sed 's/#UUID={оригинальный UUID swap}/UUID={новый UUID swap}/' /etc/fstab >fstab
    echo UUID={UUID EFI} /boot/efi vfat umask=0077 0 1 >>fstab
    mv fstab /etc/fstab
    

    Когда закончите, команду ниже можно использовать для просмотра нового файла fstab. Примечание: {UUID корневого раздела} должен остаться неизменным.

    cat /etc/fstab
    

    Ниже приведён пример.

    cat /etc/fstab
    # /etc/fstab: статическая информация о файловой системе.
    #
    # Используйте 'blkid', чтобы напечатать универсальный уникальный идентификатор для устройства; это может
    # использоваться с UUID= в качестве более надежного способа наименования устройств, который работает даже если
    # жесткие диски добавляются и удаляются. См. fstab(5).
    #
    # <файловая система>             <точка монтирования>  <тип>  <опции>  <дамп>  <пас>
    UUID={UUID корневого раздела} /              ext4    defaults,noatime 0 1
    UUID={новый UUID swap} swap           swap    defaults,noatime 0 0
    UUID={UUID EFI} /boot/efi vfat umask=0077 0 1
    
  7. Установите Grub

    Сначала Grub устанавливается для загрузки BIOS, затем для загрузки UEFI.

    apt reinstall grub-efi
    grub-install /dev/sda
    update-grub
    exit
    
  8. Загрузитесь в Debian.

    Выключите компьютер. Уберите внешний носитель. Загрузитесь в Debian.


Новая таблица разделов GUID (GPT)

Записи таблицы разделов GUID (GPT)

# Устройство Начальный
сектор
Конечный
сектор
Размер в
секторах
Размер Тип GUID типа
раздела
1 /dev/sda1 256 119877119 119876864 457.3 GiB Файловая система Linux 0FC63DAF-8483-4772-8E79-3D69D8477DE4
2 /dev/sda2 119877120 122082047 2204928 8613 MiB Подкачка Linux 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
3 /dev/sda3 122082048 122158847 76800 300 MiB EFI System C12A7328-F81F-11D2-BA4B-00A0C93EC93B

Размер диска /dev/sda составляет 466.0 GiB, 500363689984 байт, 122159104 секторов @ 4096 байт/сектор


Содержимое консоли SystemRescue

[root@sysrescue ~]# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0    7:0    0 854.7M  1 loop /run/archiso/sfs/airootfs
sda      8:0    0   466G  0 disk 
└─sda1   8:1    0   466G  0 part 
sr0     11:0    1   944M  0 rom  /run/archiso/bootmnt
[root@sysrescue ~]# blockdev -v --getss /dev/sda
get logical block (sector) size: 4096
[root@sysrescue ~]# parted /dev/sda mklabel gpt
Information: You may need to update /etc/fstab.

[root@sysrescue ~]# parted -- /dev/sda unit s rescue 256 -1
Information: A ext4 primary partition was found at 256s -> 59945184s.  Do you
want to add it to the partition table?
Yes/No/Cancel? y                                                          
Information: You may need to update /etc/fstab.

[root@sysrescue ~]# mount /dev/sda1 /mnt                                  
[root@sysrescue ~]# cat -n /mnt/etc/fstab
     1  # /etc/fstab: static file system information.
     2  #
     3  # Use 'blkid' to print the universally unique identifier for a device; this may
     4  # be used with UUID= as a more robust way to name devices that works even if
     5  # disks are added and removed. See fstab(5).
     6  #
     7  # <file system>             <mount point>  <type>  <options>  <dump>  <pass>
     8  UUID=82e62c10-56ab-43e1-96f8-9d7d959acf66 /              ext4    defaults,noatime 0 1
     9  UUID=8dc76951-2a26-4636-8f09-f5abfe0ea68c swap           swap    defaults,noatime 0 0
[root@sysrescue ~]# sed -i '9s/^/#/' /mnt/etc/fstab 
[root@sysrescue ~]# cat /mnt/etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a device; this may
# be used with UUID= as a more robust way to name devices that works even if
# disks are added and removed. See fstab(5).
#
# <file system>             <mount point>  <type>  <options>  <dump>  <pass>
UUID=82e62c10-56ab-43e1-96f8-9d7d959acf66 /              ext4    defaults,noatime 0 1
#UUID=8dc76951-2a26-4636-8f09-f5abfe0ea68c swap           swap    defaults,noatime 0 0
[root@sysrescue ~]# umount /mnt
[root@sysrescue ~]# shutdown -P now

Содержимое окна терминала Debian

dma@debian:~$ sudo -s
[sudo] password for dma: 
root@debian:/home/dma# apt update
   .
   .
   .
Строки были опущены для краткости.
   .
   .
   .
root@debian:/home/dma# apt install gparted dosfstools mtools
   .
   .
   .
Строки были опущены для краткости.
   .
   .
   .
root@debian:/home/dma# gparted
GParted 1.3.1
configuration --enable-libparted-dmraid --enable-online-resize
libparted 3.5
root@debian:/home/dma# mkdir -p /boot/efi
root@debian:/home/dma# mount /dev/sda3 /boot/efi
root@debian:/home/dma# cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a device; this may
# be used with UUID= as a more robust way to name devices that works even if
# disks are added and removed. See fstab(5).
#
# <file system>             <mount point>  <type>  <options>  <dump>  <pass>
UUID=82e62c10-56ab-43e1-96f8-9d7d959acf66 /              ext4    defaults,noatime 0 1
#UUID=8dc76951-2a26-4636-8f09-f5abfe0ea68c swap           swap    defaults,noatime 0 0
root@debian:/home/dma# blkid -s UUID /dev/sda2 /dev/sda3
/dev/sda2: UUID="5d429772-7834-43c2-99ac-759e3c19aaeb"
/dev/sda3: UUID="91C0-108A"
root@debian:/home/dma# sed 's/#UUID=8dc76951-2a26-4636-8f09-f5abfe0ea68c/UUID=5d429772-7834-43c2-99ac-759e3c19aaeb/' /etc/fstab >fstab
root@debian:/home/dma# echo UUID=91C0-108A /boot/efi vfat umask=0077 0 1 >>fstab
root@debian:/home/dma# mv fstab /etc/fstab
root@debian:/home/dma# cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a device; this may
# be used with UUID= as a more robust way to name devices that works even if
# disks are added and removed. See fstab(5).
#
# <file system>             <mount point>  <type>  <options>  <dump>  <pass>
UUID=82e62c10-56ab-43e1-96f8-9d7d959acf66 /              ext4    defaults,noatime 0 1
UUID=5d429772-7834-43c2-99ac-759e3c19aaeb swap           swap    defaults,noatime 0 0
UUID=91C0-108A /boot/efi vfat umask=0077 0 1
root@debian:/home/dma# apt reinstall grub-efi
   .
   .
   .
Строки были опущены для краткости.
   .
   .
   .
root@debian:/home/dma# grub-install /dev/sda
Установка для платформы x86_64-efi.
Установка завершена. Ошибок не обнаружено.
root@debian:/home/dma# update-grub
Генерация файла конфигурации grub ...
Найдено фоновое изображение: /usr/share/images/desktop-base/desktop-grub.png
Найдено изображение linux: /boot/vmlinuz-6.1.0-25-amd64
Найдено изображение initrd: /boot/initrd.img-6.1.0-25-amd64
Внимание: os-prober не будет выполнен для обнаружения других загрузочных разделов.
Системы на них не будут добавлены в конфигурацию загрузки GRUB.
Проверьте запись документации GRUB_DISABLE_OS_PROBER.
Добавление записи меню загрузки для UEFI Firmware Settings ...
выполнено
root@debian:/home/dma# exit
exit
dma@debian:~$ 

Размер пространства подкачки по умолчанию в установщике Debian

Таблица ниже показывает размеры, выбранные по умолчанию для пространства подкачки установщиком Debian. При небольшом объёме оперативной памяти пространство подкачки немного больше чем в два раза превышает объём RAM. При большом объёме оперативной памяти пространство подкачки немного больше фактического объёма RAM.

Оперативная память Пространство подкачки
2048 MiB 4327 MiB ≃ 4.23 GiB
4096 MiB 8.41G ≃ 8613 MiB
8192 MiB 9011 MiB ≃ 8.8 GiB
12288 MiB 12.85 GiB ≃ 13157 MiB

Ответ или решение

Как загрузить Debian с использованием UEFI после переноса содержимого с диска BIOS на новый UEFI-диск

Введение

Переход с BIOS на UEFI может быть сложным процессом, особенно когда речь идет о переносе операционной системы, такой как Debian, с одного диска на другой. В этой статье мы подробно рассмотрим все шаги, необходимые для преобразования вашей системы, чтобы она могла загружаться в UEFI-режиме, включая создание новой таблицы разделов GPT и установку загрузчика GRUB.

Подготовительный этап

1. Сбор необходимых инструментов

Для начала вам понадобится загрузочный носитель с Linux, например, SystemRescue. Для этого загрузите ISO-образ и запишите его на USB флешку или DVD. Это даст вам доступ к инструментам, необходимым для выполнения преобразования.

Конвертация MBR в GPT

2. Загрузка с Live-носителя

Вставьте загрузочный носитель в новое UEFI-устройство и загрузитесь с него. Выберите опцию для запуска в терминале. Вам понадобятся базовые команды Linux для работы с дисками.

3. Проверка состояния диска

Введите следующую команду, чтобы просмотреть все блочные устройства:

lsblk

Это поможет вам определить, какой блок – это ваш новый диск (например, /dev/sda). Убедитесь, что размер сектора вашего нового диска составляет 4096 байт:

blockdev -v --getss /dev/sda

4. Создание новой таблицы разделов GPT

Команда ниже создаст новую таблицу разделов GPT, которая удалит старую MBR:

parted /dev/sda mklabel gpt

Создание основных разделов

5. Добавление корневого раздела

На старом диске корневой раздел начинался с сектора 2048 (512 байт на сектор). Так как новый диск имеет размер сектора 4096 байт, корневой раздел будет начинаться с сектора 256. Выполните следующую команду:

parted -- /dev/sda unit s rescue 256 -1

6. Монтирование корневого раздела

Смонтируйте корневой раздел для редактирования конфигурации:

mount /dev/sda1 /mnt

7. Изменение fstab

Убедитесь, что строка для раздела swap закомментирована. Для этого выполните:

sed -i '9s/^/#/' /mnt/etc/fstab

Подтвердите изменения:

cat /mnt/etc/fstab

8. Выход и перезагрузка

Отмонтируйте корневой раздел и перезагрузите систему:

umount /mnt
shutdown -P now

Настройка UEFI загрузки

9. Загрузка с rEFInd

Используйте еще один загрузочный носитель с rEFInd Boot Manager. После загрузки с rEFInd:

  • Он загрузит драйвер для ext4 в UEFI.
  • Найдет загрузочные файлы Debian и предложит меню для выбора.

Выберите пункт с Debian для загрузки.

Создание EFI-раздела и Swap

10. Установка GParted

После загрузки в вашей Debian-системе установите GParted:

apt update
apt install gparted dosfstools mtools

11. Создание разделов

Используйте GParted для создания:

  • EFI-раздела размером 300 Мб.
  • Swap-раздела размером 8613 Мб.
  • Расширьте корневой раздел до оставшегося пространства:

После настройки откройте терминал и создайте точку монтирования для EFI:

mkdir -p /boot/efi
mount /dev/sda3 /boot/efi

Обновление fstab

12. Обновление UUID в fstab

Используйте команду blkid, чтобы получить новые UUID:

blkid -s UUID /dev/sda2 /dev/sda3

Отредактируйте /etc/fstab так, чтобы он включал новый UUID для swap и EFI.

Установка GRUB

13. Установка GRUB для UEFI

Наконец, установите GRUB:

apt reinstall grub-efi
grub-install /dev/sda
update-grub

Заключение

После завершения всех шагов, перезагрузите компьютер и удалите загрузочный носитель. Теперь ваша система должна загружаться в UEFI-режиме с корректной настройкой всех необходимых параметров. Эта процедура обеспечит надежный переход с BIOS на UEFI, улучшая производительность и возможности вашей системы.

Оцените материал
Добавить комментарий

Капча загружается...