关于解决Linux内核配置过程make bzImage中出现的问题 --个人笔记

最近在学习制作U盘Linux系统,结果在途中遇到一些问题

以下为制作教程:
(31条消息) 从0开始构建自己的U盘Linux(一)_Edeeen1的博客-CSDN博客

此教程已经比较详细了,但一些细节没有提及,在此将个人遇到的问题记录下来,以供参考。

当执行命令 make bzImage命令时出现如图一情况


因此可以知晓是因为没有安装包mipsel-linux-uclibc-gcc的问题,而命令也自动帮助安装,但最终出现无法定位安装包位置的情况,再次尝试后无果
“srcipts/extract-cert.c:21:10:fatal error:openssl/bio.h:没有哪个文件或目录”
查询文章如下:https://www.cnblogs.com/hjxzip/p/14702329.html
(在写这篇笔记时又发现一个问题,虚拟机火狐浏览器可以访问这链接,主机微软无法访问,显示被删除,原因未知,如有了解情况的小伙伴可以告知一下)
看这链接文章后,得知报错可能时因为没有安装libssl-dev
因此尝试sudo apt-get install libssl-dev,出现图二所示


显示“无法获得锁”,“无法获得dpkg前端锁”,搜索资料,https://blog.csdn.net/weixin_37769711/article/details/88759474

查询之后得知,出现的原因是在之前下载未完成时久将窗口关闭,然而apt-get进程没没有结束导致,或者是搜索一个不存在的安装包,apt进程返回结果后你很快地再次使用apt命令,就造成进程阻塞现象。
使用ps aux命令查看

ps aux //可以查看系统中所有的进程
ps -le // 可以查看系统中所有的进程,而且还能看到进程的父进程的 PID 和进程优先级 
ps -l // 只能看到当前 Shell 产生的进程;


“grep”(全面搜索正则表达式并把行打印出来,配合使用查找锁定的apt-get进程的PID
输入ps aux | grep “apt-get”

等到终端返回apt-get的PID后,再使用sudo kill xxx就可以了。比如返回的PID是 1001 ,那你就sudo kill 1001.
然后,执行后效果不理想,如图三,无法找到进程。


于是,尝试方法二:强制解锁
直接输入以下两行命令,把进程锁的缓存文件删除,也可以达到同样效果。

sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock


执行过后成功解决进程锁问题
然而在make bzImage时仍然有报错
看到一篇博客终于稍微明白一点,https://www.cnblogs.com/gongzi-blog/p/14206685.html,
在编译x86内核之前需要提前安装一些包,因为在过程中回用到,如果没有则会出现错误,

包如下

#apt-get install make
#apt-get install gcc
#apt-get install flex
#apt-get install bison
#apt-get install libcurses-dev
#apt-get install libssl-dev
#apt-get install libelf-dev

在将上述进行安装时,发现libelf-dev和libcurses-dev的安装出现问题,“无法定位软件位置”
考虑到之前的进程锁,怀疑这次也是相同的问题,于是按照上边清除了两次,然后重新install,还是会有“无法定位软件位置”
并且在libelf-dev的安装过程中会出现如图四情况


在输入Y,回车后,出现网络不可连接。
于是搜索网络不可用原因,查到国内外源,这下可能有些明白了
可能是由于ubuntu网站属于国外,内网无法访问,因此无法更新,需要更改sources.list(源更新地址),libelf出问题可能也是因为这个。
因为我使用的是ubuntu22版,因此使用ubuntu22版国内更新源
首先将ubuntu本身更新源备份:

输入下列命令

cp /etc/apt/sources.list  /etc/apt/sources.list.backup
//这是先将原来的源更新地址等复制一下,防止更改后把原来的源丢失


然后找到百度出来的国内更新源,用gedit打开(gedit是ubuntu自带的编写程序)

输入下列命令,打开

gedit /etc/apt/sources.list


将国内更新源链接复制进去(应该是10个链接,)
然后保存,保存的时候命令提示符一直在显示着什么“不行不行不要不要”之类的,搞得我有点慌,不过好像实际没什么影响,保存后关闭,然后更新一下:

输入更新命令

apt-get update


如图五,成功更新(但速度有点慢,只有130多K,我用的是阿里源,也不知道清华源怎么样。不过好歹能更新了)


在更新完毕后,执行命令:

apt-get install libelf-dev


按照提示输入y,运行,成功安装libelf包,如图六


之后再次尝试make bzImage
成功进行编译
接下来就是在编译的过程了,这个时间比较久(我洗了个衣服出来还没好),可能也与个人设备有关。
然后bzImage的文件位置是编译的最后一行,如图七

 

 之后按照教程进行操作即可

(关于虚拟机可以访问文章链接,主机无法访问的问题,经过了解,是不同的DNS问题,更换主机DNS即可)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

居心不测

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值