2023年8月3日发(作者:)
Linux内核编译⽣成bzImage的详细⽅法步骤及错误解决什么是bzImagebzImage诚如其名是big image的意思,不是压缩的image。 在⽹络中,不少服务器采⽤的是Linux系统。为了进⼀步提⾼服务器的性能,可能需要根据特定的硬件及需求重新编译Linux内核。编译Linux 内核,需要根据规定的步骤进⾏,编译内核过程中涉及到⼏个重要的⽂件。编译过RedHat Linux内核的⼈对其中的、vmlinuz、印象可能⽐较深刻,因为编译内核过程中涉及到这些⽂件的建⽴等操作。那么这些⽂件是怎么产⽣的呢?以vmlinuz为例。 vmlinuz是可引导的、压缩的内核。“vm”代表“Virtual Memory”。Linux ⽀持虚拟内存,不像⽼的操作系统⽐如DOS有640KB内存的限制。Linux能够使⽤硬盘空间作为虚拟内存,因此得名“vm”。vmlinuz是可执⾏ 的Linux内核,它位于/boot/vmlinuz,它⼀般是⼀个软链接。 vmlinuz的建⽴有两种⽅式。⼀是编译内核时通过“make zImage”创建,⼿动拷贝到/boot⽬录下⾯。zImage适⽤于⼩内核的情况,它的存在是为了向后的兼容性。 ⼆是内核编译时通过命令make bzImage创建,然后⼿动拷贝⾄/boot⽬录下。bzImage是压缩的内核映像,需要注意,bzImage不是⽤bzip2压缩的,bzImage中的bz容易引起误解,bz表⽰“big zImage”。 bzImage中的b是“big”意思。 zImage(vmlinuz)和bzImage(vmlinuz)都是⽤gzip压缩的。它们不仅是⼀个压缩⽂件,⽽且在这两个⽂件的开头部分内嵌有 gzip解压缩代码。所以你不能⽤gunzip 或 gzip –dc解包vmlinuz。 内核⽂件中包含⼀个微型的gzip⽤于解压缩内核并引导它。两者的不同之处在于,⽼的zImage解压缩内核到低端内存(第⼀个 640K),bzImage解压缩内核到⾼端内存(1M以上)。如果内核⽐较⼩,那么可以采⽤zImage或bzImage之⼀,两种⽅式引导的系统运⾏ 时是相同的。⼤的内核采⽤bzImage,不能采⽤zImage。vmlinux是未压缩的内核,vmlinuz是vmlinux的压缩⽂件。环境准备1. Ubuntu镜像2. 安装虚拟机并3. linux内核虚拟机联⽹刚安装的虚拟机及映像可能会产⽣连不上⽹的情况。解决办法:1. 进⼊VMware Workstation,编辑->虚拟⽹络编辑器,将VMnet8设置为NAT模式2. 虚拟机->设置,保证⽹络适配器配置也为NAT模式winscp的使⽤WinSCP 是⼀个 Windows 环境下使⽤的 SSH 的开源图形化 SFTP 客户端。同时⽀持 SCP 协议。它的主要功能是在本地与远程计算机间安全地复制⽂件,并且可以直接编辑⽂件。下载并安装。若初始连不上虚拟机,则检查远程虚拟机是否安装并开启了ssh服务(下述3.1)搭建编译环境1. 进⼊root:su2. 进⼊⽤户所在⽂件夹:cd /home/siqi3. 常规配置及⽹络测试1. 虚拟机安装ssh服务//检测是否已安装ssh服务,输⼊以下命令#ssh localhost//出现以下提⽰则为未安装: ssh: connect to host localhost port 22: Connection refused (ssh:连接到主机本地主机端⼝22:连接被拒绝)#apt-get install openssh-server//启动服务#/etc/init.d/ssh start//检查服务是否启动成功#ps -e|grep ssh2. winscp连接到虚拟机输⼊主机名为虚拟机ip地址,端⼝号默认22,输⼊⽤户名和密码4. 在虚拟机新建kernel⽂件夹,并将linux内核解压到当前⽂件夹#cd kernel#tar -zxvf linux-5.11-rc15. 将内核中的默认x86配置到根⽬录#cd linux-5.11-rc1/arch/x86/configs#cp x86_64_deconfig /home/siqi/kernel/linux-5.11-rc1/.config#cd ../../../6. x86编译前准备:如果不执⾏以下指令,会有“command not found”的错误提⽰#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-dev7. 基于⽂本选单的图形化内核配置:make menuconfig,会在源码的顶层⽬录下⾯⽣成⼀个.config⽂件可能出现的错误有1. ⼀些安装包没有提前安装上;(根据错误提⽰依次安装)2. 终端窗⼝太⼩导致错误;正常执⾏会出现下⾯的菜单框:选择64-bit kernel并点击save保存若没有这⼀步直接进⾏下⼀步,则会出现⽆尽的选择情况(需要不断按回车)8. 最后执⾏make bzImage -j8即可。9. 编译完成。找到编译⽣成的bzImage,拷贝出kernel#cd linux-5.11-rc1/arch/x86/boot/#ls会看到bzImage在这⼉啦#cp bzImage /home/siqi/10. 附:arm交叉编译命令make distclean ARCH-arm64make mrproper ARCH-arm64make dtbs ARCH-arm64cp arch/arm64/configs/defconfig .configcp /home/siqi/ft2000plus_defconfig .configmake menuconfig ARCH-arm64make Image ARCH-arm64 -j8 CROSS_COMPILE-aarch64-none-linux-gnu-make uImage ARCH-arm64 -j8 CROSS_COMPILE-aarch64-none-linux-gnu-
发布者:admin,转转请注明出处:http://www.yc00.com/web/1691037765a492379.html
评论列表(0条)