0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用TinyVision去手动构建Linux 6.1+Debian 12镜像呢?

全志在线 来源:全志在线 2024-03-15 18:16 次阅读

SyterKit是一个纯裸机框架,可以用于TinyVision或者v851se/v851s/v853等芯片的开发板,SyterKit使用CMake作为构建系统构建,支持多种应用与多种外设驱动。同时SyterKit也具有启动引导的功能,可以替代U-Boot实现快速启动。

在开始系统构建前需要准备TinyVision开发板及如下线材,

9c2ac974-e2b4-11ee-a297-92fbcf53809c.jpg

使用40Gbps数据线连接TinyVision开发板和TypeC-SUB调试器,如下图所示:

9c8ef804-e2b4-11ee-a297-92fbcf53809c.jpg

使用两条Type-C连接TypeC UART调试器和电脑端,连接完成后即可按照下文步骤构建系统。

从零构建SyterKit

构建 SyterKit 非常简单,只需要在 Linux 操作系统中安装配置环境即可编译。SyterKit 需要的软件包有:

gcc-arm-none-eabi

CMake

对于常用的 Ubuntu 系统,可以通过如下命令安装:

sudo apt-get update
sudo apt-get install gcc-arm-none-eabi cmake build-essential -y

然后新建一个文件夹存放编译的输出文件,并且进入这个文件夹

mkdir build
cd build

然后运行命令编译 SyterKit

cmake ..
make
9cba82ee-e2b4-11ee-a297-92fbcf53809c.png   

编译后的可执行文件位于 build/app 中,这里包括 SyterKit 的多种APP可供使用。

9d16687a-e2b4-11ee-a297-92fbcf53809c.png

这里我们使用的是 syter_boot 作为启动引导。进入 syter_boot 文件夹,可以看到这些文件

9da4e348-e2b4-11ee-a297-92fbcf53809c.png

由于 TinyVision 是 TF 卡启动,所以我们需要用到syter_boot_bin_card.bin

9e1e3af4-e2b4-11ee-a297-92fbcf53809c.png    

编译Linux-6.1内核

由于 Debian 12 配套的内核是 Linux 6.1 LTS,所以这里我们选择构建 Linux 6.1 版本内核。

搭建编译环境

安装一些必要的安装包

sudo apt-get update && sudo apt-get install -y gcc-arm-none-eabi gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf build-essential libncurses5-dev zlib1g-dev gawk flex bison quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip lsof

获取内核源码

内核源码托管在 Github 上,可以直接获取到,这里使用--depth=1 指定 git 深度为 1 加速下载

git clone http://github.com/YuzukiHD/TinyVision --depth=1

然后进入内核文件夹

cd kernel/linux-6.1

配置内核选项

应用 defconfig

CROSS_COMPILE=arm-linux-gnueabihf- make ARCH=arm tinyvision_defconfig

进入menuconfig配置选项

CROSS_COMPILE=arm-linux-gnueabihf- make ARCH=arm menuconfig

进入General Setup,

选中Control Group Support,

9e4c146a-e2b4-11ee-a297-92fbcf53809c.png9ef7e89e-e2b4-11ee-a297-92fbcf53809c.png

前往File Systems,

找到FUSE support,

9f054278-e2b4-11ee-a297-92fbcf53809c.png

前往File Systems,

找到Inotify support for userspace,

9f19f1aa-e2b4-11ee-a297-92fbcf53809c.png

编译内核

CROSS_COMPILE=arm-linux-gnueabihf- make ARCH=arm

使用debootstrap

构建debian rootfs

下载安装依赖环境

sudo apt install debootstrap qemu qemu-user-static qemu-system qemu-utils qemu-system-misc binfmt-support dpkg-cross debian-ports-archive-keyring --no-install-recommends

生成目标镜像,配置环境,这里我们生成一个 1024M 的镜像文件用于存放 rootfs

dd if=/dev/zero of=rootfs.img bs=1M count=1024
mkdir rootfs
mkfs.ext4 rootfs.img
sudo mount rootfs.img rootfs

这里我们选择最新的 debian12 (bookwarm) 作为目标镜像,使用清华源来构建,输出到目标目录 rootfs_data 文件夹中。新版本的 debootstrap 只需要运行一次即可完成两次 stage 的操作,相较于老版本方便许多。

sudo debootstrap --arch=armhf bookworm rootfs_data https://mirrors.tuna.tsinghua.edu.cn/debian/
9f57e104-e2b4-11ee-a297-92fbcf53809c.png   

等待构建完成后,使用chroot进入到目录,这里编写一个挂载脚本方便挂载使用,新建文件 ch-mount.sh 并写入以下内容:

9fa6b2f2-e2b4-11ee-a297-92fbcf53809c.png

然后赋予脚本执行的权限,执行挂载,可以看到进入了 debian 的 rootfs

9fce320a-e2b4-11ee-a297-92fbcf53809c.png

配置系统字符集,选择 en_US 作为默认字符集,选择一个就可以

export LC_ALL=en_US.UTF-8
apt-get install locales
dpkg-reconfigure locales
a001e686-e2b4-11ee-a297-92fbcf53809c.png       a080f0ac-e2b4-11ee-a297-92fbcf53809c.png  

安装Linux基础工具

apt install sudo ssh openssh-server net-tools ethtool wireless-tools network-manager iputils-ping rsyslog alsa-utils bash-completion gnupg busybox kmod wget git curl --no-install-recommends

安装编译工具

apt install build-essential

安装Linux nerd工具

apt install vim nano neofetch

设置本机入口ip地址

cat < /etc/hosts
127.0.0.1    localhost
127.0.1.1    $HOST
::1       localhost ip6-localhost ip6-loopback
ff02::1     ip6-allnodes
ff02::2     ip6-allrouters
EOF

配置网卡

mkdir -p /etc/network
cat >/etc/network/interfaces <
 

配置DNS地址

cat >/etc/resolv.conf <
 

配置分区

cat >/etc/fstab <         
/dev/mmcblk0p1 /boot  vfat  defaults        0    0
/dev/mmcblk0p2 /    ext4  defaults,noatime    0    1
EOF

配置root密码

passwd

配置主机名

echo TinyVision > /etc/hostname

取消挂载chroot

./ch-mount.sh -u rootfs_data/

拷贝rootfs到镜像中

sudo cp -raf rootfs_data/* rootfs

取消挂载

sudo umount rootfs

打包固件

完成以上步骤debian rootfs就制作好了。

编译完成 bootloader,内核,rootfs 后,还需要打包固件成为可以 dd 写入的固件,这里我们使用 genimage 工具来生成构建。

生成刷机镜像

编译内核后,就可以生成sun8i-v851se-tinyvision.dtb和zImage文件,我们把他们拷贝出来。

a0d530d6-e2b4-11ee-a297-92fbcf53809c.png

然后将sun8i-v851se-tinyvision.dtb改名为sunxi.dtb,这个设备树名称是定义在SyterKit源码中的,如果之前修改了SyterKit的源码需要修改到对应的名称,SyterKit会去读取这个设备树。

然后编写一个config.txt作为配置文件

[configs]
bootargs=root=/dev/mmcblk0p2 earlyprintk=sunxi-uart,0x02500000 loglevel=2 initcall_debug=0 rootwait console=ttyS0 init=/sbin/init
mac_addr=4a:13f9:79:75
bootdelay=3

安装genimage作为打包工具。

sudo apt-get install libconfuse-dev #安装genimage依赖库
sudo apt-get install genext2fs   # 制作镜像时genimage将会用到
git clone https://github.com/pengutronix/genimage.git
cd genimage
./autogen.sh            # 配置生成configure
./configure             # 配置生成makefile
make
sudo make install

编译后运行试一试,这里正常

a106427a-e2b4-11ee-a297-92fbcf53809c.png

编写 genimage.cfg 作为打包的配置

a14f8b92-e2b4-11ee-a297-92fbcf53809c.png

由于genimage的脚本比较复杂,所以编写一个genimage.sh作为简易使用的工具

a17f2c3a-e2b4-11ee-a297-92fbcf53809c.png

准备完成,文件如下所示

a1a0a072-e2b4-11ee-a297-92fbcf53809c.png

运行命令进行打包

chmod 777 genimage.sh
./genimage.sh -c genimage.cfg
a0d530d6-e2b4-11ee-a297-92fbcf53809c.png  

打包完成,可以找到img文件,使用软件烧录固件到TF卡上。

a1f41c48-e2b4-11ee-a297-92fbcf53809c.png

本文内容均转载自https://www.gloomyghost.com/live/20231220.aspx


审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux系统
    +关注

    关注

    4

    文章

    567

    浏览量

    26923
  • 调试器
    +关注

    关注

    1

    文章

    288

    浏览量

    23412
  • TF卡
    +关注

    关注

    2

    文章

    60

    浏览量

    11920
  • Type-C接口
    +关注

    关注

    1

    文章

    133

    浏览量

    20179

原文标题:使用TinyVision手动构建Linux 6.1 + Debian 12镜像

文章出处:【微信号:gh_79acfa3aa3e3,微信公众号:全志在线】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    在基于全志V851se的TinyVision手动构建 Linux 6.1 + Debian 12 镜像

    ,所以我们需要用到 syter_boot_bin_card.bin 编译 Linux-6.1 内核 由于 Debian 12 配套的内核是 Linux
    发表于 03-18 10:49

    【NanoPi2试用体验】烧写Debian镜像手机电脑VNC登录(六)

    大体相同。相比手机VNCviewer,电脑端输入更方便,屏幕更大。 本期讨论: 烧写Debian系统后正式进入Linux学习,NanoPi2板载WiFi模块,支持手机VNC,有时间拿上它肯德基,点
    发表于 01-07 14:00

    基于debianlinux如何使用4G网上外网?

    基于debianlinux如何使用4G网上外网?????
    发表于 01-25 10:07

    RockChip linuxdebian平台的使用

    `瑞芯微VS-RK3399板卡Debian 系统支持的双屏异显功能本文主要介绍了RockChip linuxdebian 平台上支持的异显音频的使用说明,下面主要介绍双屏异显和双屏异声.在
    发表于 09-10 09:55

    如何构建一种LINUX下的STM32开发环境

    怎样将Arduino迁移到linux?如何构建一种LINUX下的STM32开发环境
    发表于 12-13 06:25

    Debian8系统的jessie系统镜像该怎样制作

    Debian8系统的jessie系统镜像该怎样制作?有哪些制作流程?
    发表于 03-04 06:32

    如何为 risc-v64 芯片制作 Debian 镜像

    dd if=/dev/zero of=debian.img bs=1G count=16# 此处镜像大小为16GBsudo cfdisk debian.img # 可创建两个分区, 第一个分区
    发表于 08-24 16:42

    昉·星光 2(VisionFive 2)Debian 202308最新镜像发布!

    | RVspace 202308镜像下载地址 :https://debian.starfivetech.com/ 新增功能 支持的SBC:昉·星光 2 v1.2A和v1.3B版 基于Linux内核5.15
    发表于 09-08 14:44

    debian安装教程

    如果你使用Debian软件包管理器来管理Linux软件,应该详细了解Debian软件仓库的原理,这有助于使用Linux命令将让你更容易管理Debia
    的头像 发表于 02-23 09:14 1w次阅读

    为VisionFive星光板上创建Debian系统镜像

    在RISC-V 星光板VisionFive上创建Debian/Linux系统
    发表于 03-09 20:52 674次阅读
    为VisionFive星光板上创建<b class='flag-5'>Debian</b>系统<b class='flag-5'>镜像</b>

    镜像构建Dockerfile的介绍

    Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
    的头像 发表于 09-06 09:36 812次阅读

    Armbian 23.02 \Linux 6.1 发布

    为Arm和RISC-V单板计算机提供映像的两个最受欢迎的项目发布了新的更新,Armbian 23.02增加了基于Linux 6.1Debian和Ubuntu映像,DietPi 8.14增加了
    的头像 发表于 03-02 15:44 2102次阅读

    最全教程来啦!在RISC-V星光板上创建Debian系统镜像

    首先你需要一款专为Linux开发者打造的全球第一代RISC-V星光开发板芯片原厂技术支持!高性价比!极易上手!数量有限!往下看,干货满满~如何在StarFive星光板上创建Debian系统镜像
    的头像 发表于 04-22 13:43 1609次阅读
    最全教程来啦!在RISC-V星光板上创建<b class='flag-5'>Debian</b>系统<b class='flag-5'>镜像</b>

    linux镜像制作工具

    自定义的虚拟机镜像。下面将介绍几种常用的Linux镜像制作工具,并详细解释它们的特点和使用方法。 一、Debian Live-build Debia
    的头像 发表于 11-23 09:56 825次阅读

    基于Debian的Sparky Linux 7.2的亮点

    Linux kernel 6.1 LTS 提供支持,Sparky Linux 7.2采用 LXQt 1.2.0 和 KDE Plasma 5.27.5,现在提供 ARMHF 和 ARM64
    的头像 发表于 12-14 10:13 255次阅读
    基于<b class='flag-5'>Debian</b>的Sparky <b class='flag-5'>Linux</b> 7.2的亮点