下载linuxkernel
① qemu怎样为选择arm linux内核镜像选择运行arm平台
下载Linux内核
下载内核有两种方法,一种是用git直接下载内核代码树,方便后面的内核开发。另一种是直接到内核社区下载对应版本的源码包。我采用第一种方法,但后面发现主线上3.18版本和后面版本的代码,使用这种搭建方法运行不起来。目前未查明问题的根因。如果读者想快速搭建成功,建议选用3.16版本的内核进行搭建。
安装arm的交叉编译工具链
想必做嵌入式开发的朋友,对交叉编译工具链不陌生。如果你订制一个交叉编译工具链,建议你使用crosstool-ng开源软件来构建。但在这里建议直接安装arm的交叉编译工具链:
sudoapt-getinstallgcc-arm-linux-gnueabi
编译Linux内核
生成vexpress开发板子的config文件:
makeCROSS_COMPILE=arm-linux-gnueabi-ARCH=armvexpress_defconfig
编译:
makeCROSS_COMPILE=arm-linux-gnueabi-ARCH=arm
生成的内核镱像位于arch/arm/boot/zImage,后续qemu启动时需要使用该镜像。
下载和安装qemu模拟器
其实Ubuntu12.04有qemu的安装包,但由于版本较低,对vexpress开发板支持不友好,建议下载高版本的qemu:
wget
配置qemu前,需要安装几个软件包:
sudoapt-getinstallzlib1g-dev
sudoapt-getinstalllibglib2.0-0
sudoapt-getinstalllibglib2.0-dev
配置qemu,支持模拟arm架构下的所有单板:
./configure--target-list=arm-softmmu--audio-drv-list=
编译和安装:
make
makeinstall
测试qemu和内核能否运行成功
qemu已经安装好了,内核也编译成功了,到这里最好是测试一下,编译出来的内核是否OK,或者qemu对vexpress单板支持是否够友好。
运行命令很简单:
qemu-system-arm-Mvexpress-a9-m512M-kernel/home/ivan/kernel_git/linux/arch/arm/boot/zImage-nographic-append"console=ttyAMA0"
如果看到内核启动过程中的打印,说明前的搭建是成功的。
这里简单介绍下qemu命令的参数:
-Mvexpress-a9模拟vexpress-a9单板,你可以使用-M?参数来获取该qemu版本支持的所有单板
-m512M单板运行物理内存512M
-kernel/home/ivan/kernel_git/linux/arch/arm/boot/zImage告诉qemu单板运行内核镜像路径
-nographic不使用图形化界面,只使用串口
-append"console=ttyAMA0"内核启动参数,这里告诉内核vexpress单板运行,串口设备是哪个tty。
注意:
我每次搭建,都忘了内核启动参数中的console=参数应该填上哪个tty,因为不同单板串口驱动类型不尽相同,创建的tty设备名当然也是不相同的。那vexpress单板的tty设备名是哪个呢?其实这个值可以从生成的.config文件CONFIG_CONSOLE宏找到。
如果搭建其它单板,需要注意内核启动参数的console=参数值,同样地,可从生成的.config文件中找到。
制作根文件系统
到这里是否大功告成了呢?其实在上面的测试中,你会发现内核报panic,因为内核找不到根文件系统,无法启init进程。
根文件系统要考虑两个方面:
1.根文件系统的内容
如果你看过《LinuxFromScratch》,相信你会对这一步产生恐惧感,但如果一直从事嵌入式开发,就可以放下心来。根文件系统就是简单得不能再简单的几个命令集和态动态而已。为什么LinuxFromScratch会有那么复杂,是因为它要制作出一个Linux发生版。但在嵌入式领域,几乎所有的东西,都是mini版本,根文件系统也不例外。
本文制本的根文件系统=busybox(包含基础的Linux命令)+运行库+几个字符设备
2.根文件系统放在哪里
其实依赖于每个开发板支持的存储设备,可以放到NorFlash上,也可以放到SD卡,甚至外部磁盘上。最关键的一点是你要清楚知道开发板有什么存储设备。
本文直接使用SD卡做为存储空间,文件格式为ext3格式
下载、编译和安装busybox
wget
makedefconfig
makeCROSS_COMPILE=arm-linux-gnueabi-
makeinstallCROSS_COMPILE=arm-linux-gnueabi-
安装完成后,会在busybox目录下生成_install目录,该目录下的程序就是单板运行所需要的命令。
形成根目录结构
先在Ubuntu主机环境下,形成目录结构,里面存放的文件和目录与单板上运行所需要的目录结构完全一样,然后再打包成镜像(在开发板看来就是SD卡),这个临时的目录结构称为根目录
1.创建rootfs目录(根目录),根文件系统内的文件全部放到这里
sudomkdirrootfs
2.拷贝busybox命令到根目录下
sudocpbusybox-1.20.2/_install/*-rrootfs/
3.从工具链中拷贝运行库到lib目录下
sudocp-P/usr/arm-linux-gnueabi/lib/*rootfs/lib/
4.创建4个tty端终设备
sudomknodrootfs/dev/tty1c41
sudomknodrootfs/dev/tty2c42
sudomknodrootfs/dev/tty3c43
sudomknodrootfs/dev/tty4c44
制作根文件系统镜像
1.生成32M大小的镜像
ddif=/dev/zeroof=a9rootfs.ext3bs=1Mcount=32
2.格式化成ext3文件系统
mkfs.ext3a9rootfs.ext3
3.将文件拷贝到镜像中
sudomkdirtmpfs
sudomount-text3a9rootfs.ext3tmpfs/-oloop
cp-rrootfs/*tmpfs/
sudoumounttmpfs
系统启动运行
完成上述所有步骤之后,就可以启动qemu来模拟vexpress开发板了,命令参数如下:
qemu-system-arm-Mvexpress-a9-m512M-kernel/home/ivan/qemu/linux/arch/arm/boot/zImage-nographic-append"root=/dev/mmcblk0console=ttyAMA0"-sda9rootfs.ext3
从内核启动打印,到命令行提示符出现,激动人心的时刻出现了……
写在后面的话
通过上面的步骤,搭建出来一个最小的qemu+arm开发环境,你可以上面的基础上修改内核,或者增加一些测试程序在单板上运行,甚至使用单板的flash设备。
在此,你可以做纯arm架构的内核开发,或者与架构无关的内核开发,也可以做单板相关的驱动开发。
② RockPI 4A Linux内核下载与编译
本文介绍RockPI 4A单板Debian系统Linux内核的下载和编译方法,为后续介绍RockPI 4A单板Linux内核调试进行抛砖引玉。
一笑神腔、代码下载
Rockpi 4A Debian版本SDK代码下载方法:
代码下载完成后,显示如下瞎册:
kernel 目录下保存Linux内核代码。
build 目录下保存配置和编译脚本。
如果RockPI 4A代码下载失败,提示如下:
解决方法:将下载链接中 https 替换成 git 。
二、内核编译
使用代码里的编译脚本,编译脚本名称: mk-kernel.sh ,位置如下:
注:在脚本 mk-kernel.sh 中有一段代码: source $LOCALPATH/build/board_configs.sh $BOARD ,使用脚本编译时,必须在 build 文件夹同一级目录。
RockPI 4A Linux内核编译方法碰衫如下(使用...省略部分编译输出):
其中: rockpi4a 对应RockPI 4A单板,如果使用其它单板,需要设置不同内容。单板类型可参考 build/board_configs.sh 脚本中 case ${BOARD} in 的选项。例:
编译出来的映像路径:
③ Linux系统下载(超全镜像整理下载)
Linux系统镜像下载的超全整理如下:
一、主流Linux发行版官方镜像站
- Ubuntu:
- 官方镜像站
- 另一官方镜像站
- CentOS:
- 官方镜像状态查询
- Debian:
- 全球镜像站
- 镜像存档
- Fedora:
- 官方镜像站
- BitTorrent下载
- Linux Mint:
- 官方镜像站
- Kali Linux:
- 官方下载页面
二、企业机构及国内开源镜像站
- 网易开源镜像站:
- 镜像站链接
- 阿里云开源镜像:
- 镜像站链接
- 搜狐开源镜像站:
- 镜像站链接
- 首都在线科技股份有限公司:
- 镜像站链接
- 中国科学技术大学镜像站:
- IPv4 + IPv6镜像
- 清华大学镜像站:
- 镜像站链接
三、国内高校开源镜像站
- 电子科技大学:
- Ubuntu镜像
- 上海交通大学:
- IPv4镜像
- IPv6镜像
- 北京交通大学:
- IPv4镜像
- 厦门大学:
- 镜像站链接
- 中山大学:
- 镜像站链接
- 浙江大学:
- 镜像站链接
四、国外开源镜像站
- 卡内基梅隆大学(CMU):
- 镜像站链接
- 麻省理工学院(MIT):
- 镜像站链接
- 哥伦比亚大学:
- 镜像站链接
- 俄勒冈州立大学:
- 镜像站链接
五、特定Linux发行版或组件镜像站
- Kernel镜像站:
- 镜像站链接
- RedHat Enterprise Linux(RHEL)镜像站:
- 镜像站链接
请注意,以上链接可能会随时间发生变化,建议访问时核实链接的有效性。在下载Linux系统镜像时,请确保从官方或可信的镜像站下载,以避免安全风险。
④ centos7 离线升级/在线升级操作系统内核
CentOS作为一款Linux发行版,它基于开放源代码,受到许多服务器使用青睐。在某些情况下,系统内核版本的限制可能会成为问题,如某些软件运行需求更高的内核版本。本文将详细介绍如何实现CentOS7的离线升级和在线升级系统内核。
一、系统环境与内核下载网址
为了确保升级过程顺利,首先需要确保你的CentOS系统环境完整。内核的下载可通过两个主要渠道:阿里云开源软件镜像站(mirrors.aliyun.com/elre...)和elrepo镜像站(elrepo.org/linux/kernel...)。
二、离线升级系统内核
离线升级需要进行一系列步骤,确保过程的安全性和稳定性。首先,查看当前系统版本和内核版本,确保信息准确。接着,通过命令更新yum源仓库。启用ELRepo仓库,为内核升级提供必要的支持。导入ELRepo仓库的公共密钥并安装其yum源。下载指定版本的内核包,此步骤需要先确保导入公共密钥和安装yum源,否则无法下载。安装内核包后,需通过修改GRUB_DEFAULT为0来设置默认启动内核,并生成新的grub配置文件以完成升级。
三、在线升级系统内核
在线升级更为便捷,首先同样启用ELRepo仓库并安装yum源。查看可用的内核版本,根据需求选择最新或长期支持版本进行安装。安装新内核后,同样需要调整GRUB_DEFAULT为0,并生成新的grub配置文件。重启系统后,通过查看当前内核版本确认升级成功。
本文旨在提供一个完整的升级流程,以确保CentOS7系统的内核可以满足所需应用的需求。通过离线或在线升级系统内核,用户可根据实际需求选择最合适的升级方式,确保系统稳定运行。
(来源:cnblogs.com/renshengdez...)
⑤ 【general】linux kernel编译与安装
要编译与安装Linux内核,首先进行环境准备,确保已安装适当的开发工具和环境。接着,下载Linux内核源代码,推荐使用官方或可靠镜像源。
准备内核代码版本5.14,可从Linux Kernel Archives获取。解压并复制当前内核配置文件,利用menuconfig工具进行调整。
安装编译内核所需的依赖包,确保系统具备执行构建所需的软件。解压后,根据需要调整配置选项,如编译目标、模块支持等。
开始编译内核,使用make命令。为了提高编译效率,可添加“-j N”参数,其中N代表使用的并行进程数,评估系统在多处理器环境中的多任务并行执行性能。确保使用相同的内核代码、配置和命令进行编译,以便对比性能。
完成编译后,安装内核模块和内核本身。通常,系统会自动执行此过程。
参考资源:如何编译安装Linux内核 - LightningStar - 博客园,如何编译安装Linux内核-腾讯云开发者社区-腾讯云。