Linux切換內核版本
Linux切換內核版本
有些軟件會對Linux內核的版本有要求。為此我們需要安裝并切換到指定的內核版本。本文以5.4.0-26-generic為例。
參考:LayerStack Tutorials - LayerStack - How to change the default Boot Kernel on Linux Cloud Servers
- 下載指定版本
sudo apt-get install -y linux-image-${_target_kernel_}
sudo apt-get install -y linux-headers-${_target_kernel_}
- 然后查看可用的內核版本
cat /boot/grub/grub.cfg | grep -E 'menuentry.+class.+class.+menuentry_id_option'
結果:
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-53b6e16f-1415-457e-85fe-9805a4c3e773' {
menuentry 'Ubuntu, with Linux 5.15.0-69-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-69-generic-advanced-53b6e16f-1415-457e-85fe-9805a4c3e773' {
menuentry 'Ubuntu, with Linux 5.15.0-69-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-69-generic-recovery-53b6e16f-1415-457e-85fe-9805a4c3e773' {
menuentry 'Ubuntu, with Linux 5.15.0-60-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-60-generic-advanced-53b6e16f-1415-457e-85fe-9805a4c3e773' {
menuentry 'Ubuntu, with Linux 5.15.0-60-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-60-generic-recovery-53b6e16f-1415-457e-85fe-9805a4c3e773' {
menuentry 'Ubuntu, with Linux 5.15.0-58-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-58-generic-advanced-53b6e16f-1415-457e-85fe-9805a4c3e773' {
menuentry 'Ubuntu, with Linux 5.15.0-58-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-58-generic-recovery-53b6e16f-1415-457e-85fe-9805a4c3e773' {
menuentry 'Ubuntu, with Linux 5.4.0-26-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-26-generic-advanced-53b6e16f-1415-457e-85fe-9805a4c3e773' {
menuentry 'Ubuntu, with Linux 5.4.0-26-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-26-generic-recovery-53b6e16f-1415-457e-85fe-9805a4c3e773' {
可以看到,里面一共包含兩個帶5.4.0-26-generic的版本。其中一個是recovery mode。我們不要選擇recovery mode,選擇正常的那個。
- 然后修改系統的默認內核版本
sudo vi /etc/default/grub
可以看到其中的
GRUB_DEFAULT="1> 4"
我們把1> x中的x改為我們想要的版本。x就是在上面那個大表中你想要的版本是第幾個。這里注意千萬不要弄錯!這里我具體地列出每個版本對應的編號
0 Ubuntu, with Linux 5.15.0-69-generic
1 Ubuntu, with Linux 5.15.0-69-generic (recovery mode)
2 Ubuntu, with Linux 5.15.0-60-generic
3 Ubuntu, with Linux 5.15.0-60-generic (recovery mode)
4 Ubuntu, with Linux 5.15.0-58-generic
5 Ubuntu, with Linux 5.15.0-58-generic (recovery mode)
6 Ubuntu, with Linux 5.4.0-26-generic
7 Ubuntu, with Linux 5.4.0-26-generic (recovery mode)
既然我想要的版本是5.4.0,那么這里就應該改成
GRUB_DEFAULT="1> 6"
- 最后,更新配置并重啟
sudo update-grub
sudo reboot
如果配置錯了怎么辦?
很不巧,我在配置默認內核版本的時候犯傻了。我把x改成了5,導致系統以一個recovery mode重啟了。
由于我使用的是遠程服務器,而recovery mode中并沒有ssh服務,導致重啟之后我就再也無法從遠程訪問服務器了。
于是沒辦法只能拜托師兄去機房手動重啟服務器。我不知道具體的過程,但應該與grub2 - How can I boot with an older kernel version? - Ask Ubuntu差不多。
大致就是重啟的時候,按住shift鍵,進入grub界面,在里面手動選擇想要進入的內核版本即可。
但是手動啟動后,默認的內核版本還是錯的,此時仍然需要執行上面的流程,將默認版本改對,再次重啟。
| 歡迎來原網站坐坐! >原文鏈接<

浙公網安備 33010602011771號