前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Linux】Linux内核编译与入门

【Linux】Linux内核编译与入门

作者头像
DevFrank
发布2024-07-24 15:28:57
940
发布2024-07-24 15:28:57
举报
文章被收录于专栏:C++开发学习交流

😏1. Linux内核介绍

Linux内核是一种开源操作系统内核,它是基于Unix系列操作系统的设计思想和原则。与其他操作系统内核相比,Linux内核具有很多特点,例如高度可定制、模块化设计、强大的网络支持、多处理器支持、安全性、稳定性等。

Linux内核最初由芬兰程序员Linus Torvalds于1991年创建,并在全球范围内得到了广泛的使用和支持。现在,Linux内核已经成为许多流行的操作系统的核心,包括Ubuntu、Red Hat、Debian、CentOS等。

在Linux内核中,各种设备和功能都采用模块化设计,这使得内核可以灵活扩展,只需加载必要的模块即可实现所需功能。此外,Linux内核还支持多种文件系统和文件系统类型,例如ext4、xfs、btrfs、nfs等。

总体来说,Linux内核是一个高度可定制的、功能丰富的、稳定的操作系统内核,其开放源代码和广泛的社区支持使其成为开发者和用户的首选之一。

😊2. Linux内核编译

首先准备一台Linux机器,查看内核版本:uname -r

根据获取的linux kernel版本,在www.kernel.org上面下载合适的kernel版本。(如我的Ubuntu18.04内核版本是5.4.0,安装版本选择5.4.244)

解压后,将boot下config文件拷贝到本地:cp -v /boot/config-$(uname -r) .config

然后编辑.config文件:

代码语言:javascript
复制
vim .config
# 将该项原有内容删掉即可,如下
CONFIG_SYSTEM_TRUSTED_KEYS=""

输入make menuconfig 启动配置界面,小白直接保存即可;

安装依赖:

代码语言:javascript
复制
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison dwarves

开始编译内核:

代码语言:javascript
复制
# 根据机器选择核数 -j x
make -j 10	#(时间很长)
# 安装模块
sudo make modules_install
# 安装内核
sudo make install

完成后的结果如下(不容易呀):

然后重启电脑:

代码语言:javascript
复制
sudo update-grub
sudo reboot

如果出现error vmlinuz has invalid signature 【或者】 mmx64.efi not found这种错误,是因为bios开启了安全启动,去bios-secure boot,设置为disable(禁用安全模式)即可。

正常启动后,查看当前内核版本:uname -r

在这里插入图片描述
在这里插入图片描述

内核编译成功。

卸载内核:

代码语言:javascript
复制
# 改为自己的内核版本,我这里是5.4.244
sudo rm -rf  /boot/vmlinuz*5.4.244* /boot/initrd*5.4.244* /boot/System-map*5.4.244* /boot/config-*5.4.244* /lib/modules/*5.4.244*/ /var/lib/initramfs-tools/*5.4.244*/
sudo apt-get purge linux-image-****-generic
# 更新grub配置
sudo update-grub2

查看自己安装了哪些内核:

代码语言:javascript
复制
sudo dpkg --get-selections  |  grep  'linux'

😆3. Linux内核使用

内核目录如下:

可以基于此学习Linux驱动开发、应用开发等,还可以在新内核的基础上进行裁剪等操作。

嵌入式Linux学习路线:

1.嵌入式开发基础知识:学习 C/C++ 编程语言、计算机体系结构、操作系统和嵌入式系统的基础概念。 Linux 系统管理员技能:熟悉 2.Linux 操作系统的基本命令行和文件系统,了解如何管理用户帐户和权限,如何安装软件包等。 3.嵌入式 Linux 知识:学习如何配置和定制Linux 内核、驱动程序和 bootloaders,以及嵌入式设备的文件系统和启动过程。 4.嵌入式开发板的选择和使用:学习如何选择适合您项目需求的嵌入式开发板,了解如何调试和测试硬件和软件。 5.特殊的应用场景:如实时操作系统、网络编程、多线程编程、图像处理等。 项目经验:完成一些小型嵌入式项目,如控制LED、读取传感器数据等,并逐步提高难度,最终达到完成完整项目的能力。

参考:

代码语言:javascript
复制
http://t.csdn.cn/7F656
https://zhuanlan.zhihu.com/p/378149586

以上。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 😏1. Linux内核介绍
  • 😊2. Linux内核编译
  • 😆3. Linux内核使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档