You need to swich from bios to efi? Read on.
DISCLAIMER: you need to be familiar with these commands and make sure you have backup because you may destroy your linux if you do not pay attention.
1. List the existing partiton
# fdisk -l /dev/sda
Output:
root@vboxbox:~# fdisk -l /dev/sda
Disk /dev/sda: 14.7 GiB, 15724707840 bytes, 30712320 sectors
Disk model: Kingston DataTra
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xfcf559cd
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 499711 497664 243M 83 Linux
/dev/sda2 501758 30711807 30210050 14.4G 5 Extended
/dev/sda5 501760 30711807 30210048 14.4G 8e Linux LVM
2. Must convert your partition table from MBR to GPT
The commant gdisk confirms you have MBR:root@vboxbox:~# gdisk -l /dev/sda
GPT fdisk (gdisk) version 1.0.3
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory.
***************************************************************
Disk /dev/sda: 30712320 sectors, 14.6 GiB
Model: Kingston DataTra
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): A3E95EC8-299A-4799-B553-CF4DE54438FB
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 30712286
Partitions will be aligned on 2048-sector boundaries
Total free space is 4541 sectors (2.2 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 499711 243.0 MiB 8300 Linux filesystem
5 501760 30711807 14.4 GiB 8E00 Linux LVM
Transform the partition table from MBR to GPT:
1. run gdisk /dev/sda
2. type r
3. type f (choose Y)
4. type w (choose Y)
root@vboxbox:~# gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.3
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by
typing 'q' if you don't want to convert your MBR partitions
to GPT format!
***************************************************************
Command (? for help): r
Recovery/transformation command (? for help): f
Warning! This will destroy the currently defined partitions! Proceed? (Y/N): y
Recovery/transformation command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sda.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
Now, if you run again gdisk -l, you should have GPT present:
root@vboxbox:~# gdisk -l /dev/sda
GPT fdisk (gdisk) version 1.0.3
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 30712320 sectors, 14.6 GiB
Model: Kingston DataTra
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 482F1B37-C2BB-470E-A8E6-16F9AE60F9D9
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 30712286
Partitions will be aligned on 2048-sector boundaries
Total free space is 4541 sectors (2.2 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 499711 243.0 MiB 8300 Linux filesystem
5 501760 30711807 14.4 GiB 8E00 Linux LVM
Shrink /boot filesystem
# umount /boot; e2fsck -f /dev/sda1; resize2fs /dev/sda1 200M
root@vboxbox:~# resize2fs /dev/sda1 200M
resize2fs 1.44.5 (15-Dec-2018)
Filesystem at /dev/sda1 is mounted on /boot; on-line resizing required
resize2fs: On-line shrinking not supported
root@vboxbox:~# umount /boot
root@vboxbox:~# resize2fs /dev/sda1 200M
resize2fs 1.44.5 (15-Dec-2018)
Please run 'e2fsck -f /dev/sda1' first.
root@vboxbox:~# e2fsck -f /dev/sda1
e2fsck 1.44.5 (15-Dec-2018)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda1: 343/62248 files (24.2% non-contiguous), 103564/248832 blocks
root@vboxbox:~# resize2fs /dev/sda1 200M
resize2fs 1.44.5 (15-Dec-2018)
Resizing the filesystem on /dev/sda1 to 204800 (1k) blocks.
The filesystem on /dev/sda1 is now 204800 (1k) blocks long.
root@vboxbox:~# mount /boot
root@vboxbox:~# df -h /boot
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 194M 93M 91M 51% /boot
Shrink boot partition and create boot efi partition (that will become /boot/efi)
NOTE: here you may wreck your boot partition so if you want to be on a safe side, you can save it's content. If you skip this, no worries: everything in boot can be recreated and is presented in this tutorial. Choose whatever method you want (fdisk, cfdisk, etc.). By default, debian installation creates /boot partition with 244M in size. So in order to have an efi partition next to the existing boot, we need to reduce /boot to 200M and create another efi partition 44M in size At the end you should have:root@vboxbox:~# fdisk -l /dev/sda
Disk /dev/sda: 14.7 GiB, 15724707840 bytes, 30712320 sectors
Disk model: Kingston DataTra
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 482F1B37-C2BB-470E-A8E6-16F9AE60F9D9
Device Start End Sectors Size Type
/dev/sda1 2048 411647 409600 200M Linux filesystem
/dev/sda2 411648 501759 90112 44M EFI System
/dev/sda5 501760 30711807 30210048 14.4G Linux LVM
If the newly created partition is not listed with "EFI System" type, you can modify it with gdisk:
1. run gdisk /dev/sda
2. type t
3. choose partition number 2
4. choose code EF00
5 type w (choose Y)
root@vboxbox:~# gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.3
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): t
Partition number (1-5): 2
Current type is 'EFI System'
Hex code or GUID (L to show codes, Enter = 8300): EF00
Changed type of partition to 'EFI System'
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sda.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
Format efi partition as vfat
# mkfs.vfat /dev/sda2
root@vboxbox:~# mkfs.vfat /dev/sda2
mkfs.fat 4.1 (2017-01-24)
If you get the following error (or any other error), do this after reboot.
root@vboxbox:~# mkfs.vfat /dev/sda2
mkfs.fat 4.1 (2017-01-24)
mkfs.vfat: Attempting to create a too large filesystem
Did I say reboot? Yes, you need to do that in order to enable UEFI in BIOS.
Boot in rescue mode with linux installation disk and mount the root partition
1. Advanced options → Rescue mode 2. Configure keyboard, hostname, domain and network. 3. Chose device to use as root system, e.g. /dev/rootvg/root 4. Mount separate /boot partition? -> YES 5. Choose "Execute a shell in /dev/rootvg/root.Update /etc/fstab to reflect the modifications above
In our example, sda1 is /boot and sda2 is new efi boot (which will be /boot/efi) List partition UUIDs:root@debian:/# ls -la /dev/disk/by-uuid/ | grep sd
lrwxrwxrwx 1 root root 10 Nov 7 12:16 0a277628-c287-4d28-81a0-c6b6ab590479 -> ../../sda1
lrwxrwxrwx 1 root root 10 Nov 7 12:16 FF09-EF8F -> ../../sda2
Replace UUID of /boot for sda1 and create another entry with the UUID of sda2. At the end, you should have the following for boot:
root@debian:/# grep boot /etc/fstab
UUID=0a277628-c287-4d28-81a0-c6b6ab590479 /boot ext2 defaults 0 2
UUID=FF09-EF8F /boot/efi vfat defaults 0 2
Create /boot/efi mount point and mount it
# mkdir -p /boot/efi
# mount -a
root@debian:/# mount | grep boot
/dev/sda1 on /boot type ext2 (rw,relatime)
/dev/sda2 on /boot/efi type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro)
If you have created correctly the entries in /etc/fstab, you should have /boot/efi mounted now. If not, you will need to mount it manually. Do not forget to correct /etc/fstab.
mount -t vfat /dev/sda2 /boot/efi
Install grub-efi (will uninstall grub-pc)
# apt install grub-efi
root@debian:/# apt install grub-efi
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following package was automatically installed and is no longer required:
grub-pc-bin
Use 'apt autoremove' to remove it.
The following additional packages will be installed:
efibootmgr grub-efi-amd64 grub-efi-amd64-bin grub-efi-amd64-signed mokutil shim-helpers-amd64-signed shim-signed shim-signed-common
shim-unsigned
Recommended packages:
secureboot-db
The following packages will be REMOVED:
grub-pc
The following NEW packages will be installed:
efibootmgr grub-efi grub-efi-amd64 grub-efi-amd64-bin grub-efi-amd64-signed mokutil shim-helpers-amd64-signed shim-signed
shim-signed-common shim-unsigned
0 upgraded, 10 newly installed, 1 to remove and 0 not upgraded.
Need to get 2,557 kB of archives.
After this operation, 20.8 MB of additional disk space will be used.
Do you want to continue? [Y/n]
[...]
Install grub on disk
grub-install /dev/sda
root@debian:/# grub-install /dev/sda
Installing for x86_64-efi platform.
Installation finished. No error reported.
NOTE: if you forgot to switch to EFI in BIOS, you can still continue but you will have to execute the above command as follows, else you will encounter errors.
root@debian:/# grub-install --target x86_64-efi /dev/sda
Installing for x86_64-efi platform.
grub-install: warning: EFI variables are not supported on this system..
Installation finished. No error reported.
[h3]Now /boot/efi should be populated and you should have the following file present:[/h3
# file /boot/efi/EFI/debian/grubx64.efi
Also, debian entry should be listed when running the following command
# efibootmgr
root@vboxbox:~# efibootmgr
BootCurrent: 0005
BootOrder: 0002,0001,0003,0000,0005,0004
Boot0000* Kingston DataTraveler SE9 Media
Boot0000$ASN
Boot0001* Virtual DVD-ROM [1]
Boot0001$ASN
Boot0002* EFI DVD/CDROM
Boot0002$ASN
Boot0003* EFI Hard Drive
Boot0003$ASN
Boot0004* EFI Internal Shell
Boot0004$ASN
Boot0005* debian
Boot0005$ASN
root@vboxbox:~#
Reboot, change boot mode to EFI and see the magic.
- Log in to post comments
- 10789 views