Linux编译内核 Ubuntu18.04 -2020.11.04

关闭虚拟机并备份

首先关闭虚拟机,其次直接找到.vmdk所在目录,并压缩该目录实现备份

下载内核源码

Linux内核官网:https://www.kernel.org/,点击图标下载,摘自https://blog.csdn.net/qq_36290650/article/details/83052315

将压缩包移动到虚拟机中,并备份/boot/grub/grub.cfg文件这个文件他负责启动你的Ubuntu系统,你编译好内核之后是要把新内核信息加入到这个文件里面,这样你才能在启动Ubuntu的时候运用你的新内核。这个文件也是极其重要的。如果你在编译内核过程中操作不当,将里面的信息破坏了,那么你的系统将无法启动,这样你只能通过恢复这个文件来解决,摘自:https://blog.csdn.net/qq_43688952/article/details/88856354

准备工作

安装一系列软件

 sudo apt-get install libncurses5-dev openssl libssl-dev
sudo apt-get install build-essential
sudo apt-get install pkg-config
sudo apt-get install libc6-dev
sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install libelf-dev
sudo apt-get install zlibc minizip
sudo apt-get install libidn11-dev libidn11

解压内核源码

tar -xavf linux-5.9.3.tar.xz

进入解压后的目录,使用命令make mrproper,这个命令会删除所有的编译生成文件、内核配置文件(.config文件)和各种备份文件,所以几乎只在第一次执行内核编译前才用这条命令

将boot目录下的当前系统内核的config配置信息复制一份到当前目录下的.config文件中

linkchen@master:~/UserProgram/linux-5.9.3$ cp /boot/config-4.15.0-121-generic ./.config

确认无误后,输入make menuconfig命令,打开一个图形界面

移动键盘光标,到Load上,再回车,可以看到确认是当前目录下的.config文件

选择OK后,再移动到Save上,保存并关闭,最后选择退出Exit

输入make clean命令,用于删除大多数的编译生成文件,但是会保留内核的配置文件.config,还有足够的编译支持来建立扩展模块。所以你若只想删除前一次编译过程的残留数据,只需执行make clean命令

在进行编译之前还需要将虚拟机的存储空间扩展,否则会在编译的过程中产生存储空间不足的错误,扩展可参考:https://blog.csdn.net/lhl_blog/article/details/86636217

编译内核

输入命令sudo make开始编译,编译过程需要很长时间,至少两个小时左右

编译完成后,输入命令du -sh查看编译后的目录大小

可以看到有19GB,我们需要将整个移植到软盘中,并在软盘中启动

安装内核

输入make modules_install,安装内核模块

输入sudo make install,安装内核

Linux启动过程图解

参考:https://www.thegeekstuff.com/2011/02/linux-boot-process/

配置启动内核

首先查看当前系统内核,输入uname -a

输入命令,查看initrd.img的不同内核版本

initrd.img即boot loader initialized RAM disk,就是由 boot loader 初始化的内存盘

具体可参考:https://blog.csdn.net/li33293884/article/details/53183622

linkchen@master:~/UserProgram/linux-5.9.3$ sudo mkinitramfs -o /boot/initrd.img-
initrd.img-4.15.0-118-generic initrd.img-4.15.0-121-generic initrd.img-5.9.3

输入命令

  • sudo mkinitramfs -o /boot/initrd.img-5.9.3

  • sudo update-initramfs -c -k 5.9.3

  • update-grub2

linkchen@master:~/UserProgram/linux-5.9.3$ sudo mkinitramfs -o /boot/initrd.img-5.9.3
[sudo] password for linkchen:
linkchen@master:~/UserProgram/linux-5.9.3$ sudo update-in
update-inetd update-info-dir update-initramfs
linkchen@master:~/UserProgram/linux-5.9.3$ sudo update-in
update-inetd update-info-dir update-initramfs
linkchen@master:~/UserProgram/linux-5.9.3$ sudo update-initramfs -c -k
4.15.0-118-generic 4.15.0-121-generic 4.15.0-29-generic 5.9.3 all
linkchen@master:~/UserProgram/linux-5.9.3$ sudo update-initramfs -c -k 5.9.3
update-initramfs: Generating /boot/initrd.img-5.9.3
linkchen@master:~/UserProgram/linux-5.9.3$ sudo update-grub2
Sourcing file `/etc/default/grub'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.9.3
Found initrd image: /boot/initrd.img-5.9.3
Found linux image: /boot/vmlinuz-4.15.0-121-generic
Found initrd image: /boot/initrd.img-4.15.0-121-generic
Found linux image: /boot/vmlinuz-4.15.0-118-generic
Found initrd image: /boot/initrd.img-4.15.0-118-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
done
linkchen@master:~/UserProgram/linux-5.9.3$

输入命令sudo reboot重启计算机,再次检查内核版本,输入uname -a

Linux编译内核 Ubuntu18.04 -2020.11.04的更多相关文章

  1. 【原创】Linux编译内核

    Linux 编译内核 大致分这几个步骤 1.准备编译工具.内核文件 2.开始编译 3.将编译好的新内核install进系统 4.查看是否成功.   一.准备好必备的库和内核文件   1.添加必备的编译 ...

  2. linux编译内核make menuconfig报错Unable to find the ncurses libraries解决办法

    在 linux 编译内核时 make menuconfig 报了下面的错误. *** Unable to find the ncurses libraries or the *** required ...

  3. linux编译内核

    ubuntu 14.04 编译内核出现unable to locate package ncurses-devel 问题的解决   首先,在make menuconfig的时候就会提示没有 nucrs ...

  4. u盘安装ubuntu10.04 、11.04 server

    10.04 先将 ubuntu server 的 iso 放到优盘上,然后在提示无法找到光驱时,按 alt+f2 打开一个新的 console 窗口,将 iso mount 上,具体操作如下: ls ...

  5. Linux编译内核提示'make menuconfig' requires the ncurses libraries错误

    原来使用的ubuntu 11.10系统由于误操作,导致系统崩溃,重新安装了ubuntu 11.10: 在编译内核的时候,提示如下错误: dingq@wd-u1110:~/hwsvn/2sw/1prj_ ...

  6. Linux 编译内核

    编译内核步骤: 1.先查看自己OS使用的内核版本 mrzhang@mrzhang:~$ uname -r4.4.0-51-genericmrzhang@mrzhang:~$ 2.如果安装系统时,自动安 ...

  7. 嵌入式Linux编译内核步骤 / 重点解决机器码问题 / 三星2451

    嵌入式系统更新内核 1. 前言 手里有一块Friendly ARM的MINI2451的板子,这周试着编译内核,然后更新一下这个板子的Linux内核,想要更新Linux Kernel 4.1版本,但是种 ...

  8. linux 编译内核 /boot空间不足?

    /boot空间一般分配100M的空间,本来是够用的,由于频繁的更新导致旧的不再使用的内核文件也保留在boot空间里,占着位置,所以把这些不用的内核文件下载掉boot空间就能释放出一部分, 具体做法为 ...

  9. linux 编译内核[scripts/kconfig/dochecklxdialog] 错误

    administrator@ubuntu:~/linux-2.6.28-omap$ make menuconfig *** Unable to find the ncurses libraries o ...

随机推荐

  1. Python-py2和py3读写文本区别

    python2和python3的区别? python 2  str             对应      python3 bytes python 2 uincode            对应   ...

  2. Python正则表达式 re.sub()函数:标志位flags与参数个数问题

    这两天在写爬虫程序,涉及英文文本处理,需要规范化英文标点符号的写法.正常情况下,英文句号「.」后面需要保证有且只有一个空格,但也有例外情况,比如「i.e.」.「e.g.」.「P.S.」这种.由于无法预 ...

  3. Python练习题 036:Project Euler 008:1000位数字中相邻13个数字最大的乘积

    本题来自 Project Euler 第8题:https://projecteuler.net/problem=8 # Project Euler: Problem 8: Largest produc ...

  4. 如何使用微软提供的TCHAR.H头文件?

    转载:https://www.cnblogs.com/flyingspark/archive/2012/03/16/2399788.html 如何使用微软提供的TCHAR.H头文件? 如果你现在写的代 ...

  5. 【题解】hdu4757 【TJOI2018】异或

    题目链接 题目大意:有一颗树,有点权,每次询问:一条路径\(x->y\)中与\(z\)异或的最大值,或是以\(x\)为根的子树中与\(y\)异或的最大值. 树剖--还是算了. 观察到,子树的\( ...

  6. helm包管理工具

    K8S正常部署应用是如下方式 kubectl create deployment web --image=nginx --dru-run=client -o yaml > web.yaml ku ...

  7. 收集的照片信息都是Excel超链接?批量命名很困难?来试试这个自制的下载器吧!

    项目背景 作为大学的一名班委,经常要制作各种表格.统计各种信息,成为一名合格的"表哥"是一门必修课.其实Excel的文字信息和数字信息的统计和处理还并不算难题,很多信息可以通过问卷 ...

  8. 实验四  CSS样式的应用

    实验四  CSS样式的应用 注意:以下实验项目皆以本文件为操作对象,实验结果用记事本保留后预览,最后将添加的CSS代码转载到实验报告中 另本网页中蓝色加下划线的字即为默认的超链接样式 实验目的: 掌握 ...

  9. element中过滤器filters的使用(开发小记)

    之前在开发过程中遇到这么一个问题,一串数据需要在el-table中展示,其中含有金额字段,需要将其转换成标准数据格式,即三位一个逗号间隔. 今年刚毕业就上手项目了,第一次接触的Vue,开发经验少,也忘 ...

  10. day02 Pyhton学习

    1.昨日内容回顾 1.python是一门解释型,弱类型的高级编程语言 优点: 1.优雅简单明确 2.短小快,代码短,代码量小,开发效率高 缺点: 1.运行效率低(相对) 2.python解释器 Cpy ...