蒋嵩林,openEuler社区
项目地址:https://gitlab.summer-ospp.ac.cn/summer2021/210010031
开发iso刻录DDE桌面应用
日常工作中,需要把iso镜像刻录至u盘或光盘上。编写一个类似UltraISO软碟通的openEuler DDE桌面应用。可以完成iso刻录至u盘。
目标操作流程和界面:
使用C++进行程序的编写,QT5框架进行软件前端的编写,可在Linux中运行(特别针对openEuler 20.03 SP1下Deepin桌面)。
qmake-qt5 ImageWriter.pro
sudo make install
- 安装完成后,在
启动器
中点击镜像文件刻录器
即可运行程序。 - 根据提示输入root密码,点击
认证
。 - 认证成功后即进入软件主界面。
- 插入U盘,过一会儿即会自动显示出当前系统中新插入U盘,你可以在已插入的U盘中进行选择需要操作的U盘。你也可以手动点击刷新图标进行更新。
- 然后点击打开文件图标,在对话框中选择源镜像文件,支持选择
iso
,bin
,img
格式的磁盘镜像。 - 随后可以点击
写入
按钮,在进一步确认后,写入将开始,显示进度条和取消
按钮,如果用户决定取消
,则停止操作。 - 要验证写入的U盘的完整性,请点击
验证
按钮,将会在屏幕顶部显示通知提示结果。这将比较磁盘镜像文件和U盘的数据散列号,如果镜像比较大,可能需要等待一段时间。 - 如果要还原U盘设备,请点击
清除
按钮。它将从磁盘中删除分区数据,并且您将能够将其格式化为FAT32以达到最大容量。
使用身边的U盘设备,选取各大发行版安装镜像,都可以正常进行写入。U盘都可以正常引导安装系统。
测试中U盘设备点击清除
后都可以将其格式化为FAT32以达到最大容量。
点击验证
按钮,将镜像和写入好的U盘对应起来可以提示验证成功,不对应则会正常提示验证失败。
其它交互过程中的测试都一切正常,无异常之处。
- 第1周 (7.1 - 5, 2021)
- 进一步了解Ventory,查阅相关资料。
- 第 2-6周 (7.6 - 8.9, 2021) 共计5周
- 仿照UltraISO,使用QTDesigner初步设计好图形界面。
- 进一步详细学习Ventory的原理。
- 如果在此期间时间有剩余,可以帮助社区解决一些其它Issue,贡献社区。
- 第7周 (8.10 - 15, 2021)
- 准备中期报告。
- 为可能的拖延预留的赶进度时间。
- 中期报告 (8.15, 2021)
- 使用QTDesigner初步设计好的图形界面。
- 帮助社区解决一些其它Issue,贡献社区。
- 第8-13周 (8.17 - 9.24, 2021) 共计5周半
- 进行图形界面的逻辑编写,实现刻录ISO功能。
- 第13-14周 (9.25 – 9.30, 2021)
- 准备结项报告。
- 为可能的拖延预留的赶进度时间。
- 结项(9.30, 2021)
- 类似UltraISO软碟通的openEuler DDE桌面应用。可以完成iso刻录至u盘。
- 未来 (10.1, 2021 -)
- 在成功完成此暑期2021项目后,我将继续为openEuler做出贡献并尽我所能继续维护。
-
可在openEuler 20.03 SP1中Deepin桌面运行的镜像刻录软件,具备将可启动iso镜像刻录至u盘的功能,另外支持U盘存储空间还原和刻录校验功能。同时支持中文和英文界面,国际化支持。已完成,项目成果提交仓库
-
将其打包成了可直接在openEuler上安装的rpm安装包。已完成,项目成果spec文件。
- 开发阶段第1周-第2周(2021/07/01-2021/07/15)0%
- 学习ISO刻录实现原理。
- 开发阶段第3周-第4周(2021/07/16-2021/07/31)20%
- 学习了ISO刻录实现原理(QT下可以使用QIODevice类调用设备,然后使用QFile进行镜像的写入操作)。
- 完成了UI界面的初步设计。
- 使用libudev库初步完成了识别U盘设备的功能。
- 开发阶段第5周-第6周(2021/08/01-2021/08/15)40%
- 进行镜像写入功能的实现。
- 写入镜像验证shell脚本的编写。
- 开发阶段第7周-第8周(2021/08/16-2021/08/31)60%
- 初步完成UI逻辑的编写。
- 完成中文支持。
- 开发阶段第9周-第10周(2021/09/01-2021/09/15)80%
- 完成rpm打包,提交spec文件。
- 编写程序使用教程,完善相关文档。
- 对程序进行测试。
- 开发阶段第11周-第12周(2021/09/16-2021/09/30)100%
- 对程序进行进一步测试。
- 准备结项。
-
识别U盘设备直接调用Linux提供的接口
libudev
。=> usbdevice.cpp -
写入镜像使用QIODevice类,然后使用QFile进行镜像的写入操作。=> imagewriter.cpp
-
清除使用
mkfs
直接调用命令进行格式化的形式来实现。=> mainwindow.cpp -
验证则直接使用shell脚本进行实现,通过UI调用。=> verifyimagewriter
项目总体来说完全实现了原有计划,完成情况较好。
每双周定时撰写暑期2021项目任务进展双周汇报,导师都能及时给予积极反馈。