Qemu 运行 arm64-linux 内核镜像

1.arm64-linux

1.1.download

wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.tar.xz
tar -xvf linux-6.6.tar.xz

1.2.cross-compile

安装交叉编译工具

apt install gcc-aarch64-linux-gnu

使用menuconfig勾选RAM disks支持,并调整大小为: 65536 kb:

make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 O=../out menuconfig -j32
     Device Drivers > Block devices
          <*>   RAM block device support
               (16)    Default number of RAM disks (NEW)
               (65536) Default RAM disk size (kbytes)

说明:

  • O=../out  表示编译的临时文件输出到out目录,防止和源码混在一起

交叉编译arm64-linux内核,编译完毕后,对应目录会有生成的内核镜像:

make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 O=../out -j32
file ../out/arch/arm64/boot/Image 

2.busybox

2.1.download

wget https://busybox.net/downloads/busybox-1.35.0.tar.bz2
tar -xvf busybox-1.35.0.tar.bz2 

2.2.cross-compile

使用menuconfig修改为静态链接:

make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 menuconfig -j32 
    Settings
	   [*] Build static binary (no shared libs)

编译BusyBox可执行文件,并输出到_install目录:

make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 install -j32
file _install/bin/busybox

3.initrd

制作initrd步骤略多。这里make_initrd.sh就是用来自动制作initrd的脚本,内容:

#!/bin/bash

MOUNT_DIR=mnt
CURR_DIR=`pwd`

rm initrd.ext4
dd if=/dev/zero of=initrd.ext4 bs=1M count=32
mkfs.ext4 initrd.ext4

mkdir -p $MOUNT_DIR
mount initrd.ext4 $MOUNT_DIR
cp -arf busybox-1.35.0/_install/* $MOUNT_DIR

cd $MOUNT_DIR
mkdir -p etc dev mnt proc sys tmp mnt etc/init.d/

echo "proc /proc proc defaults 0 0" > etc/fstab
echo "tmpfs /tmp tmpfs defaults 0 0" >> etc/fstab
echo "sysfs /sys sysfs defaults 0 0" >> etc/fstab

echo "#!/bin/sh" > etc/init.d/rcS
echo "mount -a" >> etc/init.d/rcS
echo "mount -o remount,rw /" >> etc/init.d/rcS
echo "echo -e \"Welcome to ARM64 Linux\"" >> etc/init.d/rcS
chmod 755 etc/init.d/rcS

echo "::sysinit:/etc/init.d/rcS" > etc/inittab
echo "::respawn:-/bin/sh" >> etc/inittab
echo "::askfirst:-/bin/sh" >> etc/inittab
chmod 755 etc/inittab

cd dev
mknod console c 5 1
mknod null c 1 3
mknod tty1 c 4 1

cd $CURR_DIR
umount $MOUNT_DIR
echo "make initrd ok!"

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值