[Internal testing communication] 折腾一下DeepinV25无磐石镜像
Tofloor
poster avatar
Tent
deepin
2026-04-20 02:39
Author

1. 相关说明

1.1 方案介绍

本次采用陈老师之前提供的方案,原链接:https://github.com/chenchongbiao/iso-build-deepin

已构建镜像参考(目前仅在amd64架构虚拟机测试):

注:livecd模式下user用户的密码为(4个字母):live

链接: https://yun.139.com/shareweb/#/w/i/2ur4korvmJGsu

提取码: a6vm

1.2 存在问题

之前陈老师刚提供此方案的时候,calamares是3.2.61-1版本,目前仓库源已更新至3.3.14-5.1deepin1版本。

calamares的处理机制有变化,导致构建镜像后,在amd64架构虚拟机中安装测试发现如下两个问题:

(1)无法正常bind挂载/dev和/run/udev,导致安装efi引导阶段报错。

(2)解决了上述bind挂载问题并安装系统成功后,重启后有无法找到efi引导项的情况。

此外,关于下面所说的mount.conf中的挂载参数格式问题,希望deepin官方能修改一下calamares-settings-deepin(目前是1.0.2版本),重新打个包。

1.3 问题原因

(1)bind挂载问题:对于挂载参数,calamares3.2版本使用字符串格式,3.3版本需改用列表格式。

(2)无法添加引导项问题:原因未知。本次修改安装器脚本,手工创建引导项。

1.4 其他说明

本次尝试解决上述两个问题,以达到构建镜像后可以正常安装的目的。

按本文档操作后,仍存在至少两个局限性:

(1)本次仅考虑了amd64架构的情况。

(2)本次仅考虑了efi分区为标准分区的情况。

2. 操作步骤

2.1 先构建一次镜像

按方案的正常流程操作,操作细节略。

在iso-build-deepin-master下执行构建命令:

export LOCALES=zh_CN.UTF-8
./build amd64

2.2 修改mount.conf

说明:解决无法正常bind挂载/dev和/run/udev的问题。

修改iso-build-deepin-master下的 cache/rootfs/deepin-crimson-amd64/etc/calamares/modules/mount.conf 文件。

options: bind 修改为 options: [ bind ] ,共修改2处,分别对应/dev和/run/udev。

(可选)可以针对文件系统的挂载参数做指定,在mount.conf中追加配置项的示例如下:

mountOptions:
    - filesystem: btrfs
      options: [ compress=zstd:3, defaults, noatime ]

2.3 修改bootloader-fix

说明1:解决无法添加efi引导项的问题

说明2:本次片段依赖原 bootloader-fix 中已定义的 CHROOT 变量

修改iso-build-deepin-master下的 cache/rootfs/deepin-crimson-amd64/usr/sbin/bootloader-fix 文件。

在原文件的基础上,追加如下内容:

# --- 强制添加 UEFI 引导项---
# 1. 仅 UEFI 系统执行
if [ ! -d /sys/firmware/efi ]; then
  echo "Not an EFI system, skipping UEFI boot entry fix."
  exit 0
fi

# 2. 查找 EFI 分区在宿主系统中的实际挂载点(CHROOT已在原bootloader-fix中定义)
if findmnt --target "${CHROOT}/boot/efi" >/dev/null 2>&1; then
  efi_mount="${CHROOT}/boot/efi"
elif findmnt --target "${CHROOT}/efi" >/dev/null 2>&1; then
  efi_mount="${CHROOT}/efi"
elif findmnt --target "${CHROOT}/boot" >/dev/null 2>&1; then
  efi_mount="${CHROOT}/boot"
else
  echo "ERROR: Cannot find EFI system partition mount point."
  exit 1
fi

# 3. 检查 deepin 引导目录及 shimx64.efi 是否存在
bootloader_id="deepin"
efi_dir="${efi_mount}/EFI/${bootloader_id}"
if [ ! -d "${efi_dir}" ] || [ ! -f "${efi_dir}/shimx64.efi" ]; then
  echo "ERROR: ${efi_dir} or shimx64.efi not found."
  exit 1
fi

# 4. 获取 EFI 分区对应的块设备
efi_part_dev="$(findmnt -n -o SOURCE --target "${efi_mount}" 2>/dev/null)"
if [ -z "${efi_part_dev}" ]; then
  echo "ERROR: Cannot determine EFI partition device."
  exit 1
fi

# 5. 获取磁盘设备和分区号
case "${efi_part_dev}" in
  /dev/nvme[0-9]*n[0-9]*p[0-9]*)
    efi_disk="$(echo "${efi_part_dev}" | sed 's/p[0-9]*$//')"
    efi_part_num="$(echo "${efi_part_dev}" | sed 's/.*p\([0-9]*\)$/\1/')"
    ;;
  /dev/[sv]da[0-9]*)
    efi_disk="$(echo "${efi_part_dev}" | sed 's/[0-9]*$//')"
    efi_part_num="$(echo "${efi_part_dev}" | sed 's/.*[a-z]\([0-9]*\)$/\1/')"
    ;;
  *)
    echo "ERROR: Unsupported EFI partition device: ${efi_part_dev}"
    exit 1
    ;;
esac

# 6. 删除可能存在的旧引导项(仅删除当前安装磁盘上的同名条目)
efi_part_uuid="$(blkid -s PARTUUID -o value "${efi_part_dev}" 2>/dev/null)" || {
  echo "ERROR: Get PARTUUID failed: ${efi_part_dev}"
  exit 1
}

if efibootmgr -v | grep -F "${efi_part_uuid}" | awk -v id="${bootloader_id}" '$2 == id {found=1; exit} END {exit !found}'; then
  echo "Existing UEFI boot entries for '${bootloader_id}' found. Removing them..."
  efibootmgr -v | grep -F "${efi_part_uuid}" | awk -v id="${bootloader_id}" '$2 == id {print $1}' | while read -r boot_col; do
    bootnum="$(echo "${boot_col}" | sed -n 's/^Boot\([0-9A-Fa-f]*\)\*\{0,1\}$/\1/p')"
    if [ -n "${bootnum}" ]; then
      efibootmgr -b "${bootnum}" -B >/dev/null 2>&1 && echo "Removed Boot${bootnum}: ${bootloader_id}"
    fi
  done
  sync
fi

# 7. 创建引导项
efi_file="\\EFI\\${bootloader_id}\\shimx64.efi"
echo "Creating UEFI boot entry: disk=${efi_disk}, part=${efi_part_num}, label=${bootloader_id}"
if efibootmgr -c -d "${efi_disk}" -p "${efi_part_num}" -L "${bootloader_id}" -l "${efi_file}"; then
  sync
  echo "UEFI boot entry added successfully."
else
  echo "ERROR: Failed to create UEFI boot entry."
  exit 1
fi

2.4 重新执行镜像构建命令

在iso-build-deepin-master下,再次执行构建命令:

export LOCALES=zh_CN.UTF-8
./build amd64

2.5 获取输出镜像

输出镜像在iso-build-deepin-master下的 output/deepin-crimson-amd64.iso

===============================================================================

更新版本20240424

无法创建efi引导的原因已找到:由于calamares3.3版本的挂载方式发生变化,导致旧的配置方式下,无法挂载/sys/firmware/efi/efivars。

——所以只改mount.conf就够,不需要改bootloader-fix了。

更新的镜像文件以及其他方面改动的说明文件,均已上传到上面的移动云盘链接中。

Reply Favorite View the author
All Replies
1 / 2
To page
avatar
jjcui8595
deepin
2026-04-20 09:44
#1

like

Reply View the author
avatar
erdospj
deepin
2026-04-20 10:31
#2

👍 👍 👍

Reply View the author
avatar
𰻞𰻝面
deepin
2026-04-20 10:39
#3

非常不错!

Reply View the author
avatar
wcs4221
deepin
2026-04-20 14:54
#4

试用一下:

1)iso放在ventoy-U上,引导安装ok(设好300m的项)

2)安装好进入ok---装了商店的360游览器/stacer/微信:运行好!

唯一不足的是输入法中英shift切换不尽意?这是25的不足!另外窗口T模式无法切换?

-----特别说明,该版不比23-25差什么哟!作品不易。向作者致礼💔

好分享要支持hi
截图_20260420171148.png

截图_20260420171111.png

截图_20260420171043.png

Reply View the author
avatar
青山断处是泷州
deepin
2026-04-20 18:38
#5

精神可嘉,做法不赞同,有现成linux的稳定版本如debian、opensuse可以用,为啥没苦硬吃呢?

Reply View the author
avatar
BigFish
deepin
2026-04-20 20:01
#6
青山断处是泷州

精神可嘉,做法不赞同,有现成linux的稳定版本如debian、opensuse可以用,为啥没苦硬吃呢?

无磐石版的deepin V25 很好用啊,占用空间少多了。为什么要用deepin?因为它是国产的啊!

image.png

Reply View the author
avatar
Tent
deepin
2026-04-20 23:02
#7
青山断处是泷州

精神可嘉,做法不赞同,有现成linux的稳定版本如debian、opensuse可以用,为啥没苦硬吃呢?

对我来说,用deepin更方便。

另外磐石和传统分区,各有各的适用群体吧:

磐石方式对于不懂linux的用户群体来讲更安全方便(系统给用户兜底);

传统分区方式对懂linux的用户群体来讲更方便(用户自己给自己兜底)。

Reply View the author
avatar
WangZhongyun
deepin
2026-04-21 10:40
#8

很好。

把常规应用补充安装命令记录一下吧:

1.安装常规应用需有的deb包,这些也可能应用商店里有更新的玲珑包了。

sudo apt install deepin-font-manager deepin-calculator deepin-image-viewer deepin-movie deepin-music deepin-editor

2.安装相对好用的玲珑深度浏览器和语音记事本

ll-cli install org.deepin.browser org.deepin.voice.note

另外Deepin25默认开源驱动对我的老NVIDIA GTX650显卡DVI-I转VGA使用1024X768分辨率的频率是60.4赫兹,显示屏上提示不支持,若能改为60赫兹就能正常使用。不知要怎么改在安装系统后就能自动在DVI-I转VGA的1024X768分辨率使用60赫兹?

Reply View the author
avatar
士无双
deepin
2026-04-21 11:24
#9
It has been deleted!
avatar
Tent
deepin
2026-04-21 13:50
#10
WangZhongyun

很好。

把常规应用补充安装命令记录一下吧:

1.安装常规应用需有的deb包,这些也可能应用商店里有更新的玲珑包了。

sudo apt install deepin-font-manager deepin-calculator deepin-image-viewer deepin-movie deepin-music deepin-editor

2.安装相对好用的玲珑深度浏览器和语音记事本

ll-cli install org.deepin.browser org.deepin.voice.note

另外Deepin25默认开源驱动对我的老NVIDIA GTX650显卡DVI-I转VGA使用1024X768分辨率的频率是60.4赫兹,显示屏上提示不支持,若能改为60赫兹就能正常使用。不知要怎么改在安装系统后就能自动在DVI-I转VGA的1024X768分辨率使用60赫兹?

我看这个方案的目的就是尽量少装,要不然iso文件就太大了

Reply View the author
avatar
erdospj
deepin
2026-04-21 16:36
#11
WangZhongyun

很好。

把常规应用补充安装命令记录一下吧:

1.安装常规应用需有的deb包,这些也可能应用商店里有更新的玲珑包了。

sudo apt install deepin-font-manager deepin-calculator deepin-image-viewer deepin-movie deepin-music deepin-editor

2.安装相对好用的玲珑深度浏览器和语音记事本

ll-cli install org.deepin.browser org.deepin.voice.note

另外Deepin25默认开源驱动对我的老NVIDIA GTX650显卡DVI-I转VGA使用1024X768分辨率的频率是60.4赫兹,显示屏上提示不支持,若能改为60赫兹就能正常使用。不知要怎么改在安装系统后就能自动在DVI-I转VGA的1024X768分辨率使用60赫兹?

可以在~/iso-build-deepin-master/config/desktop_package.txt中加上常规应用需有的deb包。重新生成一次iso就行了。

Reply View the author
avatar
青山断处是泷州
deepin
2026-04-21 17:10
#12
BigFish

无磐石版的deepin V25 很好用啊,占用空间少多了。为什么要用deepin?因为它是国产的啊!

image.png

我就想问,你的系统空间占用是没有安装新的软件吧,我用debian系统安装需要的各种软件,例如wps、微信、网易云音乐等等一堆软件才占用20多G,你不觉得裸机占用的系统空间大吗

屏幕截图_20260421_171005.png

Reply View the author
avatar
erdospj
deepin
2026-04-21 21:43
#13

试了下修改desktop_package.txt中加上常规应用需有的deb包后。重新生成一次iso,不能安装上面的包,看来控制安装的软件不在那个文件里。

Reply View the author
avatar
wcs4221
deepin
2026-04-22 00:45
#14
青山断处是泷州

我就想问,你的系统空间占用是没有安装新的软件吧,我用debian系统安装需要的各种软件,例如wps、微信、网易云音乐等等一堆软件才占用20多G,你不觉得裸机占用的系统空间大吗

屏幕截图_20260421_171005.png

我装了360游览器/stacer/微信---删掉了不用的-=11g (本方案最好点:安装没有43g的限制!iso体积不太大。支持作者优化定型smirk 试用不错:顺而稳!)
截图_dde-file-manager_20260422004026.png

Reply View the author
avatar
伴你高飞
deepin
2026-04-22 08:39
#15

标记一下无磐石2

Reply View the author
avatar
cwbs
deepin
2026-04-30 08:39
#16

哇,太牛了!终于把v25装进luks了
图片.png

Reply View the author
avatar
wcs4221
deepin
2026-04-30 18:32
#17

实说这系统不错。偶而在不同机上出现:控制中心设置--帐户项时,跳出的框(密码输入处)为粉红色--输不了密?不明是什么原因?

?另外:内置是否少了----文本编辑器

Reply View the author
avatar
Tent
deepin
2026-04-30 22:27
#18
wcs4221

实说这系统不错。偶而在不同机上出现:控制中心设置--帐户项时,跳出的框(密码输入处)为粉红色--输不了密?不明是什么原因?

?另外:内置是否少了----文本编辑器

都需要你自己研究一下了。

输不了密码的我是没碰到过。

内置的编辑器就只有个vim,不过也算够用,比较精简,也算可以接受,自己再额外安装一下就行。另外也可以自己改配置后自己构建一下镜像也行。

Reply View the author
avatar
wcs4221
deepin
2026-05-01 06:50
#19
Tent

都需要你自己研究一下了。

输不了密码的我是没碰到过。

内置的编辑器就只有个vim,不过也算够用,比较精简,也算可以接受,自己再额外安装一下就行。另外也可以自己改配置后自己构建一下镜像也行。

明白。刚装了一机:没出现过不适!

这版本的确不错《没43g的限制》方便好用。支持了!smirk

Reply View the author
avatar
vbox
deepin
2026-05-20 09:53
#20
It has been deleted!
1 / 2
To page