linux 4.15.7内核fedora(Ubuntu)下编译安装

1. 内核源代码链接:https://www.kernel.org/

Latest Stable Kernel is : 4.15.7

2. 3个重要路径:

1>内核源码放置路径:/usr/src/kernels/

2>模块安装路径:/lib/modules/$(uname -r)/kernel/,这个内核版本在之后创建虚拟文件系统需要用到,即$(uname -r)这个目录名,必须一致.

3>  内核功能与模块配置文件,内核文件,虚拟文件系统放置目录/boot/

3.  编译过程

1>make mrproper确保内核功能选择文件删除

2>make clean 删除中间目标文件

3>make menuconfig 以图形界面的方式选择内核功能

根据不同类型的选择,有不同的标识:

「 [ ] 」(excludes)表示该选项没有被选取,编译后的kernel 将不会有此功能。

「 < > 」(module capable)表示该选项没有被选取,而且是可以被当做是module,可以在开机之后另外载入的。

「 [*] 」(built-in)表示该选项有被选取,编译后的kernel 包含此功能,而且该功能会被编入kernel image 中,这意味着在kernel 被载入时该功能就已经存在,有些功能是一定要在kernel 被载入时就存在的,例如读取filesystem,因为kernel 无法从它认不出的filesystem 里读取档案。 虽然将各能选成内建可以将整个kernel 的功能包成一个kernel image 档,但它也会造成执行时一些不必要的记忆体以及初始化时间的浪费。

」(module)表示该选项有被选取,而且是被编译成module 的形式,它会存放在filesystem中,并在kernel 被载入后才动态地载入。 编译成module 的优点是减少kernel image 的空间、加快开机时间,以及方便开发kernel 功能,因为module 是在开机后才被载入,每次修改该功能时只需要重新编译并载入module ,而不需要重新编译整个kernel 并且重新开机

依据自己电脑选择适当功能,安装完save退出将生成一个.config的配置文件

4.  make bzImage 编译经过压缩的内核(fedora提前安装好openssl-devel,Ubuntu  sudo apt-get install opensll, sudo apt-get install libssl-dev 不然会提示错误) (Image — image)

5.  make modules 编译模块

6.  make modules_install安装模块,模块安装在/lib/modules/下

7.  cp /usr/src/kernels/linux-4.15.7/arch/x86/boot/bzImage  /boot/vmlinuz-4.15.7  移动内核到/boot

8. cp /usr/src/kernels/linux-4.15.7/.config /boot/config-4.15.7 备份设置文件

9.  mkinitrd -v /boot/initramfs-4.15.7.img    4.15.7

(Ubuntu:  mkinitramfs -o /boot/initrd.img-4.18.5  4.18.5)

新建虚拟文件系统,4.15.7即是上面提到的$( uname -r)目录,因为SCSI硬盘需要模块化,加载模块需要在根目录,但是此时硬盘根本无法使用,目录树不存在,故使用initrd来新建虚拟文件系统,仿真成为根目录。

10.  grub2-mkconfig   -o   /boot/efi/EFI/fedora/grub.cfg  自动更新grub文件,UEFI机器上   (Ubuntu   sudo update-grub2)

11. 重新启动,在选择操作系统界面会出现4.15.7这个操作系统,我第一次安装进入了紧急模式,在编译3次之后在可以进入操作系统(不知道哪里错了…),只是内核变了,界面依旧是fedora的界面,执行命令uname -r 能看到版本是4.15.7

你可能感兴趣的:(linux,内核,linux)