记一次linux内核编译

仅作记录,小白萌新,大佬勿喷


环境

ubutun 20.04

VMware Pro 15.5

Linux内核版本 5.6.14

过程

    复制内核压缩包到/usr/src/并解压

sudo cp linux-5.6.14.tar.xz /usr/src/

sudo tar -xvJf linux-5.6.14.tar.xz

        尝试make,根据提示安装所需组件

sudo apt install make

sudo apt-get install libncurses5-dev libncursesw5-dev

sudo apt install flex

sudo apt install gcc

sudo apt install bison

sudo apt insatll vim

    开始设置menuconfig

sudo make menuconfig

    保存之后开始make

sudo make -j8

    出现错误


调整虚拟机相关设置后重新执行make,报错

(此处我重装虚拟机,执行上面的指令后出现了新的错误


解决方法:

sudo apt-get install libssl-dev

再次make,等待


在此处停顿,稍等片刻,会继续运行。


运行完成,用时约一小时。

sudo make modules_install

sudo make install

完成后,已经把内核源码编译成内核镜像,并且拷贝到了引导目录下。


建立虚拟盘,如果版本号后面跟的有其他东西的话也要加上

sudo update-initramfs -c -k 5.6.14

修改grub.cfg

grub.cfg在/boot/grub/目录下

复制一段,修改斜体加粗部分,保存退出。

menuentry 'Ubuntu, with Linux 5.4.0-31-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-31-generic-advanced-52fda4f0-9dea-4033-bb65-8d41e475565b' {

                recordfail

                load_video

                gfxmode $linux_gfx_mode

                insmod gzio

                if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi

                insmod part_msdos

                insmod ext2

                set root='hd0,msdos5'

                if [ x$feature_platform_search_hint = xy ]; then

                  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  52fda4f0-9dea-4033-bb65-8d41e475565b

                else

                  search --no-floppy --fs-uuid --set=root 52fda4f0-9dea-4033-bb65-8d41e475565b

                fi

                echo    'Loading Linux 5.4.0-31-generic ...'

                linux  /boot/vmlinuz-5.4.0-31-generic root=UUID=52fda4f0-9dea-4033-bb65-8d41e475565b ro find_preseed=/preseed.cfg auto noprompt priority=critical locale=en_US quiet

                echo    'Loading initial ramdisk ...'

                initrd  /boot/initrd.img-5.4.0-31-generic

        }

重启


直接选择resume


如果不修改grub.cfg,可以修改/etc/default/grub


将GRUB_TIMEOUT注释掉

保存退出

执行

sudo update-grub

重启,按esc,进入高级选项,可以选择内核。

参考资料

https://blog.csdn.net/qq_41911710/article/details/102823579

https://blog.csdn.net/qq_38428855/article/details/102854322

https://www.jianshu.com/p/98fe46eec942

https://blog.csdn.net/ibless/article/details/82349507

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容