Linux内核编译

释放双眼,带上耳机,听听看~!

Linux内核编译

下载Linux内核源码

Linux内核官方网站

内核编译

环境配置


1
2
3
4
5
6
7
8
9
10
1    sudo apt-get install  libncurses5-dev   openssl libssl-dev
2    sudo apt-get install build-essential openssl
3    sudo apt-get install pkg-config
4    sudo apt-get install libc6-dev
5    sudo apt-get install bison
6    sudo apt-get install flex
7    sudo apt-get install libelf-dev
8    sudo apt-get install zlibc minizip
9    sudo apt-get install libidn11-dev libidn11
10

解压内核


1
2
3
1    tar -xavf linux-5.0.2.tar.xz -C /usr/src
2    cd /usr/src/linux-5.0.2
3

         使用tar解压时 带上参数-C解压到指定目录

净化源码


1
2
1    make mrproper
2

配置内核选项

        先在你的/boot目录下找到其他内核选项配置

Linux内核编译


1
2
3
4
1    cp /boot/config-'uname -r'-generic ./.config
2    make menuconfig
3
4

        出现 “*** 没有规则可制作目标'menuconfig'”问题,是因为make menuconfig命令需要进入内核源码目录才能使用,但是linux系统默认安装时没有安装内核源码,需要手动下载,在终端输入sudo apt-get install linux-source然后到/usr/src/目录下找到对应的.bz2文件进行解压,然后到该目录下执行make menuconfig


1
2
3
4
5
1    tar -xvjf linux-source-'uname -r'.tar.bz2 -C /home/kernel
2    cd /home/kernel/linux-source-'uname -r'
3    make menuconfig
4
5

Linux内核编译

        若能打开页面回到下载的内核的路径下cd /usr/src/linux-5.0.2然后在用make menuconfig配置内核选项

Linux内核编译

        选择load+OK+Save+OK+EXIT+EXIT

删除多余配置文件


1
2
1    make clean
2

        如果第一次编译内核则不需要进行处理,多次编译内核可以执行该命令来节省空间

开始编译


1
2
1    make bzImage
2

        大概花费十几分钟就可以完成对刚才在内核选项中选中设置的编译

编译模块


1
2
1    make modules
2

安装模块


1
2
3
1   make modules_install
2
3

         一般情况下要给\根目录分配50G左右的空间,如果在这一步出现空间不足的情况就需要重新划分分区,当然整个系统的空间在你装好系统的那一刻已经定了,所以只能把其他分区的空间挪给\分区

  • 在当前系统上装好GParted分区软件 sudo apt-get install gparted

  • 准备一个Ubuntu系统的U盘启动盘

  • 使用U盘启动,进入试用系统

  • 在试用系统中使用Bash搜索GParted,打开软件选择对应盘符就可以对系统进行分区操作完成根目录的扩展(GParted使用方法)

Linux内核编译

        待模块安装完成,若在 /lib/modules/目录下生成了一个KERNEL_VERSION(5.0.2)则说明编译成功

空间配置


1
2
3
1   mkinitramfs /lib/modules/5.0.2 -o /boot/initrd.img-5.0.2-generic
2
3

编译完成

        到此为止,构建内核已经完成,把内核映像和System.map拷贝到/boot/目录下


1
2
3
4
5
1   cp /usr/src/linux-5.0.2/arch/x86/boot/bzImage /boot/vmlinuz-5.0.2-generic
2   cp /usr/src/linux-5.0.2/System.map  /boot/System.map-5.0.2
3   ln -s /boot/System.map-5.0.2  /boot/System.map
4
5

        或者执行make install一次性完成

修改grup配置文件


1
2
3
4
5
1   cd /boot/grub/grub.cfg
2   chmod 777 grub.cfg
3   update-grub2   
4
5

查看grub文件

        更新grub.cfg之后,文件中会出现新内核的启动目录,vim /boot/grub/grub.cfg查看内容

Linux内核编译

        vmlinuz:可引导、可压缩的内核,vmlinuz被加载后才能完成各种模块、服务的加载运行

        initrd.img:挂载根目录‘/’,以及其他的目录,比如:bin,dev,proc,sbin,sys等linux启动时必须的目录

        vmlinuz initrd.img和System.map详解

        在grub.cfg找到这两个关键配置之后,内核就可以成功启动了,重启之后进入新内核,在终端输入uname -r查看新内核

卸载内核

删除内核文件


1
2
3
4
5
6
1rm /boot/vmlinuz*KERNEL-VERSION*
2rm /boot/initrd*KERNEL-VERSION*•
3rm /boot/System-map*KERNEL-VERSION*•
4rm /boot/config-KERNEL-VERSION•
5rm -rf /lib/modules
6

最后使用update-grub更新grub

 

给TA打赏
共{{data.count}}人
人已打赏
安全运维

WordPress网站专用docker容器环境带Waf

2020-7-18 20:04:44

安全运维

运维安全-Gitlab管理员权限安全思考

2021-9-19 9:16:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索