Как я могу проверить, требуется ли перезагрузка в Arch Linux?

Как сказал Фростшуц, добавление live-media=/dev/mapper/Fedora-root findiso=ISO/kali-linux-2019.1a-amd64.isoк параметрам строки команды ядра -работало. Так выглядит новый пункт меню, который работает

menuentry "Kali Live ISO - findiso" --class gnu-linux {
  insmod lvm
  insmod ext2
  set root="lvm/Fedora-root"
  search --no-floppy --fs-uuid --set=root --hint=${root} 29e2f518-5fad-49c9-90ef-966b0c033c5e
  set isofile="/ISO/kali-linux-2019.1a-amd64.iso"
  loopback loop $isofile
  linux (loop)/live/vmlinuz boot=live live-media=/dev/mapper/Fedora-root findiso=ISO/kali-linux-2019.1a-amd64.iso noconfig=sudo username=root hostname=kali
  initrd (loop)/live/initrd.img
}

Оказывается, kali initramfs не поддерживает параметр iso-scan/filename=.

5
23.01.2021, 23:46
3 ответа

Я использую этот сценарий, чтобы проверить, соответствует ли загрузочное ядро ​​текущему ядру и использует ли процесс какие-либо старые библиотеки.

#!/bin/bash

get_boot_kernel() {
    local get_version=0
    for field in $(file /boot/vmlinuz*); do
        if [[ $get_version -eq 1 ]]; then
            echo $field
            return
        elif [[ $field == version ]]; then
            # the next field contains the version
            get_version=1
        fi
    done
}

rc=1

libs=$(lsof -n +c 0 2> /dev/null | grep 'DEL.*lib' | awk '1 { print $1 ": " $NF }' | sort -u)
if [[ -n $libs ]]; then
    cat <<< $libs
    echo "# LIBS: reboot required"
    rc=0
fi

active_kernel=$(uname -r)
current_kernel=$(get_boot_kernel)
if [[ $active_kernel != $current_kernel ]]; then
    echo "$active_kernel < $current_kernel"
    echo "# KERNEL: reboot required"
    rc=0
fi
exit $rc

Пример вывода:

Xorg: /usr/lib/libedit.so.0.0.63
Xorg: /usr/lib/libgssapi_krb5.so.2.2
Xorg: /usr/lib/libk5crypto.so.3.1
Xorg: /usr/lib/libkrb5.so.3.3
Xorg: /usr/lib/libkrb5support.so.0.1
Xorg: /usr/lib/libzstd.so.1.4.5
# LIBS: reboot required
5.10.8-arch1-1 < 5.10.10-arch1-1
# KERNEL: reboot required

Если у вас есть процессы, использующие только старые библиотеки, вы можете перезапустить процессы вместо перезагрузки.

3
18.03.2021, 22:35

Я пользуюсь Arch много лет и не знаю эквивалента. Я не использую его ни в каких производственных системах, поэтому обычно жду перезагрузки, пока не появится ошибка об отсутствующей библиотеке. Затем я также сталкиваюсь с такими ситуациями, как когда обновляется KDE/QT, из-за чего все мои графические приложения начинают выдавать странные ошибки, но сама ОС не требует перезагрузки, мне просто нужно перезапустить WM/DE.

1
18.03.2021, 22:35
#!/usr/bin/bash

s1=$(pacman -Q linux | sed 's/linux //')
s2=$(uname -r | sed 's/-ARCH//')

if [ "$s1" == "$s2" ]; then
  echo OK
else
  echo REBOOT
fi

Кажется, работает. Источник:bbs.archlinux.org/viewtopic.php?id=173508

2
18.03.2021, 22:35

Теги

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