編譯ubuntu核心

2021-09-29 07:14:51 字數 4880 閱讀 1331

看了《奔跑吧 linux 核心》的書,感覺記憶體管理這一部分後面的例子不錯,

就想手敲一遍體驗一下例子(自己對這方面感覺一直雲裡霧裡)

nasri@ubuntu:/usr/local$ apt-cache search linux-source

linux-source - linux kernel source with ubuntu patches

linux-source-3.13.0 - linux kernel source for version 3.13.0 with ubuntu patches

nasri@ubuntu:/usr/local$ apt-get install linux-source-3.13.0

e: could not open lock file /var/lib/dpkg/lock - open (13: permission denied)

e: unable to lock the administration directory (/var/lib/dpkg/), are you root?

nasri@ubuntu:/usr/local$ sudo apt-get install linux-source-3.13.0

[sudo] password for nasri:

reading package lists... done

building dependency tree

reading state information... done

suggested packages:

kernel-package libqt3-dev

the following new packages will be installed:

linux-source-3.13.0

0 upgraded, 1 newly installed, 0 to remove and 51 not upgraded.

need to get 97.5 mb of archives.

after this operation, 113 mb of additional disk space will be used.

.....

apt-cache search linux-source//獲取當前核心原始碼版本

sudo apt-get install linux-source-3.13.0//獲取核心原始碼

實際上在/user/src下面就有核心原始碼

我這裡是ubuntu系統

在/user/src下面有2份原始碼

nasri@ubuntu:/$ ls /usr/src/

linux-headers-4.4.0-142 linux-source-3.13.0

linux-headers-4.4.0-142-generic linux-source-3.13.0.tar.bz2

nasri@ubuntu:/$

linux-headers-4.4.0-142和linux-headers-4.4.0-142-generic

到底目前用的是哪個呢,用uname -a命令可以看下用的是generic的這個

nasri@ubuntu:/usr/src/linux-headers-4.4.0-142$ uname -a

linux ubuntu 4.4.0-142-generic #168~14.04.1-ubuntu smp sat jan 19 11:26:28 utc 2019 x86_64 x86_64 x86_64 gnu/linux

nasri@ubuntu:/usr/src/linux-headers-4.4.0-142$

不知道啊。。。我現在在論壇問問

我把/user/src下的壓縮包copy到我本地的work目錄下

cp /usr/src/linux-source-3.13.0_nasri/linux-source-3.13.0.tar.bz2 .
解壓:

tar -xjvf  linux-source-3.13.0.tar.bz2

切換到這個目錄下:

nasri@ubuntu:~/work/linux-source-3.13.0$
等下編譯核心,安裝必要的軟體:

sudo apt-get install libncurses5-dev libssl-dev 

sudo apt-get install build-essential openssl

sudo apt-get install zlibc minizip

sudo apt-get install libidn11-dev libidn11

這是我再網上找的編譯4.16的核心需要的軟體,這裡我試了下,找不到minizip,所以暫時不裝

等編譯的是時候出問題再解決

依次執行以下三條命令:

sudo make mrproper 

sudo make clean

sudo make menuconfig

其中mrproper為清除編譯過程中產生的所有中間檔案,clean為清除上一次產生的編譯中間檔案,在menuconfig**現選擇的圖形化介面後,直接按右方向鍵選擇到exit退出,退出提示中選擇儲存,實現核心的預設配置

執行命令:

sudo make –j8
編譯核心開始,慢慢等待吧。

sudo make zimage

這個應該沒什麼用

make modules

make modules_install

make install

還要修改啟動的檔案

nasri@ubuntu:~$ sudo vim /etc/default/grub 

[sudo] password for nasri:

nasri@ubuntu:~$

nasri@ubuntu:~$

nasri@ubuntu:~$ sudo update-grub

generating grub configuration file ...

found linux image: /boot/vmlinuz-4.4.0-142-generic

found initrd image: /boot/initrd.img-4.4.0-142-generic

found linux image: /boot/vmlinuz-3.13.11-ckt39

found initrd image: /boot/initrd.img-3.13.11-ckt39

found linux image: /boot/vmlinuz-3.13.11-ckt39.old

found initrd image: /boot/initrd.img-3.13.11-ckt39

found memtest86+ image: /boot/memtest86+.elf

found memtest86+ image: /boot/memtest86+.bin

done

nasri@ubuntu:~$ sudo reboot

# if you change this file, run 'update-grub' afterwards to update

# /boot/grub/grub.cfg.

# for full documentation of the options in this file, see:

# info -f grub -n '****** configuration'

grub_default=1

#grub_hidden_timeout=0

grub_hidden_timeout_quiet=true

grub_timeout=10

grub_distributor=`lsb_release -i -s 2> /dev/null || echo debian`

grub_cmdline_linux_default="quiet"

grub_cmdline_linux="find_preseed=/preseed.cfg auto noprompt priority=critical locale=en_us"

這裡把第二行去掉,重啟之後就選第二個之後可以選擇需要用的核心版本

這裡的1 是1級選單,3是二級選單,「1(空格) > (空格) 3「

grub_default="1 > 3"

#grub_hidden_timeout=0

grub_hidden_timeout_quiet=true

grub_timeout=10

grub_distributor=`lsb_release -i -s 2> /dev/null || echo debian`

grub_cmdline_linux_default="quiet"

grub_cmdline_linux="find_preseed=/preseed.cfg auto noprompt priority=critical locale=en_us"

這裡有講解這個 1 > 2二級選單的介紹 

重啟試試看

重啟之後成功替換了原有的核心

用unmae -a看核心已經是3.13的核心了

然後再把grub_timeout換為0

或者把grub_hidden_timeout=0注釋取消掉

好了,自己編譯的核心就把原有的核心替換掉了。

ubuntu 編譯核心

第一步 安裝必要的工具 首先要安裝必要的包。包有 libncurses5 dev menuconfig 需要的 和 essential sudo apt get install build essential kernel package 核心打包deb的可以不用裝手動安裝 sudo apt get...

Ubuntu下編譯核心

cd wget 安裝有關編譯程式。安裝make gcc,make kpkg,執行menuconfig等等和編譯核心相關的工具。安裝不了,請檢查 etc apt sources.list 檔案。有關命令 sudo apt get install build essential kernel packa...

ubuntu 下編譯核心

2.為寫qemu的watchdog驅動練手。有朋友問make的 watchdog驅動 需要什麼準備,所以寫這個blog。ubuntu 12.04.4 1.make 時間 大於1個小時 1.安裝編譯核心所需要的軟體 apt get install build essential kernel pack...