- Вопрос или проблема
- Новая таблица разделов GUID (GPT)
- Содержимое консоли SystemRescue
- Содержимое окна терминала Debian
- Размер пространства подкачки по умолчанию в установщике Debian
- Ответ или решение
- Как загрузить Debian с использованием UEFI после переноса содержимого с диска BIOS на новый UEFI-диск
- Введение
- Подготовительный этап
- 1. Сбор необходимых инструментов
- Конвертация MBR в GPT
- 2. Загрузка с Live-носителя
- 3. Проверка состояния диска
- 4. Создание новой таблицы разделов GPT
- Создание основных разделов
- 5. Добавление корневого раздела
- 6. Монтирование корневого раздела
- 7. Изменение fstab
- 8. Выход и перезагрузка
- Настройка UEFI загрузки
- 9. Загрузка с rEFInd
- Создание EFI-раздела и Swap
- 10. Установка GParted
- 11. Создание разделов
- Обновление fstab
- 12. Обновление UUID в fstab
- Установка GRUB
- 13. Установка GRUB для 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 байт/сектор
Шаги перечислены ниже.
-
Преобразовать таблицу разделов 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
После выключения удалите внешний носитель.
-
Загрузка 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.
-
Откройте окно приложения Терминал.
Введите команду ниже, чтобы стать пользователем root.
sudo -s
-
Используйте приложение 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.
-
Смонтируйте раздел EFI System.
Введите команды, указанные ниже.
mkdir -p /boot/efi mount /dev/sda3 /boot/efi
-
Обновите файл
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
-
Установите Grub
Сначала Grub устанавливается для загрузки BIOS, затем для загрузки UEFI.
apt reinstall grub-efi grub-install /dev/sda update-grub exit
-
Загрузитесь в 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, улучшая производительность и возможности вашей системы.