Lichee-pi zero SD 卡多系统启动配置,busybox rootfs,Alpine linux
配置环境 ubuntu 18.04
SD 分区
Ubuntu 打开 GParted 分区工具,分成三区如下:
写入 U-boot
编译 u-boot-2019.10make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero_defconfig make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
生成 u-boot-sunxi-with-spl.bin,写入 SD 分区表空白处,注意设置正确的SD卡设备路径, 例如 /dev/sdb
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/<sdx> bs=1024 seek=8
解压 alpine-uboot-3.10.3-armv7.tar.gz 至 boot 分区
sudo tar xvzf alpine-uboot-3.10.3-armv7.tar.gz -C /media/<user>/<mount path>
解压 alpine-minirootfs-3.10.3-armv7.tar.gz 至 ‘Alpine Linux’ 分区
sudo tar xvzf alpine-minirootfs-3.10.3-armv7.tar.gz -C /media/<user>/<mount path>
修改 "Alpine Linux" 分区目录下 /etc/inittab,使能 getty tty0, 并添加自动登录脚本
cd /media/<user>/<mount path> sudo vi inittab
# /etc/inittab ::sysinit:/sbin/openrc sysinit ::sysinit:/sbin/openrc boot ::wait:/sbin/openrc default # Set up a couple of getty's tty1::respawn:/sbin/getty 38400 tty1 tty2::respawn:/sbin/getty 38400 tty2 tty3::respawn:/sbin/getty 38400 tty3 tty4::respawn:/sbin/getty 38400 tty4 tty5::respawn:/sbin/getty 38400 tty5 tty6::respawn:/sbin/getty 38400 tty6 # Put a getty on the serial port #ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 -n -l /etc/autologin -I "console auto login as root..." # Stuff to do for the 3-finger salute ::ctrlaltdel:/sbin/reboot # Stuff to do before rebooting ::shutdown:/sbin/openrc shutdown
添加 /etc/autologin,
cd /media/<user>/<mount path> sudo vi autologin sudo chmod +x autologin
#!/bin/sh exec /bin/login -f root
5. 写入 buildroot 编译的 rootfs, 输出目录 output\images,rootfs.tar。buildroot 编译参考 “xxxx”
“boot.scr” 文件信息setenv bootargs console=ttyS0,115200 panic=5 console=tty0 rootwait root=/dev/mmcblk0p2 earlyprintk rw load mmc 0:1 0x41000000 zImage load mmc 0:1 0x41800000 sun8i-v3s-licheepi-zero-dock.dtb bootz 0x41000000 - 0x41800000
sudo tar xvf buildroot_rootfs.tar -C /media/<user>/<mount path>
- 拷贝编译好的 zImage 到 boot 目录下
- 移除 extlinux
- 修改 boot/grup/grub.cfg, 添加启动项菜单:
set timeout=3
menuentry "Linux vanilla" {
linux /boot/vmlinuz-vanilla modules=loop,squashfs,sd-mod,usb-storage quiet
initrd /boot/initramfs-vanilla
}
menuentry "Busybox" {
linux /boot/zImage console=ttyS0,115200 panic=5 console=tty0 rootwait root=/dev/mmcblk0p2 earlyprintk rw
}
menuentry "Alpine Linux" {
linux /boot/zImage console=ttyS0,115200 panic=5 console=tty0 rootwait root=/dev/mmcblk0p3 earlyprintk rw
}