最近龙芯蜂鸟板&先锋派发布了新世界(ABI2)试用版,恰逢Alpine之前发布了支持Loongarch64的v3.21版本,于是产生了移植一个Alpine rootfs的想法。
做法
需要下载的文件:
- 网盘里面的buildroot
rootfs.img
- Alpine MINI ROOT FILESYSTEM loongarch64版本
配置Alpine
需要一个loongarch64的新世界Linux运行环境,可以是安装了buildroot的开发板、龙芯PC、模拟器等。
在该环境中解压alpine-minirootfs文件,可以得到一个根目录文件夹,假设目录是
/tmp/alpine
,运行以下命令chroot到minirootfs:cd /tmp/alpine mount -o bind /proc proc/ mount -o bind /dev dev/ mount -o bind /sys sys/ chroot . /bin/sh
配置时间:
使用
date -s
配置当前时间,或者开启ntpd
服务。不设置时间将导致访问https失败。
执行一些安装步骤:
echo "nameserver 8.8.8.8" > /etc/resolv.conf apk update apk add alpine-conf setup-hostname setup-interface
添加启动服务:
apk add acpid openrc busybox-openrc busybox-extras busybox-mdev-openrc rc-update add acpid default rc-update add bootmisc boot rc-update add crond default rc-update add devfs sysinit rc-update add dmesg sysinit rc-update add hostname boot rc-update add hwclock boot rc-update add hwdrivers sysinit rc-update add killprocs shutdown rc-update add mdev sysinit rc-update add modules boot rc-update add mount-ro shutdown rc-update add networking boot rc-update add savecache shutdown rc-update add seedrng boot rc-update add swap boot
修改密码:
passwd
配置tty:
echo ttyS0 > /etc/securetty ttyS0
修改/etc/inittab文件,删除tty1到tty6开始的行,这一步一定要做,否则串口启动会卡死在找ttyX上。
确保getty这一行:
ttyS0::respawn:/sbin/getty -L 115200 ttyS0 vt100
。退出设置:
exit umount proc umount dev/ umount sys/ cd / umount /tmp/alpine
打包镜像
挂载buildroot
rootfs.img
:由于
rootfs.img
是压缩过的,需要先解压。mv rootfs.img rootfs.img.gz gunzip rootfs.img.gz mkdir /tmp/alpine-mnt sudo mount -o loop,offset=1048576 rootfs.img /tmp/alpine-mnt
将
/tmp/alpine-mnt
里面的文件全删掉,只保留/boot
,然后将alpine minirootfs的文件全复制到这里。重新压缩
rootfs.img
:sudo umount /tmp/alpine-mnt gzip rootfs.img mv rootfs.img.gz rootfs.img
完成,可以通过u-boot来刷入rootfs了。
参考资料
- https://gist.github.com/lidgnulinux/4b40d72d358528e76c6f9be4ad6cbaa5
- https://wiki.luckfox.com/zh/Luckfox-Pico/Luckfox-Pico-Alpine-Linux-2/
后记
由于Alpine已经合并请求main/gcc: enable 128-bit vectors (LSX) by default for loongarch64
,默认开启LSX,因此Alpine 3.21
将是第一个也是最后一个支持2k300
的版本,且行且珍惜。
说些什么吧!