Linux内核编译

Linux内核编译

下载Linux内核源码

Linux内核官方网站

内核编译

环境配置

    sudo apt-get install  libncurses5-dev   openssl libssl-dev 
    sudo apt-get install build-essential openssl
    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.0.2.tar.xz -C /usr/src
    cd /usr/src/linux-5.0.2

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

净化源码

    make mrproper

配置内核选项

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

Linux内核编译_第1张图片

    cp /boot/config-'uname -r'-generic ./.config
    make menuconfig

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

    tar -xvjf linux-source-'uname -r'.tar.bz2 -C /home/kernel
    cd /home/kernel/linux-source-'uname -r'
    make menuconfig

Linux内核编译_第2张图片

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

Linux内核编译_第3张图片

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

删除多余配置文件

    make clean

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

开始编译

    make bzImage

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

编译模块

    make modules

安装模块

	make modules_install

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

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

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

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

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

Linux内核编译_第4张图片

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

空间配置

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

编译完成

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

	cp /usr/src/linux-5.0.2/arch/x86/boot/bzImage /boot/vmlinuz-5.0.2-generic
	cp /usr/src/linux-5.0.2/System.map  /boot/System.map-5.0.2
	ln -s /boot/System.map-5.0.2  /boot/System.map

        或者执行make install一次性完成

修改grup配置文件

	cd /boot/grub/grub.cfg
	chmod 777 grub.cfg
	update-grub2	

查看grub文件

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

Linux内核编译_第5张图片

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

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

        vmlinuz initrd.img和System.map详解

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

卸载内核

删除内核文件

rm /boot/vmlinuz*KERNEL-VERSION* 
rm /boot/initrd*KERNEL-VERSION*• 
rm /boot/System-map*KERNEL-VERSION*• 
rm /boot/config-KERNEL-VERSION• 
rm -rf /lib/modules

最后使用update-grub更新grub

 

你可能感兴趣的:(Linux学习,学习记录)