一、准备工具  

1.1 安装相关工具    

sudo apt-get install qemu libncurses5-dev gcc-arm-linux-gnueabi build-essential

1.2 下载kernel(linux-4.0)与busybox(1.24)源码

https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/

https://busybox.net/downloads/busybox-1.24.0.tar.bz2

二、编译最小文件系统

2.1 解压busybox

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi- make menuconfig 选中静态编译
|
Busybox Settings --->
|
[*] Build BusyBox as a static binary (no shared libs) make install cd _install
mkdir etc dev mnt
mkdir -p etc/init.d/
cd etc/init.d/ vim rcS
mkdir -p /proc
mkdir -p /tmp
mkdir -p /sys
mkdir -p /mnt
/bin/mount -a
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s chmod a+x rcS cd ..
vim fstab
proc /proc proc defaults
tmpfs /tmp tmpfs defaults
sysfs /sys sysfs defaults
tmpfs /dev tmpfs defaults
debugfs /sys/kernel/debug defaults defaults vim inittab
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r cd ..
cd dev
sudo mknod console c
sudo mknod null c 3 拷贝交叉工具链的库到根文件系统
cp /opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/arm-linux-gnueabi/libc/lib/*so* lib/ -d
cp /opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/arm-linux-gnueabi/libc/usr/lib/*so* usr/lib -d

生成ext3镜像文件并挂载
  sudo dd if=/dev/zero of=a9rootfs.ext3 bs=1M count=32

mkfs.ext3 path/a9rootfs.ext3
mkdir tmpfs
sudo mount -t ext3 a9rootfs.ext3 tmpfs -o loop
sudo cp -r rootfs/*tmpfs
sudo umount tmpfs 启动参数要添加-sd选项
进入系统执行mount -t ext3 /dev/mmcblk0 /mnt/

2.2 linux编译配置

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
make vexpress_defconfig make menuconfig
General setup --->
[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
(_install) Initramfs source file(s) () Default kernel command string Kernel Features --->
Memory split (3G/1G user/kernel split) --->
(X) 3G/1G user/kernel split make bzImage -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
make dtbs
启动qemu
qemu-system-arm -M vexpress-a9 -smp -m 1024M -kernel arch/arm/boot/zImage -append "rdinit=/linuxrc console=ttyAMA0 loglevel=8" -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic

 

最新文章

  1. offset求结构体成员的偏移量
  2. MVC:从客户端中检测到有潜在危险的 Request.Form 值 的解决方法
  3. C语言混乱代码大赛
  4. LintCode Count 1 in Binary
  5. smarty中如何统计数组的个数?
  6. UESTC 923 稳住GCD DP + GCD
  7. ulua slua 下载地址
  8. find & rm
  9. mmsql 查询每个分类的前3条数据
  10. 『奇葩问题集锦』Cannot find module 'webpack/lib/node/NodeTemplatePlugin'
  11. 启动程序的c++方法
  12. AspNetPager常用属性及一些样式
  13. Redis字符串类型相关操作命令
  14. 关于下载SAE日志签名认证的方法——PHP版
  15. js把页面的table标签导出为csv
  16. Python--Virtualenv简明教程(转载https://www.jianshu.com/p/08c657bd34f1)
  17. python面向对象三大特性-多态
  18. Java ——基础语法
  19. linux命令(37):paste,合并两个文件,对应行为一行
  20. Python 基础 json 与pickle

热门文章

  1. PyQt5入门
  2. Flink原理(三)——Task(任务)、Operator Chain(算子链)和Slot(资源)
  3. 使用Cloudera Manager搭建Kudu环境
  4. 数据库类型对应Java语言类型表
  5. 本地安装部署ActiveCollab
  6. 利用Python openpyxl操作Excel
  7. ACM算法模板 · 一些常用的算法模板-模板合集(打比赛专用)
  8. SourceTree&Git -01 -代码拉取推送流程 -提交时的相关注意事项
  9. python开发笔记-python-numpy
  10. LG5325 【模板】Min_25筛