日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

编译linux源码报错,记录一次Linux内核源码编译实验

發(fā)布時(shí)間:2023/12/8 linux 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编译linux源码报错,记录一次Linux内核源码编译实验 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

記錄一次Linux內(nèi)核源碼編譯實(shí)驗(yàn)

文章目錄

記錄一次Linux內(nèi)核源碼編譯實(shí)驗(yàn)

0. 實(shí)驗(yàn)環(huán)境

1. 選擇、下載內(nèi)核源碼

2. 安裝必要的依賴軟件以及性能要求

3. 解壓、配置和編譯內(nèi)核源碼

3.1 準(zhǔn)備工作

3.2 編譯

3.3 安裝模塊

4. 配置引導(dǎo)

5. 問(wèn)題記錄

6. 記錄一些其他問(wèn)題的解決方法以及一些工具的使用

6.1 軟件更新或安裝時(shí)`dpkg`報(bào)錯(cuò)

6.2 ssh中scp的使用

0. 實(shí)驗(yàn)環(huán)境

Ubuntu-16.04

內(nèi)核源碼-4.15.0

本次試驗(yàn)我使用的是之前安裝后大半年沒(méi)開機(jī)的Ubuntu-16.04,很多軟件需要更新、軟件源也要更新。這個(gè)過(guò)程中也遇到不少問(wèn)題,比較重要的一個(gè)是更新mysql時(shí)dpkg報(bào)錯(cuò),這個(gè)問(wèn)題似乎是有一個(gè)通用的解決辦法,記錄在文末供后續(xù)參考。

對(duì)硬盤容量的要求

編譯較新版本的內(nèi)核源碼會(huì)消耗大量的硬盤空間,以我編譯linux-source-4.15.0為例,第一次編譯時(shí)虛擬機(jī)硬盤配置是40G,結(jié)果編譯快要結(jié)束時(shí)出現(xiàn)硬盤空間不足的錯(cuò)誤。后來(lái)把虛擬硬盤擴(kuò)容到80G編譯成功。這其中固然有我先前占用一部分空間的原因,但是為確保一次成功,請(qǐng)保證至少50-60G的硬盤空間,而且編譯越新版本的源碼應(yīng)該對(duì)硬盤容量要求越高。

1. 選擇、下載內(nèi)核源碼

使用命令uname -a查看本機(jī)內(nèi)核版本

使用命令apt-cache search linux-source查詢當(dāng)前軟件源可供下載的Linux源碼版本

本次試驗(yàn)我選擇的是linux-source-4.15.0,下載(默認(rèn)到/usr/src目錄下):

sudo apt-get install linux-source-4.15.0

2. 安裝必要的依賴軟件以及性能要求

依賴軟件

老師所提供的依賴軟件如下,依次安裝即可。中間可能會(huì)碰到dpkg的問(wèn)題,可移步文末查看解決方法。

實(shí)驗(yàn)過(guò)程中我是把老師給的依賴軟件包以及別人編譯內(nèi)核時(shí)所用的依賴包全部安裝了一遍,肯定有很多冗余。

sudo apt-get install libncurses5-dev libssl-dev

sudo apt-get install build-essential openssl

sudo apt-get install pkg-config

sudo apt-get install libc6-dev bison flex

sudo apt-get install libelf-dev zlibc minizip libidn11-dev libidn11

sudo apt-get install cpp cvs fakeroot g++ gcc

sudo apt-get install gettext gnome-user-guide

sudo apt-get install intltool-debian kernel-package libgcc1

sudo apt-get install patch po-debconf xz-utils

也有安裝這些依賴包編譯成功的:

sudo apt-get install flex bison libncurses-dev libelf-dev libssl-dev

性能要求 – 請(qǐng)依照實(shí)驗(yàn)環(huán)境部分所述情況,自行為虛擬機(jī)配置足夠大的虛擬硬盤。

3. 解壓、配置和編譯內(nèi)核源碼

3.1 準(zhǔn)備工作

進(jìn)入/usr/src目錄下解壓對(duì)應(yīng)的Linux源碼壓縮包。

這里請(qǐng)注意通過(guò)terminal下載的Linux源碼壓縮包結(jié)構(gòu)似乎和官網(wǎng)下載到的不太一樣。第一次解壓后發(fā)現(xiàn)解壓出的目錄下還有一個(gè)源碼壓縮包,將其解壓后才是真正的源碼目錄。

sudo tar -xavf linux-source-4.15.0.tar.bz2

如圖這是源碼目錄的上一級(jí)目錄:

這里才是真正的源碼目錄:

刪除以前編譯的中間文件

sudo make mrproper

這個(gè)命令以及sudo make clean是用來(lái)清除前幾次編譯所產(chǎn)生的中間文件,如果編譯出錯(cuò)后你認(rèn)為需要重新進(jìn)行整個(gè)編譯過(guò)程,可以使用這兩個(gè)命令。

拷貝內(nèi)核配置

這里參考用戶木又啊的文章Ubuntu下編譯內(nèi)核所述方法 – 將本機(jī)內(nèi)核配置復(fù)制到要編譯的新內(nèi)核。具體操作為:

sudo cp /boot/config-4.15.0-70-generic ./.config

這個(gè)config-[version]-generic文件就是本機(jī)內(nèi)核配置文件,注意這里version當(dāng)然應(yīng)該是當(dāng)前內(nèi)核版本而不是要編譯的內(nèi)核版本,即:使用命令uname -a查看到的內(nèi)核版本。

使用菜單界面配置內(nèi)核選項(xiàng)

sudo make menuconfig

執(zhí)行此命令后會(huì)彈出圖形化配置菜單。有眾多配置選項(xiàng),實(shí)驗(yàn)內(nèi)容是在內(nèi)核版本信息中加入自己姓名。編輯完成后選擇exit會(huì)提示保存。

如果依賴軟件沒(méi)有裝全,執(zhí)行sudo make menuconfig命令時(shí)可能會(huì)報(bào)錯(cuò)提示缺少依賴,我實(shí)驗(yàn)過(guò)程中并沒(méi)有出現(xiàn)這個(gè)錯(cuò)誤。

3.2 編譯

編譯過(guò)程:

sudo make [-jn]

這是編譯過(guò)程中最耗時(shí)、耗內(nèi)存的過(guò)程,可以通過(guò)參數(shù)-jn設(shè)置進(jìn)行編譯的CPU內(nèi)核數(shù)量來(lái)提高編譯速度。但是要和宿主機(jī)所支持的數(shù)量一致,可以在vmware 的虛擬機(jī)設(shè)置界面根據(jù)提示正確配置。

例如我編譯時(shí)設(shè)置n為8:

sudo make -j8

這個(gè)過(guò)程中有可能出現(xiàn)gcc: internal compile error,可能是因?yàn)榫幾g過(guò)程中內(nèi)存不足,可能需要給虛擬機(jī)配置更大的內(nèi)存。

3.3 安裝模塊

如果編譯順利完成,使用命令sudo make modules_install完成模塊安裝。

這部分操作完成后,在源碼目錄下的/lib/modules下會(huì)生成一個(gè)帶有新內(nèi)核版本號(hào)的文件。

4. 配置引導(dǎo)

在內(nèi)核源碼目錄下輸出引導(dǎo)所需文件到/boot目錄:(下面所有命令中的[version]都表示編譯好的內(nèi)核源碼版本)

sudo mkinitramfs /lib/modules/[version] -o /boot/initrd.img-[version]-generic

拷貝兩個(gè)文件到/boot目錄:

sudo cp arch/x86/boot/bzImage /boot/vmlinuz-[version]-generic

sudo cp System.map /boot/System.map-[version]

然后進(jìn)入/boot/grub/目錄下執(zhí)行sudo update-grub2,完成后即可重啟引導(dǎo)新內(nèi)核啟動(dòng)。

5. 問(wèn)題記錄

實(shí)驗(yàn)一開始選擇的是linux-source-4.19.123版本,編譯過(guò)程總是報(bào)錯(cuò)如下,但沒(méi)有提示任何解決方法。最后切換Linux-source-4.15.0編譯成功。

6. 記錄一些其他問(wèn)題的解決方法以及一些工具的使用

6.1 軟件更新或安裝時(shí)dpkg報(bào)錯(cuò)

dpkg: error processing mysql-server (--configure):

dependency problems - leaving unconfigured

No apport report written because the error message indicates its a followup error

from a previous failure.Errors were encountered while processing:

mysql-server-5.7

mysql-server

解決方法:重新生成/var/lib/dpkg目錄下的info:

cd /var/lib/dpkg

sudo mv info info.bak

sudo mkdir info

sudo apt-get upgrade

6.2 ssh中scp的使用

以在宿主機(jī)(win10下)操作為例(當(dāng)然win10下必須已經(jīng)安裝好ssh,并配置好環(huán)境變量)。方括號(hào)中表示參數(shù)。

復(fù)制文件:

宿主機(jī) --> 虛擬機(jī):`scp [fpath/filename] [user]@[ip]:[destpath]`

虛擬機(jī) --> 宿主機(jī):`scp [user]@[ip]:[fpath/filename] [destpath]`

使用-r參數(shù)可遞歸復(fù)制整個(gè)文件夾:

宿主機(jī) --> 虛擬機(jī):`scp -r [fpath/filename] [user]@[ip]:[destpath]`

虛擬機(jī) --> 宿主機(jī):`scp -r [user]@[ip]:[fpath/filename] [destpath]`

總結(jié)

以上是生活随笔為你收集整理的编译linux源码报错,记录一次Linux内核源码编译实验的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。