将Debian安装在秋月的SoC基板(白色盒子)上

我已经能够在售价为1,000日元的带有无线模块的SoC基板+白色塑料外壳上成功启动Debian “bullseye”,将此记录为备忘。

作为战略,可以如下所述。

    1. 使用honeylab的设定,在Buildroot下创建启动Linux的SD卡镜像

 

    将创建的SD卡镜像的rootfs替换为由debootstrap创建的Debian文件群

使用Buildroot创建可以启动Linux的SD卡镜像。

我們將使用 honeylab 先生在他的文章中介紹的方法。github.com/bakueikozo/buildroot_am3352_aki

我正在使用amd64的Ubuntu22.04进行作业。

cd ~/
sudo apt -y install build-essential bc libssl-dev unzip ncurses-dev
git clone git@github.com:bakueikozo/buildroot_am3352_aki.git
cd buildroot_am3352_aki
make akiduki_am3352_defconfig
make menuconfig

在menuconfig中,将rootfs的文件系统大小增大。

Filesystem images -> exact size -> 1200M

由于SD卡映像的大小太小,所以需要编辑board/akiduki_am3352/genimage.cfg文件,并将大小从512MB改为约1536MB。

vi board/akiduki_am3352/genimage.cfg

如果你选择不使用Debian而是持续使用Buildroot创建的镜像,那么在设置密码、启动SSH服务器以及进行DHCP配置等时,参考原文章的说明非常方便。

如果您想更改Linux内核的选项,

make linux-menuconfig

请使用。

如果能做到这一步,就执行make命令。

make

完成后,将在output/images目录下生成SD卡镜像文件sdcard.img。

将其替换为Debian。

使用debootstrap在rootfs中创建文件系统。

使用debootstrap命令与qemu一起进行安装和执行。

cd ~/
sudo apt-get install debootstrap qemu-user-static
sudo qemu-debootstrap --verbose --arch=armhf --variant=buildd bullseye rootfs-debian-armhf http://ftp.jp.debian.org/debian/

进入已创建的目录,执行 chroot 命令,并继续进行包的安装等进程。

sudo chroot ./rootfs-debian-armhf /bin/bash
apt update
apt upgrade -y
apt install -y ifupdown iproute2 iputils-ping net-tools dnsutils sudo vim screen tcpdump ca-certificates locales locales-all avahi-daemon kmod fdisk e2fsprogs curl wget openssh-server udev
echo "Asia/Tokyo" > /etc/timezone
cp /usr/share/zoneinfo/Japan /etc/localtime
locale-gen en_US.UTF-8
locale-gen ja_JP.UTF-8
ln -s /lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@ttyS0.service
apt clean

我们将创建一个用于SSH登录的用户。

adduser debian
usermod -aG sudo debian

创建/etc/fstab等文件。

# fstabの作成
cat - << EOS > /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/vda2 during curtin installation
/dev/mmcblk0p2 / ext4 defaults 0 1
EOS


# ネットワークインターフェースの設定
cat - << EOS > /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
EOS


# ホスト名の設定
echo "akiduki" > /etc/hostname


# hostsファイルの作成
cat - << EOS > /etc/hosts
127.0.0.1 localhost
127.0.1.1 akiduki

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
EOS


# aptのsourceを追加
cat - << EOS > /etc/apt/sources.list
deb http://ftp.jp.debian.org/debian bullseye main

deb http://security.debian.org/ bullseye-security main
deb-src http://security.debian.org/ bullseye-security main
EOS


# leds-gpio カーネルモジュールをロード
echo "leds-gpio" > /etc/modules-load.d/leds-gpio.conf


# Wi-SUNモジュールの安定動作対応
cat - << EOS > /etc/rc.local
#!/bin/sh

echo 0 > /sys/class/leds/wisun_reset/brightness
echo 7 > /sys/class/gpio/export
echo high > /sys/class/gpio/gpio7/direction
echo 1 > /sys/class/leds/wisun_reset/brightness

exit 0
EOS

chmod a+x /etc/rc.local

完成作业后,我会退出chroot环境。

exit

从 Buildroot 获取内核模块。

因为我想要使用/sys/class/leds/wisun_reset,所以我会带来整套的内核模块。

sudo rsync -av ~/buildroot_am3352_aki/output/target/lib/modules/ ~/rootfs-debian-armhf/lib/modules/

更换SD卡映像中的rootfs

我们将在退出 chroot 状态之后执行以下操作。

通过losetup命令创建的回环设备不一定是 /dev/loop0,如果不同,请使用实际创建的回环设备文件名来代替。

cp ~/buildroot_am3352_aki/output/images/sdcard.img ~/debian.img
sudo losetup -f ~/debian.img -P --show
sudo mkfs.ext4 -L rootfs -F /dev/loop0p2
sudo mkdir /mnt/rootfs
sudo mount /dev/loop0p2 /mnt/rootfs
sudo rsync -av ~/rootfs-debian-armhf/ /mnt/rootfs/
sudo umount /mnt/rootfs
sync; sync; sync;
sudo losetup -d /dev/loop0

用这个方法,已经将 ~/debian.img 的 rootfs 替换为了 Debian。

只需将其烧录到SD卡并启动,就可以了。
由DHCP获得IP后,可以使用SSH登录。

因为已安装avahi-daemon,所以可以通过主机名在同一网络上进行名称解析。

ssh debian@akiduki.local

扩大SD卡分区大小

扩大分区大小。

sudo fdisk /dev/mmcblk0 <<EOF
p
d
2
n
p
2
32769

p
w
EOF

文件系统也会扩大。

sudo /sbin/resize2fs /dev/mmcblk0p2

我尝试使用Wi-SUN。

首先,对Wi-SUN模块进行复位。

echo "0" | sudo tee /sys/class/leds/wisun_reset/brightness
sleep 1
echo "1" | sudo tee /sys/class/leds/wisun_reset/brightness

由于/dev/ttyS1串口与Wi-SUN模块连接,因此通过波特率115200进行连接。

sudo screen /dev/ttyS1 115200

执行 SKINFO 命令应该会收到响应,以确认操作是否成功。

SKINFO
EINFO FE80:0000:0000:0000:1207:XXXX:FEA8:XXXX 1007XXXXFEA8XXXX 21 FFFF 0 
OK
广告
将在 10 秒后关闭
bannerAds