Alpine Linux на AllWinner H3 SoC

Alpine Linux — некоммерческий Linux дистрибутив общего назначения, предназначенный для использования опытными пользователями, ценящими безопасность, простоту и эффективность. Девиз проекта — «Small. Simple» Secure.» Основан на musl и BusyBox.

Маленький размер дистрибутива и скромные требования к железу. Alpine Linux ориентирован на использование во встраиваемых или серверных системах, поэтому включает в себя только самые необходимые компоненты.

По умолчанию, Alpine Linux во время запуска полностью [загружается в оперативную память].В качестве системы инициализации Alpine Linux использует OpenRC

Если проект не очень большой, то его можно собирать и отлаживать прямо на целевой платформе.
Покажу, как собрать на базе ядра (4.19.20-sunxi) от armbian.

uname -a


root@orangepipc:~# uname -a
Linux orangepipc 4.19.20-sunxi #5.75 SMP Sat Feb 9 19:02:47 CET 2019 armv7l armv7l armv7l GNU/Linux

Ставим пакет squashfs-tools.

apt install squashfs-tools

Скачаем и распакуем v3.9 Alpine uboot архив:

wget http://dl-2.alpinelinux.org/alpine/latest-stable/releases/armhf/alpine-uboot-3.9.2-armhf.tar.gz
mkdir alpineuboot
tar -xvzf alpine-uboot-3.9.2-armhf.tar.gz -C alpineuboot

распакуем initramfs-vanilla

mkdir initramfs-temp
cd initramfs-temp
gunzip -c /root/alpineuboot/boot/initramfs-vanilla | cpio -i


root@orangepipc:~/initramfs-temp# gunzip -c /root/alpineuboot/boot/initramfs-vanilla | cpio -i
33314 blocks

подменяем папку modules и пакуем:

rm -rf lib/modules/*
cp -rp /lib/modules/ lib/
mkdir -p /root/source/boot/dtbs
find . | cpio -H newc -o | gzip -9 > /root/source/boot/initramfs-sunxi-new
cd /root/source/boot/
mkimage -n initramfs-sunxi-new -A arm -O linux -T ramdisk -C none -d initramfs-sunxi-new initramfs-sunxi


Image Name: initramfs-sunxi-new
Created: Tue Mar 5 10:08:21 2019
Image Type: ARM Linux RAMDisk Image (uncompressed)
Data Size: 20644534 Bytes = 20160.68 KiB = 19.69 MiB
Load Address: 00000000
Entry Point: 00000000

rm initramfs-sunxi-new

собираем и пакуем modloop-sunxi

cd
mkdir -p  squashfs-temp/modules/
cp -rp /lib/modules/ squashfs-temp/
cp -rp /lib/firmware squashfs-temp/modules/
mksquashfs squashfs-temp/ /root/source/boot/modloop-sunxi -b 1048576

копируем в папку source пакеты alpine, дерево устройств, ядро:

mkdir -p /root/source/apks/armhf 
cp -rp /root/alpineuboot/apks/ /root/source/
cp -rp /boot/dtb/sun8i-h3-orangepi-pc.dtb /root/source/boot/dtbs/sun8i-h3-orangepi-pc.dtb
cp -rp /boot/vmlinuz-4.19.20-sunxi  /root/source/boot/vmlinuz-4.19.20-sunxi

создаём файл extlinux.conf

mkdir -p /root/source/boot/extlinux/
nano /root/source/boot/extlinux/extlinux.conf

вставляем:

TIMEOUT 20
PROMPT 1
DEFAULT Alpine Linux

LABEL Alpine Linux
MENU LABEL Alpine Linux
KERNEL /boot/vmlinuz-4.19.20-sunxi
INITRD /boot/initramfs-sunxi
DEVICETREEDIR /boot/dtbs
APPEND bootargs earlyprintk /boot/vmlinuz-4.19.20-sunxi modules=loop,squashfs,sd-mod,usb-storage modloop=/boot/modloop-sunxi console=${console}

Осталось скопировать папку source на флеш карту. Для этого карту надо подготовить, разметить, отфарматировать, записать u-boot например:
Сборка загрузчика UBOOT

Можно поступить проще. Вставляем карту с образом armbian для вашей платы в  USB-Reader на OrangePI,
карта определилась как /dev/sda
форматируем, монтируем карту и копируем папку source

mkfs.ext4 /dev/sda1
mount /dev/sda1 /mnt/
cp -R /root/source/* /mnt
umount -l /mnt
sync

всё, можно загрузится с этой карты
login: root

Welcome to Alpine Linux 3.9
Kernel 4.19.20-sunxi on an armv7l (/dev/ttyS0)

localhost login:


localhost:~# cat /etc/issue
Welcome to Alpine Linux 3.9
Kernel \r on an \m (\l)

localhost:~# df -h
Filesystem                Size      Used Available Use% Mounted on
devtmpfs                 10.0M         0     10.0M   0% /dev
shm                     500.3M         0    500.3M   0% /dev/shm
/dev/mmcblk0p1          862.0M     65.6M    735.7M   8% /media/mmcblk0p1
tmpfs                   500.3M      7.3M    493.0M   1% /
tmpfs                   100.1M     48.0K    100.0M   0% /run
/dev/loop0               28.0M     28.0M         0 100% /.modloop

настройка системы команда:

setup-alpine
lbu commit -d
 3738   9 мес   Alpine Linux
Популярное