本文适用于SSD20X移植Ubuntu系统。
IDO-SOM2D0X基于SigmaStar SSD201/202 SoC的超小SOM模组,双核A7 1.2GHz主频,1080P视频解码,支持MIPI/RGB显示接口,支持双以太网,支持SDIO/USB/SPI/I2C/UART/DMIC/I2S,集成音频Codec,支持麦克风阵列;模组集成了WIFI和NAND Flash;支持Linux系统;高性能,低成本;批量供货保障,主要应用于智能楼宇室内机,智能家居中控,86盒家庭中控,电梯楼层显示器,IP网络广播设备等。
核心板在小而精致的空间上集成了SPI Flash/WIFI芯片,还有RTC电路,SSD201/202全部功能引脚引出,只需轻松扩展底板接口,省心又省力。
更多详情资料请查看:触智能 觉未来- 深圳触觉智能科技有限公司 (industio.cn)
获取资源
下载Ubuntu base arm 根文件系统:
http://cdimage.ubuntu.com/ubuntu-base/releases/20.04/release/
这里我们选硬浮点。
将下载好的ubuntu-base-20.04.1-base-armhf.tar.gz,拷贝至虚拟机并解压。
安装qemu-user-static工具
在虚拟机Ubuntu环境下安装:
sudo apt-get install qemu-user-static
将qemu-user-static拷贝解压出来的根文件系统中:
sudo cp /usr/bin/qemu-arm-static /home/xxxx/ssd20x/ubuntu_base/usr/bin/
修改Ubuntu base 根文件系统的配置
这里我们提前修改配置,为后边安装工具做准备
修改tmp目录权限为 777,在apt update的时候会在tmp目录下创建一些临时文件,所以要给tmp目录写权限
#chmod 777 ssd20x/ubuntu_base/tmp
修改resolv.conf文件,添加dns
#vim ssd20x/ubuntu_base/etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
将base文件系统挂载到虚拟机下
-
编写挂载脚本
在解压目录的上一级目录下新建一个ms.sh文件,文件内容如下,并赋予文件777的权限
#!/bin/bash
mnt ()
{
echo "MOUNTING"
sudo mount -t proc /proc ${2}proc
sudo mount -t sysfs /sys ${2}sys
sudo mount -o bind /dev ${2}dev
sudo mount -o bind /dev/pts ${2}dev/pts
sudo chroot ${2}
}
umnt ()
{
echo "UNMOUNTING"
sudo umount ${2}proc
sudo umount ${2}sys
sudo umount ${2}dev/pts
sudo umount ${2}dev
}
if [ "$1" = "-m" ] && [ -n "$2" ];
then
mnt $1 $2
echo "mnt -m pwd"
elif [ "$1" = "-u" ] && [ -n "$2" ];
then
umnt $1 $2
echo "mnt -u pwd"
else
echo ""
echo "Either 1'st, 2'nd or bothparameters were missing"
echo ""
echo "1'st parameter can be one ofthese: -m(mount) OR -u(umount)"
echo "2'nd parameter is the full pathof rootfs directory(with trailing '/')"
echo ""
echo "For example: ch-mount -m/media/sdcard/"
echo ""
echo 1st parameter : ${1}
echo 2nd parameter : ${2}
fi
-
挂载
sudo ./ms.sh -m home/xxxx/ssd20x/ubuntu_base/
-
卸载
sudo ./ms.sh -u home/xxxx/ssd20x/ubuntu_base/
模拟root也可以使用chroot命令替代
安装软件
挂载后即可进入该系统,为系统安装软件。
apt update
apt install usbutils
apt install sudo
apt install language-pack-en-base
apt install ssh
apt install net-tools
apt install ethtool
apt install ifupdown
apt install iputils-ping
apt install rsyslog
apt install htop
apt install vi
apt install dhcpcd5
apt install samba samba-common
apt install wpasupplicant
apt install jq
apt install alsa-base
apt install minicom
用户配置
-
设置用户密码
passwd root
-
设置主机名称
echo "industio" > /etc/hostname
echo "127.0.0.1 localhost" >> /etc/hosts
echo "127.0.1.1 industio" >> /etc/hosts
配置串口
需要安装ssh后才有/lib/systemd/system/getty@.service:
vi /lib/systemd/system/getty@.service
修改为ttyS0:
串口问题导致:进入系统无法调试
报以下错误
[ TIME ] Timed out waiting for device dev-ttyS0.device. [DEPEND] Dependency failed for Serial Getty on ttyS0.
https://dev.t-firefly.com/thread-4903-1-4.html
解决办法参考以上链接
# cp /lib/systemd/system/serial-getty\@.service /lib/systemd/system/serial-getty\@ttyS0.service
# ln -s /lib/systemd/system/serial-getty\@ttyS0.service /etc/systemd/system/getty.target.wants/
到此输入 exit 退出挂载界面,并卸载文件系统
sudo ./ms.sh -u home/xxxx/ssd20x/ubuntu_base/
压缩文件系统:
cd ubuntu_base/
sudo tar -cvf rootfs.tar ./*
将文件系统打包并挂载到SD卡:
#vi make_sd_rootfs.sh
#!/bin/sh
PWD=$(pwd)
images_dir=${PWD}/images_for_mksdcard
if [ "$1" == "" ]; then
echo "!!!!!!!!!!!! ./make_sd_rootfs.sh /dev/sdb !!!!!!!!!!!"
exit 0
fi
sfdisk ${1}
mkfs.ext3 -F -j ${1}1
mkdir tmp_rootfs
mount -t ext3 ${1}1 tmp_rootfs
tar -xvf ./rootfs.tar -C tmp_rootfs
umount tmp_rootfs
rm -rf tmp_rootfs
把SD卡接入到ubuntu中,首先要把SD umount掉,再执行:
#这里根据你的挂载路径来
umount /media/xxxx/xxxx
sudo ./make_sd_rootfs.sh /dev/sdb