So kompilieren und führen Sie einen ARMLinux-Kernel aus
1. Versuchszweck
Durch dieses Experiment erfahren Sie, wie Sie eine ARM-Version des Kernel-Images kompilieren und auf der virtuellen QEMU-Maschine ausführen.
2. Experimentelle Schritte
Um den Entwicklungsprozess zu beschleunigen, stellt ARM die VersatileExpress-Entwicklungsplattform bereit. Kunden können Produktprototypen auf Basis der VersatileExpress-Plattform entwickeln. Als einzelner Lernender ist es nicht erforderlich, die VersatileExpress-Entwicklungsplattform oder andere ARM-Entwicklungsboards zu kaufen. Sie können QEMU verwenden, um die Entwicklungsplattform Linux zu simulieren und Arm zu entwickeln, wodurch auch der Lernzweck erreicht werden kann. (1) Planungstools
Laden Sie das Codepaket unten herunter.
(2) Minimales Dateisystem kompilieren
Kompilieren Sie zunächst manuell ein minimales Dateisystem mit Busybox.
$ cd busybox $ export ARCH=arm $ export CROSS_COMPILE=arm-linux-gnueabi- $ make menuconfig
Nachdem Sie menuconfig eingegeben haben, konfigurieren Sie es für die statische Kompilierung.
Busybox Settings ---> Build Options ---> [*] Build BusyBox as a static binary (no shared libs)
Nachdem make&&makeinstall kompiliert wurde, gibt es im Stammverzeichnis der Busybox ein Verzeichnis „_install“, in dem einige Befehlssätze gespeichert sind, die für das kompilierte Dateisystem erforderlich sind.
Kopieren Sie das Verzeichnis _install in das Verzeichnis linux-4.0. Gehen Sie in das Verzeichnis _install und erstellen Sie zunächst die Verzeichnisse etc, dev und andere.
#mkdir etc #mkdir dev #mkdir mnt #mkdir –p etc/init.d/
Erstellen Sie eine neue rcS-Datei im Verzeichnis _install/etc/init.d/ und schreiben Sie den folgenden Inhalt.
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
Das Ändern der Datei _install/etc/init.d/rcS erfordert ausführbare Berechtigungen, die mit dem Befehl chmod erreicht werden können, z. B. „chmod+x_install/etc/init.d/rcS“.
Erstellen Sie eine neue fstab-Datei im Verzeichnis _install/etc und schreiben Sie den folgenden Inhalt.
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
Erstellen Sie eine neue inittab-Datei im Verzeichnis _install/etc und schreiben Sie den folgenden Inhalt.
::sysinit:/etc/init.d/rcS ::respawn:-/bin/sh ::askfirst:-/bin/sh ::ctrlaltdel:/bin/umount -a –r
Erstellen Sie den folgenden Geräteknoten im Verzeichnis _install/dev
Linux-Entwicklungsarm, dann sind Root-Berechtigungen erforderlich.
$ cd _install/dev/ $ sudo mknod console c 5 1 $ sudo mknod null c 1 3
(3) Kernel kompilieren
$ 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相同。
Das obige ist der detaillierte Inhalt vonZweck des Experiments zur Entwicklung von Produktprototypen für vielseitige virtuelle Maschinen: Lernen Sie durch dieses Experiment, wie man kompiliert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!