Ubuntu 的核心公升級,切換以及刪除

2021-09-13 16:22:15 字數 4088 閱讀 7086

最近公司新到了幾台franka emika 的七軸機械臂panda,趕緊抓住機會搗鼓一下,畢竟是ros中moveit!教程的官方機械臂。官方的desk程式設計操作當然沒有問題,所以決定使用fci(franka control inte***ce),體驗下moveit!。fci是啥我也就不說了,主要是為了使用fci,官方教程要求更新ubuntu核心,使用帶rt字尾的實時核心來保證與機械臂通訊的實時性,這就涉及核心的公升級與切換等問題,下面是搗鼓核心的一些小總結。

在終端中執行如下命令可以檢視當前核心版本

uname -r
ubuntu核心**:

在**選擇對應的核心版本,fci教程中是以v4.14.12為例,那這邊也就將v4.14.12作為目標版本,

wget v4.14.12/linux-headers-4.14.12-041412_4.14.12-041412.201801051649_all.deb

wget v4.14.12/linux-headers-4.14.12-041412-generic_4.14.12-041412.201801051649_amd64.deb

wget v4.14.12/linux-image-4.14.12-041412-generic_4.14.12-041412.201801051649_amd64.deb

sudo dpkg -i *.deb
安裝成功後重啟,缺省會呼叫版本最高的核心使用,如果原始核心版本高於新安裝核心版本,那麼重啟系統後檢視核心版本會發現,仍然使用的是原始核心(及高版本),此時需要手動切換核心。

第一步:查詢已安裝的核心和核心的序號

仔細觀察圖中,menuentry底下還有submenu,submenu底下就包含了 帶有縮排的 menuentry。以下是計數規則:

例如,若命令顯示結果如下: 

gaitech@franka:~$ grep menuentry /boot/grub/grub.cfg

if [ x"$" = xy ]; then

menuentry_id_option="--id"

menuentry_id_option=""

export menuentry_id_option

menuentry 'ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-******-ef6d1105-4bb5-46a1-9ab5-a4a07860085c' " = xy ]; then

menuentry_id_option="--id"

menuentry_id_option=""

export menuentry_id_option

0---menuentry 'ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-******-ef6d1105-4bb5-46a1-9ab5-a4a07860085c' {

1---submenu 'advanced options for ubuntu' $menuentry_id_option 'gnulinux-advanced-ef6d1105-4bb5-46a1-9ab5-a4a07860085c' {

0---menuentry 'ubuntu, with linux 4.14.12-041412-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.14.12-041412-generic-advanced-ef6d1105-4bb5-46a1-9ab5-a4a07860085c' {

1---menuentry 'ubuntu, with linux 4.14.12-041412-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.14.12-041412-generic-init-upstart-ef6d1105-4bb5-46a1-9ab5-a4a07860085c' {

2---menuentry 'ubuntu, with linux 4.14.12-041412-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.14.12-041412-generic-recovery-ef6d1105-4bb5-46a1-9ab5-a4a07860085c' {

3---menuentry 'ubuntu, with linux 4.14.12-rt10' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.14.12-rt10-advanced-ef6d1105-4bb5-46a1-9ab5-a4a07860085c' {

4---menuentry 'ubuntu, with linux 4.14.12-rt10 (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.14.12-rt10-init-upstart-ef6d1105-4bb5-46a1-9ab5-a4a07860085c' {

5---menuentry 'ubuntu, with linux 4.14.12-rt10 (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.14.12-rt10-recovery-ef6d1105-4bb5-46a1-9ab5-a4a07860085c' {

2---menuentry 'memory test (memtest86+)' {

3---menuentry 'memory test (memtest86+, serial console 115200)' {

根據自己需要啟動的核心版本來確定啟動序號。

第二步:修改grub檔案

sudo gedit /etc/default/grub
開啟檔案後修改grub_default的值(注意》之前的空格),並儲存

grub_default="1 >3"  

#"1 >3"這個表示啟動序號1中,子序號為3的啟動項,即'ubuntu, with linux 4.14.12-rt10'

#若無子序號,則只需填入序號即可

關於grub_default的值,有教程是寫menuentry後單引號裡的內容,但我嘗試後不成功,故推薦使用數字序號。

第三步:更新grub檔案,並重啟

sudo update-grub

sudo reboot

此時檢查核心版本即為目標版本,但此方法為修改預設啟動項,當然也可以在開機時進入grub介面(如自動跳過,可在開機時長按esc和shift鍵進入選項介面),選擇ubuntu高階模式,再選擇核心版本,這樣的話為當次啟動生效,下次啟動還是會以預設核心啟動。

我們可以使用以下命令刪除空閒核心(刪除當前版本重啟會使用低一級的已安裝核心,如果是最後乙個核心版本刪除之後重啟會進入bios介面)

sudo apt-get remove linux-image-4.4.0-75-generic
參考:

核心版本號 Ubuntu的核心公升級以及系統更新問題

本文總結ubuntu核心公升級時會出現的問題以及解決方法,持續更新 一 boot空間不足 一般來說安裝ubuntu時 boot分割槽多少都會分配200m的空間,一到更新就提示記憶體不足,可通過以下兩種方法釋放boot空間 第一種 清理boot空間,刪除舊核心 先了解boot分割槽使用情況 df h ...

Ubuntu 核心公升級

ubuntu 16.04使用者要如何公升級到最新的linux kernel 呢?下面我們以linux kernel 4.10為例說一下步驟。首先我們在公升級到最新核心前應該先了解下它的特性,我們應該做到盡可能的了解我們計算機。linux kernel 4.10新特性 1 對 gtx 900 系列顯示...

Ubuntu 核心公升級

ubuntu 16.04使用者要如何公升級到最新的linux kernel 呢?下面我們以linux kernel 4.10為例說一下步驟。首先我們在公升級到最新核心前應該先了解下它的特性,我們應該做到盡可能的了解我們計算機。linux kernel 4.10新特性 1 對 gtx 900 系列顯示...