Как заменить grub на загрузчик "systemd-boot" в ubuntu 20.04?

ubuntu@ubuntu:~$ lsblk -po NAME,SIZE,TYPE,FSTYPE,PARTLABEL
NAME          SIZE TYPE FSTYPE   PARTLABEL
/dev/loop0    1.9G loop squashfs 
/dev/loop1   27.1M loop squashfs 
/dev/loop2     55M loop squashfs 
/dev/loop3  240.8M loop squashfs 
/dev/loop4   62.1M loop squashfs 
/dev/loop5   49.8M loop squashfs 
/dev/sda    465.8G disk          
├─/dev/sda1   292M part vfat     CLR_BOOT
├─/dev/sda2   512M part swap     CLR_SWAP
├─/dev/sda3 108.6G part ext4     CLR_ROOT
├─/dev/sda4    16M part          Microsoft reserved partition
├─/dev/sda5    79G part ntfs     Basic data partition
└─/dev/sda6 277.4G part ntfs     Basic data partition
/dev/sdb     30.2G disk iso9660  
├─/dev/sdb1   2.5G part iso9660  
├─/dev/sdb2   3.9M part vfat     
└─/dev/sdb3  27.7G part ext4     
/dev/sr0     1024M rom           
ubuntu@ubuntu:~$ 
0
задан 11 April 2020 в 09:30

1 ответ

после подписки на https://blobfolio.com/2018/06/replace-grub2-with-systemd-boot-on-ubuntu-18-04/

# Everything in this tutorial should be done as root:
sudo -i

# Now hop on into the EFI partition root.
cd /boot/efi

# Configuration files will go here:
mkdir -p loader/entries

# And kernels will go here:
mkdir ubuntu

, выполняющейся после сценарий #! / bin / bash # # Это простой обработчик ядра для заполнения записей systemd-boot # всякий раз, когда ядра добавляются или удаляются. #

# The UUID of your disk.
UUID="CHANGEME"

# The LUKS volume slug you want to use, which will result in the
# partition being mounted to /dev/mapper/CHANGEME.
VOLUME="CHANGEME"

# Any rootflags you wish to set.
ROOTFLAGS="CHANGEME"



# Our kernels.
KERNELS=()
FIND="find /boot -maxdepth 1 -name 'vmlinuz-*' -type f -print0 | sort -rz"
while IFS= read -r -u3 -d $'\0' LINE; do
    KERNEL=$(basename "${LINE}")
    KERNELS+=("${KERNEL:8}")
done 3< <(eval "${FIND}")

# There has to be at least one kernel.
if [ ${#KERNELS[@]} -lt 1 ]; then
    echo -e "\e[2msystemd-boot\e[0m \e[1;31mNo kernels found.\e[0m"
    exit 1
fi



# Perform a nuclear clean to ensure everything is always in perfect
# sync.
rm /boot/efi/loader/entries/*.conf
rm -rf /boot/efi/ubuntu
mkdir /boot/efi/ubuntu



# Copy the latest kernel files to a consistent place so we can keep
# using the same loader configuration.
LATEST="${KERNELS[@]:0:1}"
echo -e "\e[2msystemd-boot\e[0m \e[1;32m${LATEST}\e[0m"
for FILE in config initrd.img System.map vmlinuz; do
    cp "/boot/${FILE}-${LATEST}" "/boot/efi/ubuntu/${FILE}"
    cat << EOF > /boot/efi/loader/entries/ubuntu.conf
title   Ubuntu GNOME
linux   /ubuntu/vmlinuz
initrd  /ubuntu/initrd.img
options cryptdevice=UUID=${UUID}:${VOLUME} root=/dev/mapper/${VOLUME} ro rootflags=${ROOTFLAGS}
EOF
done



# Copy any legacy kernels over too, but maintain their version-based
# names to avoid collisions.
if [ ${#KERNELS[@]} -gt 1 ]; then
    LEGACY=("${KERNELS[@]:1}")
    for VERSION in "${LEGACY[@]}"; do
        echo -e "\e[2msystemd-boot\e[0m \e[1;32m${VERSION}\e[0m"
        for FILE in config initrd.img System.map vmlinuz; do
            cp "/boot/${FILE}-${VERSION}" "/boot/efi/ubuntu/${FILE}-${VERSION}"
            cat << EOF > /boot/efi/loader/entries/ubuntu-${VERSION}.conf
title   Ubuntu GNOME ${VERSION}
linux   /ubuntu/vmlinuz-${VERSION}
initrd  /ubuntu/initrd.img-${VERSION}
options cryptdevice=UUID=${UUID}:${VOLUME} root=/dev/mapper/${VOLUME} ro rootflags=${ROOTFLAGS}
EOF
        done
    done
fi



# Success!
exit 0

ubuntu.conf

title   Ubuntu GNOME
linux   /ubuntu/vmlinuz
initrd  /ubuntu/initrd.img
options root=UUID=81c4bc1c-1a7e-4822-acae-220bbe572240 rw

, чтобы увидеть UUID

ubuntu@ubuntu:~$ lsblk -f
NAME   FSTYPE   LABEL                  UUID                                 FSAVAIL FSUSE% MOUNTPOINT
loop0  squashfs                                                                   0   100% /rofs
loop1  squashfs                                                                   0   100% /snap/snapd/7264
loop2  squashfs                                                                   0   100% /snap/core18/1705
loop3  squashfs                                                                   0   100% /snap/gnome-3-34-1804/24
loop4  squashfs                                                                   0   100% /snap/gtk-common-themes/1
loop5  squashfs                                                                   0   100% /snap/snap-store/433
sda                                                                                        
├─sda1 vfat                            1A74-A270                             113.2M    61% /media/ubuntu/1A74-A270
├─sda2 swap                            10842320-1286-413f-bf08-3e0ca76bcf2f                [SWAP]
├─sda3 ext4                            81c4bc1c-1a7e-4822-acae-220bbe572240   87.6G    13% /media/ubuntu/81c4bc1c-1a
├─sda4                                                                                     
├─sda5 ntfs                            80D47B63D47B59FC                                    
└─sda6 ntfs     router_data            4416017316016770                                    
sdb    iso9660  Ubuntu 20.04 LTS amd64 2020-04-23-07-51-42-00                              
├─sdb1 iso9660  Ubuntu 20.04 LTS amd64 2020-04-23-07-51-42-00                     0   100% /cdrom
├─sdb2 vfat                            1AC3-20ED                                           
└─sdb3 ext4     writable               b8474e17-164a-4fb3-94ff-d4e68f2e1548   25.7G     0% /var/crash
sr0

Фактически Установить systemd-boot Для большинства людей установка состоит из одной команды:

Опять же, это должно перейти в раздел EFI:

bootctl install --path=/boot/efi

Чтобы проверить загрузчики, установленные в системе - и их порядок - выполните:

efibootmgr

reboot

как только все в порядке, вы можете удалите наличие grub в вашей системе

# Purge the packages.
apt-get purge grub*

# Purge any obsolete dependencies.
apt-get autoremove --purge
1
ответ дан 26 April 2020 в 03:42

Другие вопросы по тегам:

Похожие вопросы: