你是否想過自己動手打造一個專屬的操作系統(tǒng)鏡像?無論是為極客項目定制開發(fā)環(huán)境,還是讓老舊設(shè)備煥發(fā)新生,系統(tǒng)鏡像定制都是極客玩家的必備技能。
那么如何針對自己手中的設(shè)備,為其定制一個專屬的系統(tǒng)鏡像呢?
感謝社區(qū)用戶@空木蓮華 的投稿及貢獻(xiàn)。本文將以 deepin 深度操作系統(tǒng)以及樹莓派設(shè)備為例,演示樹莓派鏡像的制作、燒錄及運行,與你分享自定義系統(tǒng)鏡像的實用思路與寶貴經(jīng)驗。
1基礎(chǔ)工具鏈安裝
在開始制作鏡像前,需先安裝基礎(chǔ)工具鏈。可通過以下命令安裝必要軟件包:
sudo apt update -y sudo apt-get install -y qemu-user-static binfmt-support mmdebstrap arch-test usrmerge usr-is-merged fdisk dosfstools sudo systemctl restart systemd-binfmt # 重啟 binfmt 服務(wù)加載ARM支持
其中,qemu-user-static 與 binfmt-support 用于實現(xiàn)異架構(gòu)模擬,讓 X86 主機可直接執(zhí)行 ARM 程序。
2根文件系統(tǒng)構(gòu)建
使用 mmdebstrap 創(chuàng)建基礎(chǔ)系統(tǒng),命令如下:
mkdir -p rootfs sudo mmdebstrap --hook-dir=/usr/share/mmdebstrap/hooks/merged-usr --include="ca-certificates,locales,sudo,apt,adduser,polkitd,systemd,network-manager,dbus-daemon,apt-utils,bash-completion,curl,vim,bash,deepin-keyring,init,ssh,net-tools,iputils-ping,lshw,iproute2,iptables,procps,wpasupplicant,dmidecode,ntpsec-ntpdate,linux-firmware" --architectures=arm64 beige rootfs "deb https://community-packages.deepin.com/beige/ beige main commercial community" "deb https://proposed-packages.deepin.com/beige-testing/ unstable/25 main commercial community"該命令指定創(chuàng)建 ARM64 架構(gòu)的根文件系統(tǒng),包含系統(tǒng)工具、網(wǎng)絡(luò)工具、調(diào)試工具等必要軟件包。
3磁盤鏡像制作
3.1 創(chuàng)建空白鏡像并分區(qū)
使用以下命令創(chuàng)建空白鏡像并進(jìn)行分區(qū):
dd if=/dev/zero of=deepin-raspberrypi.img bs=1M count=4096 sudo fdisk deepin-raspberrypi.img << EOF n p 1 +300M t c n p 2 w EOF
上述命令創(chuàng)建了一個 4GB 的空白鏡像文件,并將其分為兩個分區(qū):300MB 的 FAT32 格式啟動分區(qū)和剩余空間的 Linux 分區(qū)。
3.2 格式化與掛載分區(qū)
通過 losetup 將鏡像文件綁定到回環(huán)設(shè)備,然后分別對兩個分區(qū)進(jìn)行格式化和掛載操作:
LOOP=$(sudo losetup -Pf --show deepin-raspberrypi.img) sudo mkfs.fat -F32 "${LOOP}p1" sudo dosfslabel "${LOOP}p1" bootfs sudo mkfs.ext4 "${LOOP}p2" sudo e2label "${LOOP}p2" rootfs mkdir tmp sudo mount "${LOOP}p2" tmp sudo cp -a rootfs/* tmp sudo mkdir tmp/boot/firmware sudo mount "${LOOP}p1" tmp/boot/firmware sudo mount --bind /dev tmp/dev sudo mount -t proc chproc tmp/proc sudo mount -t sysfs chsys tmp/sys sudo mount -t tmpfs -o "size=99%" tmpfs tmp/tmp sudo mount -t tmpfs -o "size=99%" tmpfs tmp/var/tmp sudo mount --bind /etc/resolv.conf tmp/etc/resolv.conf sudo mount -t devpts devpts tmp/dev/pts
4樹莓派硬件適配
4.1安裝固件與內(nèi)核
從樹莓派官方倉庫[1]下載樹莓派預(yù)編譯固件,并拷貝至相應(yīng)目錄。
git clone --depth=1 https://github.com/raspberrypi/firmware.git sudo cp -r firmware/boot/* tmp/boot/firmware
4.2 配置 config.txt
配置config.txt文件[2],以啟用音頻、自動加載覆蓋層、設(shè)置 64 位模式等。
sudo tee tmp/boot/firmware/config.txt <
4.3 添加樹莓派官方源
mkdir -p tmp/etc/apt/sources.list.d # 添加樹莓派的源,一些樹莓派提供的工具,需要從這個軟件源下載 echo "deb [trusted=yes] http://archive.raspberrypi.org/debian/ bookworm main" | sudo tee tmp/etc/apt/sources.list.d/raspberrypi.list
4.4 安裝額外的軟件包、內(nèi)核
# raspi-config 會依賴到 libfmt9,deepin 源里沒 已經(jīng)升級到 libfmt10,從 Debian 下載 deb 包 curl -L http://ftp.cn.debian.org/debian/pool/main/f/fmtlib/libfmt9_9.1.0+ds1-2_arm64.deb -o tmp/tmp/libfmt9.deb curl -L http://ftp.cn.debian.org/debian/pool/main/d/device-tree-compiler/libfdt1_1.6.1-4+b1_arm64.deb -o tmp/tmp/libfdt1.deb
4.5 進(jìn)入 chroot,并安裝配置工具及內(nèi)核
sudo chroot tmp bash(chroot) apt update -y && apt install -y /tmp/libfmt9.deb /tmp/libfdt1.deb(chroot) apt install -y raspi-config raspberrypi-sys-mods firmware-brcm80211 raspi-firmware bluez-firmware(chroot) apt install -y linux-image-rpi-v8 linux-image-rpi-2712 linux-headers-rpi-v8 linux-headers-rpi-2712
5配置啟動參數(shù)
設(shè)置 cmdline.txt 內(nèi)核參數(shù),指定控制臺、根文件系統(tǒng)等信息。
# 配置 cmdline.txt 內(nèi)核參數(shù) (chroot) echo "console=serial0,115200 console=tty1 root=LABEL=rootfs rootfstype=ext4 fsck.repair=yes rootwait quiet init=/usr/lib/raspberrypi-sys-mods/firstboot splash plymouth.ignore-serial-consoles" | tee /boot/firmware/cmdline.txt
6編輯分區(qū)表
配置 /etc/fstab 文件,確保系統(tǒng)啟動時正確掛載分區(qū)。
(chroot) tee /etc/fstab << EOF proc /proc proc defaults 0 0 LABEL=bootfs /boot/firmware vfat defaults 0 2 LABEL=rootfs / ext4 defaults,rw,errors=remount-ro,x-systemd.growfs 0 1 EOF
7系統(tǒng)個性化配置
創(chuàng)建用戶,并配置本地化設(shè)置,包括語言、時區(qū)等。
# 創(chuàng)建用戶并設(shè)置密碼 (chroot) useradd -m deepin && usermod -aG sudo deepin (chroot) echo 'deepin:deepin' | chpasswd (chroot) chsh -s /bin/bash deepin# 取消注釋 (chroot) sed -i -E 's/#[[]]*(en_US.UTF-8[[]]+UTF-8)/1/g' /etc/locale.gen (chroot) sed -i -E 's/#[[]]*(zh_CN.UTF-8[[]]+UTF-8)/1/g' /etc/locale.gen # 生成語言設(shè)置 (chroot) locale-gen# 設(shè)置中文 (chroot) tee /etc/locale.conf << EOF LANG=zh_CN.UTF-8 LANGUAGE=zh_CN EOF# 設(shè)置本地上海時區(qū) (chroot) ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
8清理與壓縮
在完成上述配置后,可以清理軟件包緩存并卸載掛載點。
# 清理軟件包緩存 (chroot) apt clean && rm -rf /var/cache/apt/archives/* (chroot) exit# 卸載掛載點 sudo umount -l tmp# 強制文件系統(tǒng)檢查 sudo e2fsck -f "${LOOP}p2"# 解除回環(huán)設(shè)備 sudo losetup -D $LOOP
9燒錄鏡像
此步驟建議使用樹莓派官方燒錄工具,根據(jù)系統(tǒng)提示進(jìn)行操作,將制作好的鏡像燒錄到樹莓派的存儲設(shè)備上。
詳細(xì)步驟可參考:《deepin 25樹莓派通用鏡像上線》
10安裝桌面環(huán)境
若需要安裝桌面環(huán)境,可在系統(tǒng)啟動后通過 APT 安裝,或直接在樹莓派設(shè)備上構(gòu)建含桌面的完整鏡像。
export DEBIAN_FRONTEND=noninteractive sudo apt update # DDE 桌面環(huán)境相關(guān)的包 sudo apt install deepin-desktop-environment-{base,cli,core,extras} # 這里安裝完系統(tǒng)lightdm是被禁用自啟動,允許自啟動重啟 sudo systemctl enable lightdm # 玲瓏環(huán)境 sudo apt install deepin-desktop-environment-ll # UOS AI 、火狐瀏覽器 sudo apt install uos-ai firefox # 如果需要使用 treeland 窗管 sudo apt install treeland ddm # 禁用 lightdm 自啟動,允許 ddm 自啟動 sudo systemctl disable lightdm && sudo systemctl enable ddm # 停止 lightdm,啟動 ddm sudo systemctl stop lightdm && sudo systemctl enable ddm
11制作鏡像腳本
可通過克隆 GitHub 倉庫獲取制作鏡像的腳本,方便批量制作或自動化操作。
git clone --depth=1 https://github.com/deepin-community/deepin-raspberrypi.git # 構(gòu)建不包含桌面環(huán)境的鏡像 cd deepin-raspberrypi ./build.sh # 構(gòu)建包含桌面環(huán)境的鏡像,需要在樹莓派上構(gòu)建 cd deepin-raspberrypi ./build.sh desktop
以上便是在樹莓派上定制 deepin 系統(tǒng)鏡像的全過程,本教程至此結(jié)束。教程中所涉及命令的詳細(xì)解讀可點擊「閱讀原文」查看。
通過以上講解,相信大家已經(jīng)了解了系統(tǒng)磁盤鏡像的制作過程。這里以 deepin 和樹莓派為例,其他架構(gòu)的系統(tǒng)定制(如 X86_64、LoongArch64、RISC-V64 等架構(gòu)的系統(tǒng))也可以參考這一思路。
再次感謝@空木蓮華的貢獻(xiàn)及分享!若您在實踐過程中遇到了任何問題,或者對我們的教程有任何建議,歡迎隨時在deepin 社區(qū)論壇與我們交流。
-
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7109瀏覽量
125096 -
鏡像
+關(guān)注
關(guān)注
0文章
178瀏覽量
11148 -
燒錄
+關(guān)注
關(guān)注
8文章
284瀏覽量
36212 -
樹莓派
+關(guān)注
關(guān)注
121文章
1963瀏覽量
107081
原文標(biāo)題:以 deepin 為例,手把手教你如何自定義系統(tǒng)鏡像 | 內(nèi)附視頻
文章出處:【微信號:linux_deepin,微信公眾號:深度操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
實用樹莓派Linux編譯指南,打工人必備!


banana pi 板上跑樹莓派鏡像
第二章 如何與樹莓派搭訕
樹莓派鏡像燒寫
樹莓派系統(tǒng)鏡像制作
怎樣去設(shè)計一個基于樹莓派4B的智能小車
利用樹莓派制作Pi Zero游戲機的方法與步驟
從樹莓派帶你掌握嵌入式linux產(chǎn)品實戰(zhàn)開發(fā)-- 樹莓派系統(tǒng)鏡像制作(七)

干貨來嘍!實用樹莓派Linux編譯指南

評論