国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于 RK3588 構(gòu)建 Ubuntu 22.04 根文件系統(tǒng)

這篇具有很好參考價(jià)值的文章主要介紹了基于 RK3588 構(gòu)建 Ubuntu 22.04 根文件系統(tǒng)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、環(huán)境準(zhǔn)備

以下內(nèi)容在 Rockchip 的 Linux SDK 目錄下完成,請(qǐng)先解壓 Linux SDK。

1.1 下載 Ubuntu Base

Ubuntu-Base 是Ubuntu官方構(gòu)建的ubuntu最小文件系統(tǒng),基礎(chǔ)包大小通常只有幾十兆,可以很方便的個(gè)性化定制嵌入式環(huán)境。使用北京外國(guó)語(yǔ)大學(xué)鏡像站加速下載,注意選擇根據(jù)開(kāi)發(fā)板架構(gòu)選擇arm64或其他架構(gòu)。

wget https://mirrors.bfsu.edu.cn/ubuntu-cdimage/ubuntu-base/releases/22.04.2/release/ubuntu-base-22.04.2-base-arm64.tar.gz

1.2 安裝依賴軟件

# 安裝依賴軟件
sudo apt-get install git ssh make gcc libssl-dev liblz4-tool  expect g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib unzip device-tree-compiler ncurses-dev  python-is-python3 python-dev-is-python3 -y

1.3 解壓根文件系統(tǒng)

# 創(chuàng)建一個(gè)文件夾存放根文件系統(tǒng)
mkdir ubuntu_rootfs
# 解壓到文件夾
sudo tar -xvf ubuntu-base-22.04-base-arm64.tar.gz -C ubuntu_rootfs/

1.4 配置根文件系統(tǒng)

  1. 解壓完成后,需要配置根文件系統(tǒng)的網(wǎng)絡(luò)、軟件源以及仿真開(kāi)發(fā)環(huán)境。
# 配置網(wǎng)絡(luò),復(fù)制本機(jī) resolv.conf 文件
sudo cp /etc/resolv.conf ubuntu_rootfs/etc/resolv.conf
sudo echo "nameserver 8.8.8.8" >> ubuntu_rootfs/etc/resolv.conf
sudo echo "nameserver 114.114.114.114" >> ubuntu_rootfs/etc/resolv.conf
  1. 更換軟件源,加快安裝軟件速度,這里選擇北京外國(guó)語(yǔ)大學(xué)鏡像站,注意 Arm 版本的鏡像為 ubuntu-ports。
# 編輯根文件系統(tǒng)中的軟件源配置文件
sudo vim ./ubuntu_rootfs/etc/apt/sources.list

以下是 Ubuntu 22.04 版本的鏡像,請(qǐng)注意刪除根文件系統(tǒng) ./ubuntu_rootfs/etc/apt/sources.list 文件中原有的內(nèi)容。

# 默認(rèn)注釋了源碼鏡像以提高 apt update 速度,如有需要可自行取消注釋
deb http://mirrors.bfsu.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse
# deb-src http://mirrors.bfsu.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse
deb http://mirrors.bfsu.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse
# deb-src http://mirrors.bfsu.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse
deb http://mirrors.bfsu.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse
# deb-src http://mirrors.bfsu.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse

# deb http://mirrors.bfsu.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse
# # deb-src http://mirrors.bfsu.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse

deb http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted universe multiverse
# deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted universe multiverse

# 預(yù)發(fā)布軟件源,不建議啟用
# deb http://mirrors.bfsu.edu.cn/ubuntu-ports/ jammy-proposed main restricted universe multiverse
# # deb-src http://mirrors.bfsu.edu.cn/ubuntu-ports/ jammy-proposed main restricted universe multiverse
  1. 配置仿真開(kāi)發(fā)板運(yùn)行環(huán)境

X86 架構(gòu)下的Ubuntu 系統(tǒng)默認(rèn)不支持Arm架構(gòu),可以通過(guò)安裝 qemu-user-static 實(shí)現(xiàn)仿真運(yùn)行,從而構(gòu)建 ubuntu 文件系統(tǒng)。

# 拷貝 qemu-aarch64-static 到 ubuntu_rootfs/usr/bin/ 目錄下。
sudo cp /usr/bin/qemu-aarch64-static ubuntu_rootfs/usr/bin/

1.5 掛載根文件系統(tǒng)

首先編寫掛載腳本 mount.sh,用于掛載根文件系統(tǒng)運(yùn)行所需要的設(shè)備和目錄。

#!/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
elif [ "$1" == "-u" ] && [ -n "$2" ];
then
	umnt $1 $2
else
	echo ""
	echo "Either 1'st, 2'nd or both parameters were missing"
	echo ""
	echo "1'st parameter can be one of these: -m(mount) OR -u(umount)"
	echo "2'nd parameter is the full path of rootfs directory(with trailing '/')"
	echo ""
	echo "For example: ch-mount -m /media/sdcard/"
	echo ""
	echo 1st parameter : ${1}
	echo 2nd parameter : ${2}
fi

保存退出后,給腳本增加執(zhí)行權(quán)限,并掛載。

# 增加腳本執(zhí)行權(quán)限
sudo chmod +x mount.sh
# 掛載文件系統(tǒng)
./mount.sh -m ubuntu_rootfs/
# 進(jìn)入根文件系統(tǒng)
sudo chroot ubuntu_rootfs/

退出根文件系統(tǒng)后,需要卸載文件系統(tǒng),可用以下命令。

# 卸載文件系統(tǒng)
./mount.sh -u ubuntu_rootfs/

二、構(gòu)建根文件系統(tǒng)

2.1 為根文件系統(tǒng)安裝必要軟件

# 更新軟件
apt update
apt upgrade -y
# 必要工具
apt install vim bash-completion net-tools iputils-ping ifupdown ethtool ssh rsync udev htop rsyslog curl openssh-server apt-utils dialog nfs-common psmisc language-pack-en-base sudo kmod apt-transport-https -y

以下內(nèi)容可選安裝

# 網(wǎng)絡(luò)、Wi-Fi & 藍(lán)牙
apt install bluetooth* bluez* blueman* wireless-tools network-manager -y
# 開(kāi)發(fā)工具
apt install gcc g++ make cmake ninja-build build-essential ffmpeg libopencv-dev libv4l-dev v4l-utils yavta -y
# OpenGL
apt install mesa-utils libgl1-mesa-dev -y
#OpenCL
apt install ocl-icd-* opencl-headers clinfo -y
#Vulkan
apt install mesa-* libwayland-dev libxrandr-dev libvulkan1 mesa-vulkan-drivers vulkan-tools  libvulkan-dev  -y
# GStreamer
apt install gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-ugly gstreamer1.0-plugins-good   gstreamer1.0-libav gstreamer1.0-tools gstreamer1.0-alsa gstreamer1.0-plugins-base-apps gstreamer1.0-opencv  -y
# Qt6
apt install libqt6widgets6 libqt6websockets6-dev libqt6websockets6 libqt6webchannel6 libqt6waylandclient6 libqt6uitools6  libqt6sql6-sqlite libqt6sql6 libqt6serialport6 libqt6multimedia6 libqt6multimediawidgets6 libqt6core5compat6 libqt6concurrent6 libqt6core6  qt6-wayland-dev qt6-wayland qt6-wayland-dev-tools qt6-image-formats-plugins libqt6concurrent6 libqt6opengl6 libqt6openglwidgets6 qt6-tools-dev qt6-multimedia-dev qt6-tools-dev-tools qt6-qpa-plugins qt6-l10n-tools qt6-image-formats-plugins qt6-base-dev-tools linguist-qt6 libqt6serialport6-dev -y
# ntfs exfat
apt install exfat* ntfs-3g -y
# 輸入法
apt install ibus-pinyin ibus-sunpinyin -y
# 視頻播放
apt install libdvdnav4 ubuntu-restricted-extras vlc -y
# Eigen
apt install libeigen3-dev -y
# xkb
apt install libxkbcommon-dev -y

2.2 安裝和配置桌面環(huán)境

# 安裝 GNOME 最小桌面環(huán)境
apt install --no-install-recommends ubuntu-desktop -y
# 設(shè)置開(kāi)機(jī)默認(rèn)切換到圖形界面
systemctl set-default graphical.target
# 安裝時(shí)區(qū)
apt install locales tzdata
# 時(shí)區(qū)選擇
dpkg-reconfigure tzdata
# Asia/Shanghai

# 勾選英文/中文環(huán)境
dpkg-reconfigure locales
# en_US.UTF-8 UTF-8
# zh_CN.UTF-8 UTF-8

2.3 修改root用戶密碼,添加新用戶

# 修改 root 密碼
passwd root
# 添加新用戶并設(shè)置密碼
adduser m1

修改 /etc/sudoers 文件,用于控制哪些用戶可以以超級(jí)管理員(root)的身份執(zhí)行特定的命令。

# 編輯 /etc/sudoers 
vim /etc/sudoers

添加以下內(nèi)容

m1      ALL=(ALL:ALL) ALL

添加完成后

基于 RK3588 構(gòu)建 Ubuntu 22.04 根文件系統(tǒng),ubuntu,linux,運(yùn)維

2.4 設(shè)置主機(jī)名和主機(jī)解析

# 主機(jī)名
echo "RK3588" > /etc/hostname
# 主機(jī) IP
echo "127.0.0.1 localhost" >> /etc/hosts
echo "127.0.0.1 RK3588" >> /etc/hosts
echo "127.0.0.1 localhost RK3588" >> /etc/hosts

2.5 配置網(wǎng)卡

Network-Manager 服務(wù)會(huì)自動(dòng)配置網(wǎng)卡,但是其默認(rèn)配置文件將 Ethernet 加入了黑名單,會(huì)導(dǎo)致 Ubuntu 提示 unmanned。

# 編輯文件
vim /usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf
# 文件內(nèi)容修改為
[keyfile]
unmanaged-devices=*,except:type:ethernet,except:type:wifi,except:type:gsm,except:type:cdma

RK3588開(kāi)發(fā)板有兩塊網(wǎng)卡,因此將兩塊網(wǎng)卡默認(rèn)配置為自動(dòng)DHCP獲取。

# 網(wǎng)卡0
echo "auto eth0" > /etc/network/interfaces.d/eth0
echo "iface eth0 inet dhcp" >> /etc/network/interfaces.d/eth0
# 網(wǎng)卡1
echo "auto eth1" > /etc/network/interfaces.d/eth1
echo "iface eth1 inet dhcp" >> /etc/network/interfaces.d/eth1

在實(shí)際測(cè)試中網(wǎng)口必須接入網(wǎng)線系統(tǒng)才能正常啟動(dòng),就是在不聯(lián)網(wǎng)的情況下,每次開(kāi)機(jī)都要等待很久,卡在網(wǎng)絡(luò)連接上5分鐘。

修改下面這個(gè)文件
vim /lib/systemd/system/networking.service

將里面的TimeoutStartSec=5min 修改為:

TimeoutStartSec=5sec

2.6 設(shè)置開(kāi)機(jī)免密登錄到圖形界面

修改 LightDM 登錄管理器

# 修改
vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
# 添加下面的內(nèi)容
greeter-show-manual-login=true #手動(dòng)輸入登陸系統(tǒng)的用戶名和密碼
all-guest=false #不允許guest登錄

修改 gdm-autologin 的PAM認(rèn)證配置,可以允許root賬戶進(jìn)行自動(dòng)登錄。

vim /etc/pam.d/gdm-autologin
# 注釋掉下面這行
# auth   required        pam_succeed_if.so user != root quiet_success

修改 gdm-password的PAM認(rèn)證配置,可以允許root賬戶進(jìn)行自動(dòng)登錄。

vim /etc/pam.d/gdm-password
# 注釋掉下面這行
# auth   required        pam_succeed_if.so user != root quiet_success

配置檢查當(dāng)前終端是否可用

vim /root/.profile
# 添加下面的內(nèi)容,替換掉 mesg n || true 這一行
tty -s && mesg n || true

修改GDM3的配置文件

vim /etc/gdm3/custom.conf
# 添加下面的內(nèi)容,AutomaticLogin即自動(dòng)登錄的賬戶名
[daemon]
AutomaticLoginEnable=true # 開(kāi)啟自動(dòng)登錄功能。
AutomaticLogin=root # 自動(dòng)登錄的賬戶名為root。
TimedLoginEnable=true # 開(kāi)啟定時(shí)登錄功能。
TimedLogin=user # 定時(shí)登錄的賬戶名為root。
TimedLoginDelay=10 # 定時(shí)登錄前等待10秒鐘。

2.7 禁用系統(tǒng)休眠

# 設(shè)置禁止休眠
systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
# 查看休眠狀態(tài)
systemctl status sleep.target

2.8 安裝開(kāi)發(fā)板驅(qū)動(dòng)

Wi-Fi、藍(lán)牙、CH341串口驅(qū)動(dòng)等需要先通過(guò) kernel 編譯成驅(qū)動(dòng)模塊。

# 在SDK根目錄下執(zhí)行命令,生成驅(qū)動(dòng)文件
./build.sh modules

根據(jù)需要安裝開(kāi)發(fā)板驅(qū)動(dòng)和其他配置文件,可使用 mk-rootfs-ubuntu.sh 自動(dòng)執(zhí)行,請(qǐng)注意該腳本需要按需要修改。

# 執(zhí)行腳本
sudo ./mk-rootfs-ubuntu.sh

2.9 其他配置修改

# 驅(qū)動(dòng)自動(dòng)加載,修改init.d下的配置文件
# 設(shè)置系統(tǒng)默認(rèn)壁紙
xrandr left
# 設(shè)置系統(tǒng)自動(dòng)橫屏
# 設(shè)置 vim 默認(rèn)配置 .vimrc
# 設(shè)置 ssh 允許 root 遠(yuǎn)程登錄 .sshdconfig

# 安裝配置管理工具
sudo apt-get install x11-xserver-utils dconf-editor dbus-x11 -y
gsettings set org.gnome.desktop.screensaver lock-enabled false
gsettings set org.gnome.desktop.session idle-delay 60
gsettings set org.gnome.desktop.screensaver lock-delay 5
gsettings set org.gnome.settings-daemon.plugins.xrandr rotation 'right'

三、打包根文件系統(tǒng)鏡像

3.1 打包鏡像

使用 mk-image.sh 腳本打包

# 打包
sudo ./mk-image.sh

mk-image.sh 內(nèi)容如下:

#!/bin/bash -e # 使用bash解釋器,并開(kāi)啟錯(cuò)誤檢查模式

TARGET_ROOTFS_DIR=./ubuntu_rootfs # 定義目標(biāo)根文件系統(tǒng)目錄路徑
ROOTFSIMAGE=ubuntu-rootfs.img # 定義根文件系統(tǒng)鏡像文件名
EXTRA_SIZE_MB=300 # 定義額外的磁盤空間大小
IMAGE_SIZE_MB=$(( $(sudo du -sh -m ${TARGET_ROOTFS_DIR} | cut -f1) + ${EXTRA_SIZE_MB} )) # 計(jì)算根文件系統(tǒng)鏡像文件大小

echo Making rootfs! # 輸出提示信息

if [ -e ${ROOTFSIMAGE} ]; then # 如果根文件系統(tǒng)鏡像文件已經(jīng)存在,則刪除
rm ${ROOTFSIMAGE}
fi

sudo ./post-build.sh ${TARGET_ROOTFS_DIR} # 運(yùn)行post-build.sh腳本,完成根文件系統(tǒng)的后處理工作

dd if=/dev/zero of=${ROOTFSIMAGE} bs=1M count=0 seek=${IMAGE_SIZE_MB} # 創(chuàng)建指定大小的空白鏡像文件

sudo mkfs.ext4 -d ${TARGET_ROOTFS_DIR} ${ROOTFSIMAGE} # 在指定目錄下創(chuàng)建ext4文件系統(tǒng),并將其寫入到鏡像文件中

echo Rootfs Image: ${ROOTFSIMAGE} # 輸出根文件系統(tǒng)鏡像文件名

post-build.sh 內(nèi)容如下:

#!/bin/bash -e

TARGET_DIR=$1
shift

RK_LEGACY_PARTITIONS=" \
        ${RK_OEM_FS_TYPE:+oem:/oem:${RK_OEM_FS_TYPE}}
        ${RK_USERDATA_FS_TYPE:+userdata:/userdata:${RK_USERDATA_FS_TYPE}}
"

# <dev>:<mount point>:<fs type>:<source dir>, for example:
# RK_EXTRA_PARTITIONS="oem:/oem:ext2:oem_normal userdata:/userdata:vfat:userdata_empty"
RK_EXTRA_PARTITIONS=${RK_EXTRA_PARTITIONS:-${RK_LEGACY_PARTITIONS}}

function fixup_root()
{
        echo "Fixing up rootfs type: $1"

        FS_TYPE=$1
        sed -i "s#\([[:space:]]/[[:space:]]\+\)\w\+#\1${FS_TYPE}#" \
                ${TARGET_DIR}/etc/fstab
}

function fixup_part()
{
        echo "Fixing up partition: $@"

        if echo $1 | grep -qE "^/"; then
                DEV=$1
        else
                DEV="PARTLABEL=$1"
        fi

        MOUNT=${2:-/$1}
        FS_TYPE=${3:-auto}
        OPT=${4:-defaults}

        sed -i "#[[:space:]]${MOUNT}[[:space:]]#d" ${TARGET_DIR}/etc/fstab

        echo -e "${DEV}\t${MOUNT}\t${FS_TYPE}\t${OPT}\t0 2" >> \
                ${TARGET_DIR}/etc/fstab

        mkdir -p ${TARGET_DIR}/${MOUNT} 
}

function fixup_fstab()
{
        echo "Fixing up /etc/fstab..."

        case "${RK_ROOTFS_TYPE}" in
                ext[234])
                        fixup_root ${RK_ROOTFS_TYPE}
                        ;;
                *)
                        fixup_root auto
                        ;;
        esac

        for part in ${RK_EXTRA_PARTITIONS}; do
                fixup_part $(echo "${part}" | xargs -d':')
        done
}

function add_build_info()
{
        [ -f ${TARGET_DIR}/etc/os-release ] && \
                sed -i "/^BUILD_ID=/d" ${TARGET_DIR}/etc/os-release

        echo "Adding build-info to /etc/os-release..."
        echo "BUILD_INFO=\"$(whoami)@$(hostname) $(date)${@:+ - $@}\"" >> \
                ${TARGET_DIR}/etc/os-release
}

function add_dirs_and_links()
{
        echo "Adding dirs and links..."

        cd ${TARGET_DIR}
        mkdir -p mnt/sdcard mnt/usb0
        ln -sf media/usb0 udisk
        ln -sf mnt/sdcard sdcard
        ln -sf userdata data
}

echo "Executing $(basename $0)..."

add_build_info $@
[ -f ${TARGET_DIR}/etc/fstab ] && fixup_fstab
add_dirs_and_links

exit 0

mk-rootfs-ubuntu.sh 內(nèi)容如下:

#!/bin/bash -e
# Directory contains the target rootfs

#TARGET_ROOTFS_DIR="binary"
TARGET_ROOTFS_DIR="ubuntu_rootfs"
ARCH=arm64
echo -e "\033[36m Building for $ARCH \033[0m"

#if [ -d "$TARGET_ROOTFS_DIR" ]; then
  # Control will enter here if $DIRECTORY exists.
 # rm -rf $TARGET_ROOTFS_DIR
 # sleep 5
#fi

#if [ ! -e ubuntu-22.04.1-arm64.tar.gz ]; then
 #       echo "\033[please put ubuntu-22.04.1-arm64.tar.gz file in this contents \033[0m"
 #       exit -1
#fi

finish() {
        sudo umount $TARGET_ROOTFS_DIR/dev
        exit -1
}
trap finish ERR

echo -e "\033[36m Extract image \033[0m"
# sudo tar -xpf ubuntu-22.04.1-arm64.tar.gz

# packages folder
sudo mkdir -p $TARGET_ROOTFS_DIR/packages
sudo cp -rf packages/$ARCH/* $TARGET_ROOTFS_DIR/packages

# overlay folder
sudo cp -rf overlay/* $TARGET_ROOTFS_DIR/

# overlay-firmware folder
sudo cp -rf overlay-firmware/* $TARGET_ROOTFS_DIR/

# overlay-debug folder
# adb, video, camera  test file
sudo cp -rf overlay-debug/* $TARGET_ROOTFS_DIR/

## hack the serial
sudo cp -f overlay/usr/lib/systemd/system/serial-getty@.service $TARGET_ROOTFS_DIR/lib/systemd/system/serial-getty@.service

# adb
sudo cp -f overlay-debug/usr/local/share/adb/adbd-64 $TARGET_ROOTFS_DIR/usr/bin/adbd

# bt/wifi firmware
sudo mkdir -p $TARGET_ROOTFS_DIR/system/lib/modules/
sudo mkdir -p $TARGET_ROOTFS_DIR/vendor/etc
sudo find ../kernel/drivers/net/wireless/rockchip_wlan/*  -name "*.ko" | \
    xargs -n1 -i sudo cp {} $TARGET_ROOTFS_DIR/system/lib/modules/

sudo find ../kernel/drivers/bluetooth/*  -name "*.ko" | \
    xargs -n1 -i sudo cp {} $TARGET_ROOTFS_DIR/system/lib/modules/

#ch341
sudo find ../kernel/drivers/usb/serial/*  -name "*.ko" | \
    xargs -n1 -i sudo cp {} $TARGET_ROOTFS_DIR/system/lib/modules/

echo -e "\033[36m Change root.....................\033[0m"
#sudo cp -f /etc/resolv.conf $TARGET_ROOTFS_DIR/etc/
#sudo cp /usr/bin/qemu-aarch64-static $TARGET_ROOTFS_DIR/usr/bin/

sudo mount -o bind /dev $TARGET_ROOTFS_DIR/dev
sudo mount -o bind /dev/pts $TARGET_ROOTFS_DIR/dev/pts
cat << EOF | sudo chroot $TARGET_ROOTFS_DIR/
apt-get update
apt-get upgrade -y
chmod o+x /usr/lib/dbus-1.0/dbus-daemon-launch-helper
export APT_INSTALL="apt-get install -fy --allow-downgrades"

apt remove -fy firefox-esr chromium* firefox

#---------------power management --------------
\${APT_INSTALL} pm-utils triggerhappy bsdmainutils
cp /etc/Powermanager/triggerhappy.service  /lib/systemd/system/triggerhappy.service

#rm /etc/Powermanager -rf


#---------------Rga--------------
\${APT_INSTALL} /packages/rga/*.deb
\${APT_INSTALL} /packages/rga2/*.deb

echo -e "\033[36m Setup Video.................... \033[0m"
#\${APT_INSTALL} gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-ugly gstreamer1.0-tools gstreamer1.0-alsa \

# gstreamer1.0-plugins-base-apps qtmultimedia5-examples gstreamer1.0-opencv 
#for package in $(sudo apt-get upgrade 2>&1 | sudo grep "warning: files list file for package '" | sudo grep -Po "[^'\n ]+'" | sudo grep -Po "[^']+"); do sudo apt-get install --reinstall "$package"; done

\${APT_INSTALL} /packages/mpp/*
\${APT_INSTALL} /packages/gst-rkmpp/*.deb

#---------Camera---------
echo -e "\033[36m Install camera.................... \033[0m"
\${APT_INSTALL} cheese 
\${APT_INSTALL} /packages/rkisp/*.deb
\${APT_INSTALL} /packages/rkaiq/*.deb
#\${APT_INSTALL} /packages/libv4l/*.deb


#--------------before deb--------------
#\${APT_INSTALL} /packages/topeet/*.deb


#---------------Openbox--------------
#echo -e "\033[36m Install openbox.................... \033[0m"
#\${APT_INSTALL} /packages/openbox/*.deb

#---------update chromium-----
#\${APT_INSTALL} /packages/chromium/*.deb
#\${APT_INSTALL} firefox 

#------------------libdrm------------
echo -e "\033[36m Install libdrm.................... \033[0m"
\${APT_INSTALL} /packages/libdrm/*.deb

#------------------libdrm-cursor------------
echo -e "\033[36m Install libdrm-cursor.................... \033[0m"
\${APT_INSTALL} /packages/libdrm-cursor/*.deb

# Only preload libdrm-cursor for X
sed -i "/libdrm-cursor.so/d" /etc/ld.so.preload
sed -i "1aexport LD_PRELOAD=libdrm-cursor.so.1" /usr/bin/X

#------------------pcmanfm------------
echo -e "\033[36m Install pcmanfm.................... \033[0m"
\${APT_INSTALL} /packages/pcmanfm/*.deb

#------------------blueman------------
echo -e "\033[36m Install blueman.................... \033[0m"
\${APT_INSTALL} blueman
echo exit 101 > /usr/sbin/policy-rc.d
chmod +x /usr/sbin/policy-rc.d
\${APT_INSTALL} blueman
rm -f /usr/sbin/policy-rc.d

#------------------rkwifibt------------
echo -e "\033[36m Install rkwifibt.................... \033[0m"
rm -rf /usr/lib/firmware
\${APT_INSTALL} /packages/rkwifibt/*.deb
ln -s /system/etc/firmware /vendor/etc/
mkdir -p /lib/firmware/
cp /packages/rkwifibt/8723du/* /lib/firmware/

#------------------glmark2------------
echo -e "\033[36m Install glmark2.................... \033[0m"
\${APT_INSTALL} /packages/glmark2/*.deb

echo -e "\033[36m Install Chinese fonts.................... \033[0m"
# Uncomment zh_CN.UTF-8 for inclusion in generation
sed -i 's/^# *\(zh_CN.UTF-8\)/\1/' /etc/locale.gen
echo "LANG=zh_CN.UTF-8" >> /etc/default/locale

# Generate locale
locale-gen

# Export env vars
echo "export LC_ALL=zh_CN.UTF-8" >> ~/.bashrc
echo "export LANG=zh_CN.UTF-8" >> ~/.bashrc
echo "export LANGUAGE=zh_CN.UTF-8" >> ~/.bashrc

source ~/.bashrc

\${APT_INSTALL} fonts-aenigma
\${APT_INSTALL} xfonts-intl-chinese

# HACK debian11.3 to fix bug
\${APT_INSTALL} fontconfig --reinstall

#\${APT_INSTALL} xfce4
#ln -sf /usr/bin/startxfce4 /etc/alternatives/x-session-manager


# mark package to hold
apt list --installed | grep -v oldstable | cut -d/ -f1 | xargs apt-mark unhold

#---------------GPU--------------
cp /packages/libmali/*.deb /
cp -rf /packages/rga/ /
cp -rf /packages/rga2/ /

# mark rga package to unhold
apt-mark unhold librga2 librga-dev librga2-dbgsym

cp /packages/libmali/libmali-valhall-g610-g6p0-x11.so /usr/lib/aarch64-linux-gnu/
ln -s /usr/lib/aarch64-linux-gnu/libmali-valhall-g610-g6p0-x11.so /usr/lib/aarch64-linux-gnu/libmali.so

ln -s /usr/lib/aarch64-linux-gnu/libmali-valhall-g610-g6p0-x11.so /usr/lib/aarch64-linux-gnu/libmali.so.1

#---------------Custom Script--------------
systemctl mask systemd-networkd-wait-online.service
systemctl mask NetworkManager-wait-online.service
rm /lib/systemd/system/wpa_supplicant@.service

#----------------beautiful terminal_________
echo " alias ls='ls --color' " >>/root/.bashrc
#-----------beautiful login---------------
\${APT_INSTALL} toilet
rm -rf /usr/share/figlet/*
cp /packages/figlet-fonts/* /usr/share/figlet/
timedatectl set-timezone Asia/Shanghai
cp /packages/libdrm/lightdm.conf /etc/lightdm/
#echo "tty -s && mesg n || true" >> /root/.profile

#---------------background---------------
rm -rf /usr/share/backgrounds/*.jpg
rm -rf /usr/share/backgrounds/*.png

#cp /packages/backdrops/* /usr/share/xfce4/backdrops/
cp /packages/backgrounds/* /usr/share/backgrounds/

apt update 
apt upgrade -y

#------remove unused packages------------
apt remove --purge -fy linux-firmware*

#---------------Clean--------------
if [ -e "/usr/lib/arm-linux-gnueabihf/dri" ] ;
then
        cd /usr/lib/arm-linux-gnueabihf/dri/
        cp kms_swrast_dri.so swrast_dri.so rockchip_dri.so /
        rm /usr/lib/arm-linux-gnueabihf/dri/*.so
        mv /*.so /usr/lib/arm-linux-gnueabihf/dri/
elif [ -e "/usr/lib/aarch64-linux-gnu/dri" ];
then
        cd /usr/lib/aarch64-linux-gnu/dri/
        cp kms_swrast_dri.so swrast_dri.so rockchip_dri.so /
        rm /usr/lib/aarch64-linux-gnu/dri/*.so
        mv /*.so /usr/lib/aarch64-linux-gnu/dri/
        rm /etc/profile.d/qt.sh
fi
cd -


rm -rf /var/lib/apt/lists/*
rm -rf /var/cache/
rm -rf /packages/
mkdir -p /var/cache/apt/archives/partial
EOF
sudo umount $TARGET_ROOTFS_DIR/dev/pts
sudo umount $TARGET_ROOTFS_DIR/dev

3.2 燒錄鏡像

打包鏡像完成后,會(huì)生成 ubuntu-rootfs.img 文件,使用該文件燒錄進(jìn)開(kāi)發(fā)板即可。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-641478.html

參考資料

  1. https://blog.csdn.net/weixin_41070133/article/details/128757151
  2. https://blog.csdn.net/ssismm/article/details/129612239

到了這里,關(guān)于基于 RK3588 構(gòu)建 Ubuntu 22.04 根文件系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Ubuntu22.04系統(tǒng)更換源操作

    Ubuntu22.04系統(tǒng)更換源操作

    1、備份原本的Ubuntu22.04系統(tǒng)的軟件源文件 2、刪除原本的Ubuntu22.04系統(tǒng)軟件源 或者 3、添加軟件源 清華源 阿里源 中科大源 網(wǎng)易源 更換成阿里源的圖如下所示: 4、更新源和軟件

    2024年01月20日
    瀏覽(28)
  • Ubuntu22.04配置系統(tǒng)下載源

    Ubuntu22.04配置系統(tǒng)下載源

    相信很多小伙伴都在拓展自己業(yè)務(wù)能力的同時(shí),想涉足于未來(lái)的人工智能領(lǐng)域。而繞不開(kāi)的就是Linux系統(tǒng),目前最新版本的Ubuntu的Linux操作系統(tǒng)版本為:22.10,可點(diǎn)擊下載選擇相應(yīng)版本。 本篇以Ubuntu22.04版本為例,簡(jiǎn)要介紹如何更改Ubuntu的下載源。 1、點(diǎn)擊左下角的應(yīng)用程序,

    2024年02月06日
    瀏覽(29)
  • VMware共享文件夾設(shè)置(ubuntu22.04)

    VMware共享文件夾設(shè)置(ubuntu22.04)

    首先點(diǎn)擊 虛擬機(jī) - 設(shè)置? (如下圖) ? 接著,我們點(diǎn)擊? 選項(xiàng)? - 共享文件夾 - 設(shè)置為 總是啟用 - 并 添加一個(gè)本地共享文件夾 ? 設(shè)置完畢,我們點(diǎn)擊 確定。打開(kāi)我們的終端 在mnt/目錄下創(chuàng)建一個(gè)名為 hgfs的目錄( 記得創(chuàng)建目錄,否則會(huì)報(bào)錯(cuò) )。 ?接著,我們?cè)诮K端中輸入

    2024年02月13日
    瀏覽(101)
  • 基于Ubuntu22.04部署bcache模式ceph

    作者:吳業(yè)亮 博客:wuyeliang.blog.csdn.net 將Bcache集成到Ceph OSD后端可以帶來(lái)一些優(yōu)點(diǎn)和潛在的缺點(diǎn)。以下是它們的一些方面: 優(yōu)點(diǎn): 提高性能:BCache作為SSD緩存設(shè)備,可以提供更快的數(shù)據(jù)讀取和寫入速度。通過(guò)將熱門數(shù)據(jù)緩存在SSD上,可以減少對(duì)慢速磁盤的訪問(wèn),從而改善存

    2024年02月14日
    瀏覽(17)
  • 雙系統(tǒng)ubuntu18.04如何更新到22.04

    將雙系統(tǒng)中的Ubuntu 18.04更新到22.04,按照以下步驟操作: 1.打開(kāi)終端并更新系統(tǒng),使用以下命令: 2.確保系統(tǒng)是最新的,然后備份數(shù)據(jù),以防萬(wàn)一。 3.執(zhí)行以下命令,安裝 update-manager-core: 4.執(zhí)行以下命令,將Ubuntu 18.04升級(jí)到20.04: 如果沒(méi)有升級(jí)到20.04,請(qǐng)參考以下內(nèi)容: 1.確

    2024年02月04日
    瀏覽(24)
  • 基于ubuntu-base構(gòu)建根文件系統(tǒng)并移植到RK3568開(kāi)發(fā)板

    基于ubuntu-base構(gòu)建根文件系統(tǒng)并移植到RK3568開(kāi)發(fā)板

    前言 一、使用ubuntu-base構(gòu)建根文件系統(tǒng) 1、到ubuntu官網(wǎng)獲取 ubuntu-base-18.04.5-base-arm64.tar.gz 2、將獲取的文件拷貝到ubuntu虛擬機(jī),新建目錄,并解壓。 3、安裝qemu-user-static 4、設(shè)置軟件源 5、配置DNS 6、掛載ubuntu-base文件系統(tǒng) 7、安裝必要軟件 8、安裝桌面環(huán)境 9、修改root用戶密碼

    2024年02月01日
    瀏覽(29)
  • ubuntu22.04備份系統(tǒng)的完整操作過(guò)程

    名稱?? ?用于?? ?大小?? ?掛載點(diǎn)?? ?分區(qū)類型?? ?說(shuō)明 EFI分區(qū)?? ?efi?? ?512M?? ??? ?主分區(qū)?? ?第一個(gè)設(shè)置項(xiàng) /boot?? ?ext4?? ?512M?? ?/boot?? ?邏輯分區(qū)?? ? 交換區(qū)??? 交換區(qū)間??? 4G(電腦內(nèi)存夠大的化不用劃分)?? ??? ?邏輯分區(qū)?? ? /?? ?ext4?? ?40

    2024年02月05日
    瀏覽(18)
  • Ubuntu 22.04系統(tǒng)設(shè)置固定IP地址

    打開(kāi)網(wǎng)絡(luò)配置文件: sudo vi /etc/netplan/00-installer-config.yaml 在文件中添加以下內(nèi)容: network: version: 2 renderer: networkd ethernets: eth0: dhcp4: no addresses: [192.168.1.10/24] gateway4: 192.168.1.1 nameservers: addresses: [192.168.1.1] 其中,eth0是要設(shè)置的網(wǎng)絡(luò)接口名稱,addresses是要設(shè)置的IP地址和子網(wǎng)掩碼,

    2024年02月03日
    瀏覽(50)
  • vmware Ubuntu22.04共享文件夾找不到問(wèn)題

    vmware Ubuntu22.04共享文件夾找不到問(wèn)題

    1、在VMware上先配置Windows上需要共享的文件名稱路徑,選擇“總是開(kāi)啟” ?2、在終端執(zhí)行命令? :? 當(dāng)前面一步配置正確會(huì)顯示,windows下共享的文件夾名稱 ?但是我們?cè)? /mnt? 目錄下找不到 共享的文件夾,所以需要執(zhí)行一下這個(gè)命令看看能不能正常掛載上: 3、執(zhí)行完后有

    2024年02月11日
    瀏覽(94)
  • Windows11+Ubuntu20.04系統(tǒng)重裝(升級(jí)為Ubuntu22.04)

    Windows11+Ubuntu20.04系統(tǒng)重裝(升級(jí)為Ubuntu22.04)

    事情起因是標(biāo)題所對(duì)應(yīng)的雙系統(tǒng)中,Ubuntu老自動(dòng)斷電關(guān)機(jī),一開(kāi)始是跑大型程序才會(huì)關(guān)機(jī),這兩天愈演愈烈變成運(yùn)行一個(gè)遠(yuǎn)程控制或者VSCode就會(huì)關(guān)機(jī)。一怒之下找了Dell在線客服,在對(duì)方引導(dǎo)下檢測(cè)了硬件系統(tǒng),發(fā)現(xiàn)沒(méi)有明顯故障,對(duì)方建議重裝出問(wèn)題的軟件后看現(xiàn)象是否消失

    2024年04月26日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包