0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用TinyVision去手動(dòng)構(gòu)建Linux 6.1+Debian 12鏡像呢?

全志在線 ? 來源:全志在線 ? 2024-03-15 18:16 ? 次閱讀

SyterKit是一個(gè)純裸機(jī)框架,可以用于TinyVision或者v851se/v851s/v853等芯片的開發(fā)板,SyterKit使用CMake作為構(gòu)建系統(tǒng)構(gòu)建,支持多種應(yīng)用與多種外設(shè)驅(qū)動(dòng)。同時(shí)SyterKit也具有啟動(dòng)引導(dǎo)的功能,可以替代U-Boot實(shí)現(xiàn)快速啟動(dòng)。

在開始系統(tǒng)構(gòu)建前需要準(zhǔn)備TinyVision開發(fā)板及如下線材,

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

使用40Gbps數(shù)據(jù)線連接TinyVision開發(fā)板和TypeC-SUB調(diào)試器,如下圖所示:

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

使用兩條Type-C連接TypeC UART調(diào)試器和電腦端,連接完成后即可按照下文步驟構(gòu)建系統(tǒng)。

從零構(gòu)建SyterKit

構(gòu)建 SyterKit 非常簡(jiǎn)單,只需要在 Linux 操作系統(tǒng)中安裝配置環(huán)境即可編譯。SyterKit 需要的軟件包有:

gcc-arm-none-eabi

CMake

對(duì)于常用的 Ubuntu 系統(tǒng),可以通過如下命令安裝:

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

然后新建一個(gè)文件夾存放編譯的輸出文件,并且進(jìn)入這個(gè)文件夾

mkdir build
cd build

然后運(yùn)行命令編譯 SyterKit

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

編譯后的可執(zhí)行文件位于 build/app 中,這里包括 SyterKit 的多種APP可供使用。

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

這里我們使用的是 syter_boot 作為啟動(dòng)引導(dǎo)。進(jìn)入 syter_boot 文件夾,可以看到這些文件

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

由于 TinyVision 是 TF 卡啟動(dòng),所以我們需要用到syter_boot_bin_card.bin

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

編譯Linux-6.1內(nèi)核

由于 Debian 12 配套的內(nèi)核是 Linux 6.1 LTS,所以這里我們選擇構(gòu)建 Linux 6.1 版本內(nèi)核。

搭建編譯環(huán)境

安裝一些必要的安裝包

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

獲取內(nèi)核源碼

內(nèi)核源碼托管在 Github 上,可以直接獲取到,這里使用--depth=1 指定 git 深度為 1 加速下載

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

然后進(jìn)入內(nèi)核文件夾

cd kernel/linux-6.1

配置內(nèi)核選項(xiàng)

應(yīng)用 defconfig

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

進(jìn)入menuconfig配置選項(xiàng)

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

進(jìn)入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

編譯內(nèi)核

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

使用debootstrap

構(gòu)建debian rootfs

下載安裝依賴環(huán)境

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

生成目標(biāo)鏡像,配置環(huán)境,這里我們生成一個(gè) 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) 作為目標(biāo)鏡像,使用清華源來構(gòu)建,輸出到目標(biāo)目錄 rootfs_data 文件夾中。新版本的 debootstrap 只需要運(yùn)行一次即可完成兩次 stage 的操作,相較于老版本方便許多。

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

等待構(gòu)建完成后,使用chroot進(jìn)入到目錄,這里編寫一個(gè)掛載腳本方便掛載使用,新建文件 ch-mount.sh 并寫入以下內(nèi)容:

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

然后賦予腳本執(zhí)行的權(quán)限,執(zhí)行掛載,可以看到進(jìn)入了 debian 的 rootfs

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

配置系統(tǒng)字符集,選擇 en_US 作為默認(rèn)字符集,選擇一個(gè)就可以

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基礎(chǔ)工具

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

設(shè)置本機(jī)入口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

配置網(wǎng)卡

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

配置DNS地址

cat >/etc/resolv.conf <
 

配置分區(qū)

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

配置root密碼

passwd

配置主機(jī)名

echo TinyVision > /etc/hostname

取消掛載chroot

./ch-mount.sh -u rootfs_data/

拷貝rootfs到鏡像中

sudo cp -raf rootfs_data/* rootfs

取消掛載

sudo umount rootfs

打包固件

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

編譯完成 bootloader,內(nèi)核,rootfs 后,還需要打包固件成為可以 dd 寫入的固件,這里我們使用 genimage 工具來生成構(gòu)建。

生成刷機(jī)鏡像

編譯內(nèi)核后,就可以生成sun8i-v851se-tinyvision.dtb和zImage文件,我們把他們拷貝出來。

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

然后將sun8i-v851se-tinyvision.dtb改名為sunxi.dtb,這個(gè)設(shè)備樹名稱是定義在SyterKit源碼中的,如果之前修改了SyterKit的源碼需要修改到對(duì)應(yīng)的名稱,SyterKit會(huì)去讀取這個(gè)設(shè)備樹。

然后編寫一個(gè)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   # 制作鏡像時(shí)genimage將會(huì)用到
git clone https://github.com/pengutronix/genimage.git
cd genimage
./autogen.sh            # 配置生成configure
./configure             # 配置生成makefile
make
sudo make install

編譯后運(yùn)行試一試,這里正常

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

編寫 genimage.cfg 作為打包的配置

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

由于genimage的腳本比較復(fù)雜,所以編寫一個(gè)genimage.sh作為簡(jiǎn)易使用的工具

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

準(zhǔn)備完成,文件如下所示

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

運(yùn)行命令進(jìn)行打包

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

打包完成,可以找到img文件,使用軟件燒錄固件到TF卡上。

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

本文內(nèi)容均轉(zhuǎn)載自https://www.gloomyghost.com/live/20231220.aspx


審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    587

    瀏覽量

    27202
  • 調(diào)試器
    +關(guān)注

    關(guān)注

    1

    文章

    297

    瀏覽量

    23579
  • TF卡
    +關(guān)注

    關(guān)注

    2

    文章

    69

    瀏覽量

    12061
  • Type-C接口
    +關(guān)注

    關(guān)注

    1

    文章

    140

    瀏覽量

    20494

原文標(biāo)題:使用TinyVision手動(dòng)構(gòu)建Linux 6.1 + Debian 12鏡像

文章出處:【微信號(hào):gh_79acfa3aa3e3,微信公眾號(hào):全志在線】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    在基于全志V851se的TinyVision手動(dòng)構(gòu)建 Linux 6.1 + Debian 12 鏡像

    ,所以我們需要用到 syter_boot_bin_card.bin 編譯 Linux-6.1 內(nèi)核 由于 Debian 12 配套的內(nèi)核是 Linux
    發(fā)表于 03-18 10:49

    在全志V851SE開發(fā)板TinyVision上 使用 SyterKit 啟動(dòng) Linux 6.7 主線內(nèi)核

    TinyVision 使用 SyterKit 啟動(dòng) Linux 6.7 主線內(nèi)核 SyterKit SyterKit 是一個(gè)純裸機(jī)框架,用于 TinyVision 或者其他 v851se/v851s
    發(fā)表于 05-20 09:35

    【NanoPi2試用體驗(yàn)】燒寫Debian鏡像手機(jī)電腦VNC登錄(六)

    大體相同。相比手機(jī)VNCviewer,電腦端輸入更方便,屏幕更大。 本期討論: 燒寫Debian系統(tǒng)后正式進(jìn)入Linux學(xué)習(xí),NanoPi2板載WiFi模塊,支持手機(jī)VNC,有時(shí)間拿上它肯德基,點(diǎn)
    發(fā)表于 01-07 14:00

    基于debianlinux如何使用4G網(wǎng)上外網(wǎng)?

    基于debianlinux如何使用4G網(wǎng)上外網(wǎng)?????
    發(fā)表于 01-25 10:07

    如何構(gòu)建一種LINUX下的STM32開發(fā)環(huán)境

    怎樣將Arduino遷移到linux?如何構(gòu)建一種LINUX下的STM32開發(fā)環(huán)境?
    發(fā)表于 12-13 06:25

    Debian8系統(tǒng)的jessie系統(tǒng)鏡像該怎樣制作

    Debian8系統(tǒng)的jessie系統(tǒng)鏡像該怎樣制作?有哪些制作流程?
    發(fā)表于 03-04 06:32

    如何為 risc-v64 芯片制作 Debian 鏡像

    dd if=/dev/zero of=debian.img bs=1G count=16# 此處鏡像大小為16GBsudo cfdisk debian.img # 可創(chuàng)建兩個(gè)分區(qū), 第一個(gè)分區(qū)
    發(fā)表于 08-24 16:42

    昉·星光 2(VisionFive 2)Debian 202308最新鏡像發(fā)布!

    | RVspace 202308鏡像下載地址 :https://debian.starfivetech.com/ 新增功能 支持的SBC:昉·星光 2 v1.2A和v1.3B版 基于Linux內(nèi)核5.15
    發(fā)表于 09-08 14:44

    debian安裝教程

    如果你使用Debian軟件包管理器來管理Linux軟件,應(yīng)該詳細(xì)了解Debian軟件倉庫的原理,這有助于使用Linux命令將讓你更容易管理Debia
    的頭像 發(fā)表于 02-23 09:14 ?1.1w次閱讀

    為VisionFive星光板上創(chuàng)建Debian系統(tǒng)鏡像

    在RISC-V 星光板VisionFive上創(chuàng)建Debian/Linux系統(tǒng)
    發(fā)表于 03-09 20:52 ?747次閱讀
    為VisionFive星光板上創(chuàng)建<b class='flag-5'>Debian</b>系統(tǒng)<b class='flag-5'>鏡像</b>

    鏡像構(gòu)建Dockerfile的介紹

    Dockerfile 是一個(gè)用來構(gòu)建鏡像的文本文件,文本內(nèi)容包含了一條條構(gòu)建鏡像所需的指令和說明。
    的頭像 發(fā)表于 09-06 09:36 ?1034次閱讀

    Armbian 23.02 \Linux 6.1 發(fā)布

    為Arm和RISC-V單板計(jì)算機(jī)提供映像的兩個(gè)最受歡迎的項(xiàng)目發(fā)布了新的更新,Armbian 23.02增加了基于Linux 6.1Debian和Ubuntu映像,DietPi 8.14增加了
    的頭像 發(fā)表于 03-02 15:44 ?2437次閱讀

    linux鏡像制作工具

    自定義的虛擬機(jī)鏡像。下面將介紹幾種常用的Linux鏡像制作工具,并詳細(xì)解釋它們的特點(diǎn)和使用方法。 一、Debian Live-build Debia
    的頭像 發(fā)表于 11-23 09:56 ?1789次閱讀

    基于Debian的Sparky Linux 7.2的亮點(diǎn)

    Linux kernel 6.1 LTS 提供支持,Sparky Linux 7.2采用 LXQt 1.2.0 和 KDE Plasma 5.27.5,現(xiàn)在提供 ARMHF 和 ARM64
    的頭像 發(fā)表于 12-14 10:13 ?483次閱讀
    基于<b class='flag-5'>Debian</b>的Sparky <b class='flag-5'>Linux</b> 7.2的亮點(diǎn)

    手動(dòng)構(gòu)建Docker鏡像的方法

    不推薦使用docker commit命令,而應(yīng)該使用更靈活、更強(qiáng)大的dockerfile來構(gòu)建docker鏡像。
    的頭像 發(fā)表于 08-05 15:30 ?284次閱讀
    <b class='flag-5'>手動(dòng)</b><b class='flag-5'>構(gòu)建</b>Docker<b class='flag-5'>鏡像</b>的方法