
kexec
Fedora Linux에서 최신 설치된 커널로 자동으로 빠르게 재부팅하는 방법은 무엇입니까 ?
kexec --load
명령줄 사용법은 다소 장황합니다. 다음을 제공해야 합니다.
- 커널 이미지(예
/boot/vmlinuz-3.18.8-201.fc21.x86_64
: --initrd=/boot/initramfs-3.18.8-201.fc21.x86_64.img
와 같은 해당 initrd 파일--append="root=/dev/sda1 ro rhgb quiet LANG=en_US.UTF-8"
와 같은 커널 명령줄 인수/proc/cmdline
.
일반적으로 여러 커널이 설치되어 있기 때문에 탭 완성도 그다지 도움이 되지 않기 때문에 모두 입력하는 것은 지루합니다.
UEFI 시스템과 Windows 8 듀얼 부팅 노트북을 사용하면 기본이 아닌 시스템을 선택하기 위해 재부팅을 중단하는 적절한 순간을 놓치기 쉽습니다. 이를 놓치면 Windows 8이 시작될 때까지 기다려야 합니다. 자동으로 로그인하고 재부팅한 후 다시 시도해야 할 수도 있습니다.
답변1
지금처럼 현재 명령줄 인수를 재사용하는 것은 좋은 생각이 아니라고 생각합니다. GRUB가 설정되어 있다고 가정하고 대신 GRUB 구성을 확인하는 것이 좋습니다. 이 grubby
명령을 사용하면 필요한 정보를 얻을 수 있습니다. 의 정확한 출력 형식은 grubby --info
약간 일관성이 없지만 사용하기에는 충분합니다.
# cat /usr/local/bin/kexec-load
#!/bin/sh
set -eu
index=$(grubby --default-index)
grubby --info="$index" | {
IFS==
while read field value
do
case $value in
\"*\")
eval "$field=$value" ;;
*)
eval "$field=\$value" ;;
esac
done
unset IFS
set -x
kexec -l --initrd="$initrd" --append="root=$root $args" -- "$kernel"
}
이는 사용 가능한 최신 커널을 사용하지 않고 기본적으로 사용할 커널로 Grub에 구성된 커널을 사용합니다. 최신 설치된 커널을 확인하는 코드가 이미 있으며, 대신 사용하려는 경우 쉽게 --info="$index"
변경할 수 있습니다.--info=$latestkernel
답변2
저는 /usr/local/bin/kexec-load-latest
가장 최근의 커널을 자동으로 선택하고 이를 kexec
.
#!/bin/bash
set -x
NEWEST_KERNEL_VERSION="$(
rpm --query --queryformat='%{VERSION}-%{RELEASE}.%{ARCH}\n' kernel \
| sort --version-sort --reverse \
| head --lines=1
)"
kexec --load --append="`cat /proc/cmdline`" \
--initrd="/boot/initramfs-$NEWEST_KERNEL_VERSION.img" \
"/boot/vmlinuz-$NEWEST_KERNEL_VERSION"
chmod a+x /usr/local/bin/kexec-load-latest
간단하게 다음을 수행할 수 있도록 실행 파일로 설정합니다 .
- 달리다
sudo /usr/local/bin/kexec-load-latest
, - 그런 다음
sudo reboot
내 데스크탑 환경의 재부팅 기능을 사용하십시오.
rpm
Fedora 21에서 테스트되었습니다. 이는 RHEL 또는 CentOS와 같은 다른 최신 기반 배포판에서도 작동합니다 .