Bagaimana untuk menyusun dan menjalankan kernel ARMLinux
1. Tujuan percubaan
Melalui percubaan ini, pelajari cara menyusun versi ARM imej kernel dan jalankannya pada mesin maya QEMU.
2. Langkah percubaan
Untuk mempercepatkan proses pembangunan, ARM menyediakan platform pembangunan VersatileExpress. Pelanggan boleh membangunkan prototaip produk berdasarkan platform VersatileExpress. Sebagai pelajar individu, tidak perlu membeli platform pembangunan VersatileExpress atau papan pembangunan ARM lain Anda boleh menggunakan QEMU untuk mensimulasikan platform pembangunanlinux dan membangunkan lengan, yang juga boleh mencapai tujuan pembelajaran.
(1) Alat Perancang
Muat turun pakej kod di bawah.
(2) Susun sistem fail minimum
Pertama, susun sistem fail minimum secara manual dengan kotak sibuk.
$ cd busybox $ export ARCH=arm $ export CROSS_COMPILE=arm-linux-gnueabi- $ make menuconfig
Selepas memasukkan menuconfig, konfigurasikannya kepada kompilasi statik.
Busybox Settings ---> Build Options ---> [*] Build BusyBox as a static binary (no shared libs)
Selepas make&&makeinstall disusun, akan ada direktori "_install" dalam direktori root busybox, yang menyimpan beberapa set arahan yang diperlukan oleh sistem fail yang disusun.
Salin direktori _install ke direktori linux-4.0. Langkah ke dalam direktori _install dan mula-mula buat dll, dev dan direktori lain.
#mkdir etc #mkdir dev #mkdir mnt #mkdir –p etc/init.d/
Buat fail rcS baharu dalam direktori _install/etc/init.d/ dan tulis kandungan berikut.
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
Menukar fail _install/etc/init.d/rcS memerlukan kebenaran boleh laku, yang boleh dicapai dengan menggunakan arahan chmod, seperti "chmod+x_install/etc/init.d/rcS".
Buat fail fstab baharu dalam direktori _install/etc dan tulis kandungan berikut.
proc /proc proc defaults 0 0 tmpfs /tmp tmpfs defaults 0 0 sysfs /sys sysfs defaults 0 0 tmpfs /dev tmpfs defaults 0 0 debugfs /sys/kernel/debug debugfs defaults 0 0
Buat fail inittab baharu dalam direktori _install/etc dan tulis kandungan berikut.
::sysinit:/etc/init.d/rcS ::respawn:-/bin/sh ::askfirst:-/bin/sh ::ctrlaltdel:/bin/umount -a –r
Buat nod peranti berikut dalam direktori _install/dev Linux development arm, kemudian kebenaran root diperlukan.
$ cd _install/dev/ $ sudo mknod console c 5 1 $ sudo mknod null c 1 3
(3) Susun kernel
$ cd linux-4.0 $ export ARCH=arm $ export CROSS_COMPILE=arm-linux-gnueabi- $ make vexpress_defconfig $ make menuconfig
配置initramfs,在initramfssourcefile中填入_install,并把Defaultkernelcommandstring清空。
General setup ---> [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support (_install) Initramfs source file(s) Boot options --> ()Default kernel command string
配置memorysplit为“3G/1Guser/kernelsplit”,并打开高档显存。
Kernel Features ---> Memory split (3G/1G user/kernel split) ---> [ *] High Memory Support
开始编译内核。
$ make bzImage –j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- $ make dtbs
(4)运行QEMU虚拟机
运行QEMU虚拟机来模拟4核Cortex-A9的VersatileExpress开发平台。
$ qemu-system-arm -M vexpress-a9 -smp 4 -m 200M -kernel arch/arm/boot/zImage -append "rdinit=/linuxrc console=ttyAMA0 loglevel=8" -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic
运行结果与实验3相同。
Atas ialah kandungan terperinci Tujuan percubaan pembangunan prototaip produk mesin maya serba boleh: belajar cara menyusun melalui percubaan ini. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!