[Internal testing communication] 创建自己的deepin25 无磐石 live+安装镜像
Tofloor
poster avatar
LiuYongzhang
deepin
11 hours ago
Author

[深度探索] deepin25 不带磐石的镜像

技术交流 2857 次浏览 · 56 个回复 · 举报

电梯直达到第[ ] 楼确定

poster avatar

deepin

发表于 2025-07-17 14:10

楼主

deepin25 带了磐石给开发者使用不是很方便,写了个构建镜像的脚本,不带磐石。

有需要的开发者可以试试。部分应用没有安装,玲珑应用没有预装(玲珑命令行工具预装了)。如需进一步自定义镜像(如添加预装软件),可修改仓库内 config/base_package.txtconfig/desktop_package.txt 中的包列表

切记如果手动输入的软件包千万不要在中文输入法模式下敲回车输入,biruzheyang

一定在英文输入状态下输入,不说了都是泪
image.png

不适合生产办公用户

https://github.com/chenchongbiao/iso-build-deepin

deepin25 关闭磐石保护,并重新启动系统

image.png

1:取得root 权限:切换 root(全程用 root 更省心)

在终端运行 sudo -i

并更新系统

image.png

2:安装所需依赖apt install -y live-build debootstrap squashfs-tools xorriso grub-efi-amd64-bin grub-pc-bin mtools dosfstools qemu-user-static binfmt-support git curl wget unzip grub-common grub2-common lightdm locales

image.png

3:克隆构建仓库 + 清理旧目录(避免冲突)

如果之前构建过镜像先清理可能存在的旧仓库(防止新旧文件冲突)第一次可以忽略

rm -rf iso-build-deepin

克隆大佬的构建仓库

git clone https://github.com/chenchongbiao/iso-build-deepin.git

进入仓库目录(后续所有操作都在这个目录里执行)
cd iso-build-deepin

image.png

直接终端运行永久默认中文编码,避免后续镜像英文 / 乱码

sed -i 's/LOCALES=${LOCALES:-en-US.UTF-8}/LOCALES=${LOCALES:-zh_CN.UTF-8}/g' /root/iso-build-deepin/build

删除原来的镜像封装脚本iso

rm -r /root/iso-build-deepin/tools/iso

重新创建 nano /root/iso-build-deepin/tools/iso

新增「安装系统到硬盘」启动项(BIOS+EFI 双菜单适配)

复制以下完整脚本代码 → 粘贴到编辑器 → 按 Ctrl+O → 回车 → Ctrl+X 保存退出。

#!/bin/bash

set -u

function generate_isolinux_cfg() {
    sudo tee $ISOLINUX_CFG < $GRUB_STANDALONE_CFG <<'EOF'
search --set=root --label deepin
set prefix=(\$root)/boot/grub/
configfile /boot/grub/grub.cfg
EOF
"
}
function generate_efi_file() {
    if [[ $(uname -m) != $(run_command_in_chroot "uname -m") ]];
    then
        # 异架构构建,拷贝构建好的二进制。
        cp $DEVICE_CONFIG_PATH/$BOOT_EFI_FILE $STAGING/EFI/boot
    else
        # 创建一个独立的GRUB2 EFI可执行文件
    run_command_in_chroot "grub-mkstandalone \
        --format=$ARCH_EFI \
        --output=$BOOT_EFI_FILE \
        --locales="" \
        --fonts="" \
        boot/grub/grub.cfg=$GRUB_STANDALONE_CFG"
    mv $TMP/$BOOT_EFI_FILE $STAGING/EFI/boot
    fi
}

function generate_efi_img() {
    # 创建一个EFI系统分区镜像文件
    EFI_BOOT_IMG="$STAGING/boot/efi.img"
    dd if=/dev/zero of=$EFI_BOOT_IMG bs=1M count=4
    /sbin/mkfs.vfat $EFI_BOOT_IMG
    mmd -i $EFI_BOOT_IMG efi efi/boot
    sudo fatlabel $EFI_BOOT_IMG ESP
    mcopy -vi $EFI_BOOT_IMG $STAGING/EFI/boot/$BOOT_EFI_FILE ::efi/boot/
}

function generate_iso() {
    xorriso \
        -as mkisofs \
        -r \
        -iso-level 3 \
        -o $ISO \
        -no-pad \
        -full-iso9660-filenames \
        -V "deepin" \
        -isohybrid-mbr $TMP/isohdpfx.bin \
        -appended_part_as_gpt \
        -iso_mbr_part_type 'default' \
        -c '/boot.catalog' \
        -eltorito-boot isolinux/isolinux.bin \
        -no-emul-boot \
        -boot-load-size 4 \
        -boot-info-table \
        --eltorito-catalog isolinux/isolinux.cat \
        -eltorito-alt-boot \
        -e /boot/efi.img \
        -no-emul-boot \
        -isohybrid-gpt-basdat \
        -isohybrid-apm-hfsplus \
        $STAGING
}

export -f generate_isolinux_cfg generate_grub_cfg generate_grub_standalone_cfg generate_efi_file generate_efi_img generate_iso

修改build 设置live用户和密码live 默认时区上海,中文

nano /root/iso-build-deepin/build

复制以下完整脚本代码 → 粘贴到编辑器如图位置 → 按 Ctrl+O → 回车 → Ctrl+X 保存退出。


# ========== 新增:配置镜像默认用户和密码 ==========
run_command_in_chroot "useradd -m -s /bin/bash live && echo 'live:live' | chpasswd"
run_command_in_chroot "usermod -aG sudo live"
run_command_in_chroot "echo 'root:root' | chpasswd"
run_command_in_chroot "chown -R live:live /home/live && chmod 755 /home/live"
# 可选1:设置live用户自动登录LightDM图形界面(无需手动输账号密码)
run_command_in_chroot "mkdir -p /etc/lightdm/lightdm.conf.d && echo '[Seat:*]' > /etc/lightdm/lightdm.conf.d/99-autologin.conf && echo 'autologin-user=live' >> /etc/lightdm/lightdm.conf.d/99-autologin.conf"
# 可选2:关闭密码过期(永久有效)
run_command_in_chroot "chage -I -1 -m 0 -M 99999 -E -1 live"
# 1. 自动登录后直接进入dde桌面(避免黑屏/终端)
run_command_in_chroot "echo 'autologin-session=deepin' >> /etc/lightdm/lightdm.conf.d/99-autologin.conf"
# 2. 配置文件权限兜底(确保lightdm能读取,避免配置失效)
run_command_in_chroot "chmod 644 /etc/lightdm/lightdm.conf.d/99-autologin.conf && chown root:root /etc/lightdm/lightdm.conf.d/99-autologin.conf"
# ========== 用户密码配置结束 ==========
# ========== 新增:永久配置【默认中文+上海时区】核心代码 ==========
# 1. 配置默认时区为上海(无交互,直接生效,覆盖系统默认)
run_command_in_chroot "echo 'Asia/Shanghai' > /etc/timezone && dpkg-reconfigure -f noninteractive tzdata"
# 2. 生成中文UTF-8编码(必须执行,否则中文显示乱码)
run_command_in_chroot "locale-gen zh_CN.UTF-8"
# 3. 设置全局默认语言为中文(永久生效,所有用户通用)
run_command_in_chroot "echo -e 'LANG=zh_CN.UTF-8\nLC_ALL=zh_CN.UTF-8' > /etc/locale.conf"
run_command_in_chroot "update-locale LANG=zh_CN.UTF-8 LC_ALL=zh_CN.UTF-8"
# 4. 写入环境变量文件(兜底,防止图形界面/终端中文失效)
run_command_in_chroot "echo -e 'export LANG=zh_CN.UTF-8\nexport LC_ALL=zh_CN.UTF-8' >> /etc/profile"
# ========== 中文+时区配置结束 ==========

image.png

直接在终端运行主脚本末尾追加移动镜像命令


echo -e '\n# ========== 构建完成后移动镜像到用户下载目录 ==========\nmv -f ./output/deepin-crimson-amd64.iso $(eval echo ~$(logname))/Downloads/ && chown $(logname):$(logname) $(eval echo ~$(logname))/Downloads/deepin-crimson-amd64.iso\necho -e "\033[0;32m[✅] 镜像已移动至:$(eval echo ~$(logname))/Downloads/deepin-crimson-amd64.iso\033[0m"' >> /root/iso-build-deepin/build

image.png

修改 添加安装系统需要的软件包 nano /root/iso-build-deepin/config/base_package.txt

lightdm
lightdm-gtk-greeter
deepin-installer
gparted
dosfstools
ntfs-3g
os-prober
systemd-boot-efi
grub-efi-amd64
tzdata

复制以上↑软件包 → 粘贴到编辑器如图位置 → 按 Ctrl+O → 回车 → Ctrl+X 保存退出。

image.png

执行 amd64 架构镜像构建(核心步骤,耗时最久)

一:确保当前在 iso-build-deepin目录下(第三步已进入,若退出重新执行 cd iso-build-deepin

二:执行构建命令,请勿中途中断!首次构建 1-3 小时(看网络 / 硬件)

./build amd64

过程说明:
image.png

image.png

image.png

终端会持续输出日志,耐心等待即可
image.png

6 验证构建是否成功 + 找到镜像文件

镜像移动到用户下载目录

deepin-crimson-amd64.iso

image.png

Reply Favorite View the author
All Replies
Feelup
deepin
3 hours ago
#1

哇,这个厉害like

Reply View the author
erdospj
deepin
an hour ago
#2

非常好。

Reply View the author
186******75
deepin
5 minutes ago
#3

f584164cd445560f2dbe4202c59ed8f0.jpg

最后一行的汉字是乱码

Reply View the author