Ubuntu16.04 安装 qemu 运行 Linux 3.16

环境说明:
虚拟机:VMware 12
系统:16.04
配置:1核1G

1. 更换阿里源

sudo vim /etc/apt/sources.list

将全部内容替换:

deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main

deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main

deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe

deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe

保存退出,然后更新配置:

sudo apt-get update

2. 安装qemu

安装qemu:

sudo apt install qemu qemu-system-arm

安装桥接工具:

sudo apt-get install uml-utilities
sudo apt-get install bridge-utils

3. 安装交叉编译工具链

sudo apt install gcc-arm-linux-gnueabi

4. 下载编译内核

下载:

wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.tar.xz

解压:

xz -d linux-3.16.82.tar.xz
tar -xvf linux-3.16.82.tar

交叉编译:

cd linux-3.16.82
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
make vexpress_defconfig
make zImage
make modules
make dtbs

把 bin 文件都放在一起:

mkdir bin
cp arch/arm/boot/zImage bin/
cp arch/arm/boot/dts/*ca9.dtb bin/
cp .config bin/

5. 制作根文件系统

5.1. 下载、编译和安装 busybox

下载:

wget https://busybox.net/downloads/busybox-1.31.0.tar.bz2

解压:

在这里插入代码片

编译:

cd busybox-1.31.0
make defconfig
make CROSS_COMPILE=arm-linux-gnueabimake install CROSS_COMPILE=arm-linux-gnueabi-

5.2. 制作根文件系统

创建 rootfs 目录:

mkdir rootfs
mkdir rootfs/lib

拷贝 busybox 命令:

cp _install/* -r rootfs/

从工具链中拷贝运行库到 lib 下:

sudo cp -P /usr/arm-linux-gnueabi/lib/* rootfs/lib/

创建 4 个 tty 终端设备(c 代表字符设备, 4 是主设备号, 123~4 是次设备号):

mkdir -p rootfs/dev
sudo mknod rootfs/dev/tty1 c 4 1
sudo mknod rootfs/dev/tty2 c 4 2
sudo mknod rootfs/dev/tty3 c 4 3
sudo mknod rootfs/dev/tty4 c 4 4

生成镜像:

dd if=/dev/zero of=rootfs.ext3 bs=1M count=32

格式化为 ext3 文件系统映像:

mkfs.ext3 rootfs.ext3

先挂载刚才的镜像,然后将文件拷贝到镜像中:

mkdir tmpfs
sudo mount -t ext3 rootfs.ext3 tmpfs/ -o loop
sudo cp -r rootfs/* tmpfs/
sudo umount tmpfs

这个 rootfs.ext3 就是制作的文件系统,把它移动到 linux-3.16.82 目录。

6. 启动qemu

进入内核目录 linux-3.16.82,执行如下命令:

sudo qemu-system-arm -M vexpress-a9 -m 512M -dtb bin/vexpress-v2p-ca9.dtb -kernel bin/zImage -nographic -append "root=/dev/mmcblk0 rw console=ttyAMA0" -sd rootfs.ext3 -net nic,vlan=0 -net tap,vlan=0,ifname=tap0

启动后默认没有配置网卡,配置一下:

ifconfig eth0 192.168.1.111

发布了272 篇原创文章 · 获赞 732 · 访问量 33万+

猜你喜欢

转载自blog.csdn.net/Mculover666/article/details/105251880