前言

国庆期间老师布置了一个作业,其中有一个主要的部分是编译Linux内核。
然而第一次编译可能会遇到许多问题,特别是安装包依赖的问题。这里为了留个纪念,或者希望能帮到大家,特意写了这篇博客。

安装虚拟机

常见的有着两种虚拟机软件:

  • VMware Workstation Pro
  • Oracle VM VirtualBox

远程连接工具(可选)

  • xshell
    可以用学校的邮箱注册一个账号,可以免费下载教育版。我个人比较喜欢用xshell
  • putty

如果使用远程连接工具的话,记得连接之前下好openssl-server (以下命令默认是在ubuntu系统下的)

sudo apt-get install openssh-server

查看

ps -e | grep ssh

assemble只编译单一模块_Linux内核

要看到sshd 才可以,如果只有ssh-agent或者您在安装openssh-server的时候提示无法定位软件安装包,那么请先执行下面的操作(更新以下系统)

安装系统

去Linux官网下在ubuntu的镜像,建议选择LTS(长期支持版本)或者Stable(稳定版本),虚拟机安装系统的过程这里也不讲了,网上有很多教程。装的时候建议给虚拟机的空间>=60G.

更新系统

如果不是图形界面的话可以参考这篇文章:

assemble只编译单一模块_assemble只编译单一模块_02


点击下载自右边的镜像URL下拉框

assemble只编译单一模块_assemble只编译单一模块_03



点击其他站点:

assemble只编译单一模块_虚拟机_04



这里点击 选择最佳服务器, 等 两三分钟后,系统自动会选择一个服务器,这时候我们再点击 选择服务器按钮即可,点击完后会提示你更新。

assemble只编译单一模块_虚拟机_05


然后打开终端,依次执行

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

其中第二步会花比较长时间,比如二三十分钟,具体取决于你的网络情况还有选择的镜像的情况等。


下载内核并解压

去这个,kernel.org复制一下链接,

assemble只编译单一模块_Linux内核_06


这里复制到的地址为 https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.8.14.tar.xz

然后在你想要的目录下

wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.8.14.tar.xz

输入 ls 会发现刚目录下多了一个 linux-5.8.14.tar.xz 的文件。

解压过程:

xz -d linux-5.8.14.tar.xz

这时候 linux-5.8.14.tar.xz 变成了一个 linux-5.8.14.tar 的文件。

tar xvf linux-5.8.14.tar

完成解压

下载编译内核需要的包

这里一次性先下完先

sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison

然后设置一下menuconfig.

sudo make menuconfig

assemble只编译单一模块_Linux内核_07


按两次ESC键,然后选择Yes,就会在该目录下生成一个配置实验。

然后开始编译

sudo make -j8;

这里-j参数后面的数字代表几核,根据自己实际情况选,建议尽可能大,那样编译起来快一些。

然后经过漫长的编译过程…

assemble只编译单一模块_Ubuntu_08


完成之后一次输入

sudo make modules_install;
sudo make install;

最后重启虚拟机即可,验证一波:

assemble只编译单一模块_虚拟机_09


查看一波编译完成后的文件夹下的东西:

assemble只编译单一模块_编译_10



结语

这是人生中一次难忘的经历。可能每个同学遇到的问题都会不一样,但是相信大家能力这么强一定可以解决的! _