- 桌面应用
【免费下载链接】deepin-boot-maker
deepin-boot-maker(启动盘制作工具)是一款将系统 ISO 镜像写入 U 盘等安装介质的轻量级小工具,界面简洁、操作流程短。本文以官方帮助手册为主线,完整讲解运行/关闭方式、镜像选择与校验、分区选择与格式化、制作进度与失败原因排查、主菜单主题切换等全部操作细节,并结合开源仓库源码说明每一步背后的实现机制(如checkfile镜像校验线程、ProgressStatus制作流水线、BMHandler::ErrorType错误码),帮助读者既会用工具,也能看懂其底层原理与源码结构。
概述
官方帮助手册(见 启动盘制作工具英文手册,中文版本见 启动盘制作工具中文手册)对工具的定位是:将系统镜像文件写入 U 盘等安装介质的小工具,界面简洁、操作简单。
从源码结构看,应用采用「前端界面 + 后台制作引擎 + 可选后台服务」的分层组织,位于src/目录:
src/app/:界面层。主窗口 bmwindow.cpp 使用QStackedLayout串联四个页面(镜像选择、U 盘选择、制作进度、结果展示),并以DPageIndicator指示当前步骤;src/libdbm/:核心制作库。backend/bootmaker.cpp定义制作流程,installer/qtbaseinstaller.cpp实现写入流水线,util/sevenzip.cpp负责 ISO 的校验与解压;src/service/:D-Bus 后台服务(com.deepin.bootmaker.xml 定义了DeviceList、CheckFile、Install、ReportProgress等接口),使界面操作以独立服务进程执行。
理解这一结构后,下文每个操作步骤都能找到对应的源码依据。
使用入门:运行、固定与关闭
运行启动盘制作工具
按照手册的操作步骤:
- 单击任务栏上的启动器图标,进入启动器界面;
- 上下滚动鼠标滚轮浏览或通过搜索,找到启动盘制作工具图标,单击运行;
- 右键单击启动盘制作工具图标,可以:
- 单击发送到桌面,在桌面创建快捷方式;
- 单击发送到任务栏,将应用程序固定到任务栏;
- 单击开机自动启动,将应用程序添加到开机启动项,在电脑开机时自动运行该应用。
从源码结构看,这些快捷入口依赖 deepin-boot-maker.desktop 桌面入口文件注册到 deepin 桌面环境,应用图标与名称由QIcon::fromTheme("deepin-boot-maker")从主题资源加载(见 bmwindow.cpp)。
关闭启动盘制作工具
手册给出三种退出方式:
- 在界面右上角单击关闭按钮,退出启动盘制作工具;
- 在任务栏右键单击应用图标,选择关闭所有来退出;
- 在界面单击主菜单按钮,选择退出来退出。
值得注意的是,进入制作流程后界面会主动禁用关闭能力:deviceSelected信号触发后,bmwindow.cpp 中调用setQuitMenuDisabled(true)并隐藏关闭按钮(DWindowManagerHelper::FUNC_CLOSE置为false),这正是手册「制作时请不要移除 U 盘或关机」提示在 UI 层面的保障——制作过程中窗口无法被意外关闭。
操作介绍
准备工作
手册要求的准备工作有三项:
- 到官网下载最新的系统镜像文件(
.iso); - 准备一个至少 8GB的 U 盘;
- 获取启动盘制作工具:
- 系统预装了启动盘制作工具,在启动器中查找;
- 访问官网下载指定版本的启动盘制作工具;
- Windows 系统可以从光盘镜像中解压
xxx_boot_maker.exe到电脑中。
源码中 usselectview.cpp 显示设备列表为空时界面提示 “No disk available”,说明 U 盘必须被系统正确识别为可移动设备。从 utils.cpp 的 Linux 分支可以看到,设备枚举以/dev/disk/by-id/下匹配usb-*或mmc-*前缀的节点为准(同时过滤nfs-、cifs-、smbfs-、sshfs-、ftpfs-、davfs-等网络挂载设备),再结合lsblk与df命令输出汇总分区、容量与文件系统信息。这意味着:如果 U 盘走的是网络存储形式或设备名不符合usb-/mmc-前缀,将不会出现在选择列表中。
选择镜像文件
手册提供两种方式选择镜像文件:
- 单击请选择镜像文件,选中已下载的镜像文件后单击下一步;
- 直接将镜像文件拖拽到制作工具界面,然后单击下一步。
对应源码在 isoselectview.cpp,两条路径的行为如下:
- 文件对话框:点击「请选择镜像文件」链接后弹出
DFileDialog,文件过滤器为ISO (*.iso),默认目录为用户主目录(见 isoselectview.cpp); - 拖拽:界面中的放置区域是自定义控件
DropFrame(dropframe.h),拖入文件时触发fileDrop信号,视觉效果上会显示放大的磁盘图标动画; - 选择后校验:无论是哪种方式,选中文件后都会调用
onFileSelected()(见 isoselectview.cpp),界面提示「检测镜像文件,请稍候…」并启动独立线程ThreadCheckFile,在后台线程中执行BMInterface::ref().checkfile(m_file),避免阻塞 UI; - 校验结果:校验通过则图标恢复并启用「下一步」按钮;校验失败则图标变为暗色光盘样式,显示红色提示 “Illegal ISO image file”,且「下一步」保持禁用(见 isoselectview.cpp)。
需要说明的是,从当前仓库源码看,BootMaker::checkfile()的完整完整性校验逻辑目前处于注释状态并直接返回true(见 bootmaker.cpp),即前端「文件检测」步骤在当前版本实现中基本是快速通过的占位流程;而真正有实质作用的 ISO 完整性检查发生在制作流水线的checkISOIntegrity()阶段(见下文制作流水线小节),那里通过 SevenZip 对 ISO 执行check操作,失败会报CheckImageIntegrityFailed错误。
选择分区
手册的说明是:选中制作启动盘的 U 盘,如果 U 盘有多个分区,只能选择第一个分区,然后单击开始制作或返回:
- 开始制作:建议勾选格式化分区(制作前请保存好 U 盘的数据);
- 返回:返回到选择镜像界面。
界面实现位于 usbselectview.cpp:
- 设备列表通过
BMInterface的deviceListChanged信号实时更新,U 盘热插拔时列表自动增删,若当前选中的设备被拔出,会自动清空选中状态与格式化勾选; - 每个设备条目显示标签、设备路径(如
/dev/sdb1)、容量使用情况(usageString()以 GB 或 MB 显示used/total)与使用率百分比; - 勾选格式化分区(
m_formatDiskCheck)时,界面显示橙色警示文案:“格式化分区将清除分区上的所有数据,但可以提高成功率,请在继续前确认”(见 usbselectview.cpp); - 点击开始制作后触发
deviceSelected(partition, format)信号,由主窗口接管并发起安装(见 bmwindow.cpp)。
从 utils.cpp 的设备整理逻辑可以推断「多分区 U 盘只取第一个分区」这一约束的来源:枚举时对每个可移动磁盘读取其children分区集合,无分区时把整块磁盘作为一条设备记录展示(isDisk = true);有分区时按分区遍历,并以文件系统类型判断是否需要格式化——vfat分区标记为无需格式化,其余均标记needFormat = true。结合 usbselectview.cpp 中选中项按路径排序、界面仅以磁盘为粒度发起制作的调用方式,实际生效的就是每块可移动磁盘的第一个分区/整盘。
「格式化分区」选项在底层的作用很直接:在 qtbaseinstaller.cpp 的hasEnoughSpace()中,勾选格式化时比较的是ISO 大小与分区总容量,未勾选时比较的是ISO 大小与分区空闲空间。这就是手册建议勾选格式化的原因——格式化后按整盘容量计算,可用空间最大化,成功率更高。
制作过程与制作成功
手册提醒:制作过程需要一定的时间,请耐心等待,制作时请不要移除 U 盘或关机。待进度条满格,出现制作成功的提示,表明启动盘已经制作完成。
进度页面 progressview.cpp 中,界面标题为 “Burning”,使用水波进度控件DWaterProgress展示进度,并带有提示文案 “Do not remove the disk or shut down the computer during the process”。进度来自BMInterface::reportProgress(current, error, title, description)信号(见 progressview.cpp):
current <= 70:进度条直接跟随真实进度;70 < current <= 100:进度条进入「缓升」模式,由 1 秒定时器每次 +1,避免长时间解压阶段进度条停住;current > 100(即 101 完成码):向主窗口发出finish,切换到结果页。
这些进度数字与源码中 qtbaseinstaller.cppbeginInstall()的流水线一一对应,完整的写入流程为:
| 步骤 | 源码阶段(ProgressStatus) | 进度值 | 失败错误码 |
|---|---|---|---|
| 检查空间 | CHECKSPACE/hasEnoughSpace() | 5 | USBSizeError |
| 检查 ISO 完整性 | CHECKINTEGRITY/checkISOIntegrity() | 10 | CheckImageIntegrityFailed |
| 格式化 U 盘 | FORMATUSB/formatUsb() | 15 | USBFormatError |
| 安装引导加载器 | INSTALLBOOTLOADER/installBootload() | 20 | InstallBootloaderFailed |
| 解压 ISO(含获取安装目录) | GETINSTALLDIR+EXTRACTISO/extractISO() | 20 → 80(解压进度映射) | GetUsbInstallDirFailed/ExtractImgeFailed |
| 同步 IO | SYNCIO/syncIO() | 90 | SyncIOFailed |
| 配置 syslinux / 引导文件 | configSyslinux()、modifyBootGrubFile() | — | — |
| 弹出磁盘 | EJECTDISK/ejectDisk() | 101 完成 | — |
其中几个细节值得展开:
- 格式化:
formatUsb()(见 qtbaseinstaller.cpp)先卸载分区;如果目标是整块磁盘节点(如/dev/sdb,路径末尾没有数字分区号),会先调用CreatePartition()创建分区,再对新分区执行FormatPartion()。未勾选格式化时该阶段跳过实际格式化动作,但仍会执行卸载; - 解压:
extractISO()会先执行partprobe让内核重新同步分区表,然后轮询等待自动挂载点出现(最多重试 3 次、每次间隔 2 秒),再清空目标目录后由SevenZip进程将 ISO 内容逐文件解压到 U 盘,解压过程中通过progressChanged信号上报逐文件进度(映射为 20–80 的区间,见 bootmaker.cpp); - 引导配置:
syncIO()之后调用configSyslinux()写入 syslinux 引导配置(模板见 syslinux.cfg);随后needAddRepo()用isoinfo检查镜像内是否含有anaconda安装器特征文件,若是 deepin/UOS 类镜像,还会向/EFI/BOOT/grub.cfg与/syslinux/syslinux.cfg中的linux/append行追加inst.repo=hd:UUID=<分区UUID>,使安装器直接从 U 盘读取软件源(见 qtbaseinstaller.cpp); - 成功页:
ResultView在NoError时显示成功图标与 “Successful” 标题,按钮变为Done(点击即退出应用)(见 resultview.cpp)。
制作失败
手册列出的失败原因有四种:
- 磁盘格式错误(Incorrect disk format)
- 磁盘空间不足(Insufficient disk space)
- 磁盘挂载错误(Disk mount error)
- 镜像解压错误(Image decompression error)
当出现未知错误时,制作失败窗口会出现提交反馈按钮,单击后跳转到相关论坛进行问题反馈。
这四类原因在源码中一一对应BMHandler::ErrorType枚举(定义于 bmhandler.h)及 bmhandler.cpp 的errorString()用户可读文案:
| 手册中的失败原因 | 错误码 | 界面提示文案(源码errorString()) |
|---|---|---|
| 磁盘格式错误 | USBFormatError | “Disk Format Error: Please reformat it”(专业版/家庭版额外提示:或在安全中心中关闭「自动扫描 U 盘」) |
| 磁盘空间不足 | USBSizeError | “Insufficient disk Space: Ensure that the disk has enough free space” |
| 磁盘挂载错误 | USBMountFailed | “Disk Mount Error: Insert the disk again or reboot to retry” |
| 镜像解压错误 | ExtractImgeFailed | “Image Decompression Error: Verify md5 checksum of the image to ensure its integrity” |
| 其他/未知 | 其余错误码走default | “Internal Error” |
失败分支的处理逻辑在 resultview.cppupdateResult()中:
SyscExecFailed、InstallBootloaderFailed等严重错误:非专业版系统显示 “The error log will be uploaded automatically with the feedback…” 提示,按钮文案变为Submit Feedback,点击后根据系统版本(社区版/家庭版/专业版)打开对应论坛页面或拉起deepin-feedback反馈客户端;专业版则显示After-Sale Services并通过 D-Bus 调用com.deepin.dde.ServiceAndSupport服务支持会话;- 其余已知错误码:直接显示
errorString()文案,按钮为Close,点击退出应用。
也就是说,手册中「未知错误 → 提交反馈」的行为是真实存在的代码路径:严重错误时反馈按钮会连同自动上传的错误日志一起引导用户到社区论坛。
主菜单
手册说明:在主菜单中,可以切换窗口主题、查看帮助手册等。主菜单入口即界面右上角的菜单按钮,包含主题、帮助、关于、退出四项。
主题
窗口主题包含浅色主题、深色主题和系统主题三种:
- 在启动盘制作工具界面,单击主菜单按钮;
- 单击主题,选择一个主题颜色。
源码上,主题切换通过DGuiApplicationHelper的themeTypeChanged信号分发:主窗口(bmwindow.cpp)与各页面(ISOSelectView、UsbSelectView、ProgressView、ResultView)分别连接该信号,在slot_ThemeChange()中为浅色(白底#FFFFFF)与深色(深灰底#292929)两套调色板设置背景色、文字色与图标资源(如浅色用media-optical-96px.svg、深色用disc_bg.png)。由于每个页面都实现了独立的主题适配函数,切换主题时整窗口所有元素会即时更新。
帮助
- 在界面单击主菜单按钮;
- 单击帮助,查看帮助手册,进一步了解和使用启动盘制作工具。
本文所依据的手册内容即对应仓库中src/help/deepin-boot-maker/boot-maker/目录下按语言组织的文档,如 en_US/p_boot-maker.md、zh_CN/p_boot-maker.md,另有 zh_TW、zh_HK 版本及各语言说明文件d_boot-maker.md。
关于
- 在界面单击主菜单按钮;
- 单击关于,查看启动盘制作工具的版本和介绍。
「关于」页面展示的版本信息以仓库debian/与rpm/下的打包元数据为准(见 debian/changelog、rpm/deepin-boot-maker.spec),应用名与图标由 deepin-boot-maker.desktop 声明。
退出
- 在界面单击主菜单按钮;
- 单击退出。
退出路径与「使用入门 → 关闭启动盘制作工具」一致。需要再次强调的约束是:一旦进入制作流程(进度页),主菜单的退出项会被禁用(setQuitMenuDisabled(true)),这是为了防止制作中途误退出导致 U 盘数据不完整。
小结
围绕这份操作手册,deepin-boot-maker 的完整使用链路为:启动器运行工具 → 拖拽或选择 ISO 并自动校验 → 选择 U 盘(多分区时取第一个分区,建议勾选格式化)→ 开始制作(进度页不可关闭、不可拔盘)→ 成功页 Done / 失败页按错误码提示排查。底层对应QtBaseInstaller::beginInstall()的八步流水线与BMHandler::ErrorType错误码体系,界面四页面由 bmwindow.cpp 通过QStackedLayout+ 滑动动画组织。如需进一步阅读实现,建议按以下源码路径深入:
- 界面:src/app/view/isoselectview.cpp、src/app/view/usbselectview.cpp、src/app/view/progressview.cpp、src/app/view/resultview.cpp;
- 制作引擎:src/libdbm/installer/qtbaseinstaller.cpp、src/libdbm/backend/bootmaker.cpp、src/libdbm/backend/bmhandler.h;
- 设备枚举与 D-Bus 服务:src/libdbm/util/utils.cpp、src/service/data/com.deepin.bootmaker.xml;
- 测试:src/tests/ 下的
bootmakertest、qtbaseinstallertest、sevenziptest等单元测试可帮助验证镜像校验与制作流程行为。
- 桌面应用
【免费下载链接】deepin-boot-maker
相关推荐
Deepin Boot Maker启动盘制作工具完整使用指南
Deepin Boot Maker启动盘制作工具完整使用指南 Deepin Boot Maker是一款专为深度操作系统设计的启动盘制作工具,能够帮助用户快速创建
桌面应用Cherry MX键帽3D打印完整指南:36款免费模型,从读懂参数到打样成功四步走
Cherry MX键帽3D打印完整指南:36款免费模型,从读懂参数到打样成功四步走 键盘上的键帽突然弹飞的那一刻,轴体顶部的十字柱裸露在空气里,越找替换件越发现
硬件开发3D建模Deepin Boot Maker 启动盘制作工具使用指南
Deepin Boot Maker 启动盘制作工具使用指南 Deepin Boot Maker 是一款由 Linux Deepin 团队开发的免费开源启动盘制作
桌面应用
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考