文章目录
- 前言
- 一、安装虚拟机
- 二、虚拟机的初始化配置
- 三、远程Shell 工具连接虚拟机
- 四、下载Linux 内核并编译
- 五、重新启动虚拟机,进入新内核系统
//
前言
谨记:写下这篇教程的目的,是为了记录自己在编译Linux内核时遇见的各种问题,让大家能少掉坑。虽然说事不过三,但这次是我第4次重新装系统、重新编译了…
提示:以下是本篇文章正文内容,内核已安装成功,下面的命令和方法可供参考
//
一、安装虚拟机
说明:
光盘映像文件:Ubuntu 20.04 server(服务器版本64位)
虚拟化软件:VMware Workstation
(VirtualBox也不错,但网上关于VirtualBox的教程太少了,我觉得两款其实差不多啦,VirtualBox还更简洁一点。)
1.打开VM——点击创建新的虚拟机,点击下一步、再下一步。
2.选择安装我们之前下载好的Ubuntu Server版本的光盘映像文件(后缀名是.iso)
//
3.填写好信息(要记得自己设的用户名和密码,可以写在一个txt文件)
//
4.内核编译产生的大量临时文件和目标文件会占据很大的空间,所以保存的位置要保证至少有50+G
//
5.为了让Linux内核编译更快一点,我这里设置了4核。(如果本机承受得住可以设8核!)
//
6.接下来是设置运行内存(3G-4G就够了),运行内存不够大,编译过程中也是会出错的哦,但我没有碰见。
//
7.选择桥接网络,这个是wget命令下载、连接网络、主机与虚拟机间互ping的正确选择
(之前搞主机与虚拟机间互ping搞了很久,其实就是桥接网络设置没弄好)
//
8.接下来两个选择默认的就可以了,直接点击下一步。
//
9.创建虚拟磁盘,因为每个电脑的配置和安装文件不一样,编译内核用到的内存也不大相同,见过的最小有5G,最大的50+G,如果想要内核编译一步到位,在此建议设80G左右(有多大搞多大!)
//
10.直接下一步,就创建好了,下图是创建的虚拟机信息,点击完成、开启虚拟机:
//
二、虚拟机的初始化配置
1.默认English——>回车done(其余界面没特别说明都是默认设置就OK)
//
2.网线插好,有DHCP,系统就会自动默认为DHCP,并把已经获取到的IP显示到对应的网卡上,大部分情况默认就可以了,done
//
3.接下来到了重点!! 手动手动手动磁盘分区!!
本人前三次不能编译完整,正是三次都是“根目录内存太小”!!!即使前面设置60G、90G,如果是自动默认分区,/ 根目录分配到的内存都不够用呀(/(ㄒoㄒ)/~~)
下面大家好好设置,编译内核就不会出现“error:No space left on device”这个错误。
选择"Custom storage layout"——done
选择“Add GPT Partition”——(说明:图是旧的60G,后来想想还是不够,改成80G了)
/boot 10G空间够了
同样的选择“Add GPT Partition”,给 / 这个根目录设空间大小
确认就可以看到我们设置的两个分区啦!
4.设置Linux虚拟机登录的用户名和密码(这个要记住啊!登录虚拟机要输入的哦)
//
5.这里选择开启SSH服务,之后远程连接就不会出错了,有的远程连接出错了,是因为虚拟机还没开启SSH服务,可以用终端命令开启这个服务,再连接,也不是很麻烦,百度一下就可以啦!
//
6.设置好,慢慢等待虚拟机安装就OK了
//
三、远程Shell 工具连接虚拟机
直接通过虚拟机软件进入虚拟机终端进行相关的命令行多有不便,字体分辨率较低、不能直接粘贴浏览器网页中 Linux 命令,远程Shell 工具就可以自己设置字体大小格式。//
在此本人用的是:Putty
下载网址:https://www.putty/
1.下载
根据自己电脑位数选择下载安装就可以了
可以查找相关教程,配置喜欢的终端字体和其大小。
2.运行putty.exe,填写虚拟机IP,进入
//
四、下载Linux 内核并编译
1.远程 Shell 会话终端里,使用 wget 命令下载最新的稳定版 Linux 源码包
命令如下:
sudo wget 源码包下载链接
例如下载linux-5.8.15.tar稳定版本的源码包:
sudo wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.8.15.tar.xz
下载好显示如下:
//
2.环境配置(想顺顺利利一口气编译好就要做好准备)
(正式编译前需要安装部分软件,之后编译内核就不会报奇怪的错误了)
sudo apt update && sudo apt upgrade
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
(这里是选读,说明这步可能出现的错误和解决办法)
要上网下载的命令 可能 会出现以下错误:
出现错误:
Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
应该是DNS服务器域名访问失败(ping不通网络也可能是这个原因)
解决办法——>输入命令
sudo vim /etc/resolv.conf
添加 nameserver 8.8.8.8
添加 nameserver 114.114.114.114
可能初学者不知道怎么用vim插入文本,在此简单说一下:
①进入这个界面,按 i 键 ,表达进入“INSERT”编辑模式,就可以在文本中添加内容。
②添加好后,按ESC键,再输入“:wq!”,就可以保存并回到普通命令行界面。
(选读结束)
//
3.下载好后,对压缩包进行解压
①把xz后缀名去掉
sudo xz -d linux-5.8.15.tar.xz
②tar命令解压(解压至/usr/src 目录下)
sudo tar -xvf linux-5.8.15.tar -C /usr/src/
解压成功显示:
4.在正式编译内核之前,我们首先必须配置需要包含哪些模块
sudo cp /boot/config-$(uname -r) .config
意思就是拷贝对应当前内核配置到当前目录下并重命名为.config
之后可以输入 uname -r 命令查看当前信息(为了和之后安装好的新内核做对比)
//
//
5.正式开始编译!!
①make menuconfig
提示:虚拟机下有可能提示会因为屏幕太小而无法显示menuconfig而执行失败。要确保远程连接软件全屏。
默认设置即可,选择退出。执行完显示如下:
②sudo time make -j4
开始编译,此过程看每个人电脑、虚拟机等等方面的配置,执行时间有长有短,慢慢等待即可。
这里可以用 make -jn 来进行编译加速,其中 n 值一般为 2,4 或 8 (多给虚拟机分配一些 CPU 资源)
time 命令可以在编译内核过程结束后,在终端抛出编译内核的消耗用时
编译完后显示:(我这里大概编译了1小时40分)
③sudo make modules_install
安装模块
④sudo make install
安装内核
//
五、重新启动虚拟机,进入新内核系统
1.重新驱动虚拟机,出现以下画面,选择“Advanced…”
2.进入之前编译的最新的内核版本中
3.等待…
//
(这里是选读)
此过程当中可能出现以下错误:System is deadlocked on memory
其实虚拟机初始配置的运行内存不够,需要增加内存:
解决办法:直接进入虚拟机设置,增大运行内存,再重新开启虚拟机。
(选读结束)
4.开启虚拟机登录后,输入 uname -r 命令,确认内核版本
说明内核安装成功!!!!!
//
说明:本人前三次编译失败其实都是分配的内存不够大,虽然有一次设了60G,一次90G,但因为都选择了系统默认内存分配,导致根目录分配到的内存还是不够大,所以手动分内存很重要啊!!!
本文献给花了一个星期才搞定这个小作业的菜鸟yjy。
希望此文对有同样困惑的你有所帮助。
参考教程:如何编译安装Linux内核
更多推荐
【Linux虚拟机】从头开始——Linux虚拟机安装、远程Shell 工具连接、内核编译教程
发布评论