openKylin U盘启动器是一款用于制作系统启动U盘的工具,可将镜像文件制作成U盘形式的安装介质,方便无光驱介质的电脑安装镜像文件。其主要功能是制作系统,方便系统的安装,具体的实现过程如下:

1、查看U盘

openKylin U盘启动器通过udiskPlugWatcherInit函数自动监控/dev/目录下的文件变更,一旦有新设备U盘插入就重新执行lsblk解析shell的执行结果,获取出U盘信息。

U盘信息的解析过程是分别执行了lsblk-J 和lsblk-JS,筛选出所有USB协议连接的硬盘。其中lsblk-J中的J参数是将结果以json类型来展示,之后通过QJson类提取出U盘的信息。因为涉及到格式化整个物理设备,因此U盘在展示时是以整个物理单位展示,而不是按照分区显示。显示的具体格式为:U盘型号(设备文件路径),容量。例如:DataTraveler_3.0(/dev/sda) 32G。如果插入多个U盘,则是在下拉框中显示,且按照插入顺序进行显示。如下图1所示:

图1.U盘启动器首界面

2、查找镜像

查找镜像有两种方式,第一种是点击图1中的加号按钮查找镜像,点击后进入图2界面,此界面的原理是:通过使用QFileDialog::getOpenFileName()的方式,打开文件选取框,之后通过调用QFile的open函数,read函数获取尾缀为.iso的镜像文件,且计算iso.size()的方式获得文件的字节大小,之后通过除以10的6次方的方式转为GB。

图2.选择镜像文件

第二种获取镜像文件方式,便是在文件中选取尾缀为.iso的镜像文件,然后拖拽到打开的U盘启动器界面,这种方式的原理是将镜像文件的路径通过传值的方式,传输到界面。当然也用到了拖拽函数dragEnterEvent(),dropEvent(),这两个函数一般成对出现。

此外,如果已经拥有镜像文件,则可以点击右键选择U盘启动器直接进行镜像文件的制作,这种方式的原理类似第二种。

3、授权校验密码

当我们点击开始制作按钮后,系统将调用dbus接口,跳转到授权校验界面,用户输入密码授权,执行"echo'" + 密码+"'| sudo -S -l"判断用户输入的密码是否正确,如图3。

图3.授权界面

4、制作镜像

制作开始前卸载u盘,点击开始制作按钮,通过makeStart函数,将授权的正确密码、镜像文件的路径,u盘的路径这三个参数传输到进程中。具体函数如下:

makeStart(authDialog->dialogKey->text(),isoPath,comboUdisk->getDiskPath());

之后使用QProcess进程的读写函数来读入dd命令,具体的读写函数语句为:

S dd if='"+sourcePath.toLocal8Bit()+"'of="+targetPath.toLocal8Bit()+"status=progress";

这条语句包括U盘路径,镜像文件路径和状态progress。以上两条语句便是U盘镜像制作的关键点。

同时,用户也可以在以下界面通过观察进度图,判断制作情况,进度条图的展示使用的是圆形进度条。首先使用QPainter函数画圆之后,使用setPersent()将进度传入进度条中,这种方式不用通过查看后台服务端的运行情况,更方便用户的体验,交互感更强烈,如图4。

图4.正在制作界面

在制作完成后,waitForFinished()等待系统落盘,落盘后会提示制作完成,跳到制作完成界面。

图5.制作完成界面

如果在制作中途点击关闭,会弹出如下提示框,告诉用户启动盘正在制作中,是否停止,如果选是,则停止任务退出程序,如果选否,则会继续从当前制作制作启动盘。

图6.制作途中途中提示界面

好啦~以上就是对openKylin U盘启动器的部分原理介绍,如果有小伙伴对此感兴趣,可通过点击openKylin/sig-documentation  前往openKylin仓库查看源码进行研究哦。

openKylin(开放麒麟)社区旨在以“共创”为核心,在开源、自愿、平等、协作的基础上,通过开源、开放的方式与企业构建合作伙伴生态体系,共同打造桌面操作系统顶级社区,推动Linux开源技术及其软硬件生态繁荣发展。

社区首批理事成员单位包括麒麟软件、普华基础软件、中科方德、麒麟信安、凝思软件、一铭软件、中兴新支点、元心科技、中国电科32所、技德系统、北京麟卓、先进操作系统创新中心等13家产业同仁和行业机构。

来源:戎有丽

审核:openKylin

【小白课程】openKylin U盘启动器介绍相关推荐

  1. CDLinux制作U盘启动器,并设置电脑以U盘启动(一次失败经历的学习笔记)

    电脑(laptop)硬件型号:dell灵越5488 三个步骤+可能的问题记录或分析+反思收获+还存在的疑问: 一.制作U盘启动器(四个步骤) 下载CDLinux镜像文件 用UltraISO将其刻录进U ...

  2. Apollo进阶课程㊱丨Apollo ROS深入介绍

    原文链接:进阶课程㊱丨Apollo ROS深入介绍 ROS是一个强大而灵活的机器人编程框架,从软件构架的角度说,它是一种基于消息传递通信的分布式多进程框架.ROS本身是基于消息机制的,可以根据功能把软 ...

  3. 黑马大数据分析课程---1、大数据分析介绍

    黑马大数据分析课程---1.大数据分析介绍 一.总结 一句话总结: 大数据为机器学习.人工智能等提供了数据依据 1.数据清洗包括哪些方面? 去掉脏数据 使数据格式化 2.数据挖掘是什么? 高级的数据分 ...

  4. 脑机接口系列课程(二) SSVEP介绍及相关软件的安装、实验范式的搭建

    脑机接口系列课程(二) SSVEP介绍及相关软件的安装.实验范式的搭建 导言:这是脑机接口系列课程的第二篇,也是SSVEP部分的第一节,介绍SSVEP相关知识和实验范式的搭建等,属于基础入门篇,文章靠 ...

  5. 为啥计算机课要带u盘,课程计算机U盘是什么

    课程计算机U盘是什么 來源:互聯網  2009-07-28 02:40:30  評論 分類: 電腦/網絡 >> 電腦常識 問題描述: 讲明白点.<<<<<&l ...

  6. 2020ndroid开发爆款书籍推荐:从小白—Android高级工程师系列学习路线书籍介绍

    书是人类进步的阶梯 书中自有黄金屋,书中自有颜如玉 读书破万卷,下笔如有神 书是唯一不死的东西. 书籍是伟大的天才留给人类的遗产. 最近有很多朋友在我的公众号上提问"Android开发的经典 ...

  7. Ubuntu下的U盘启动器制作

    Ubuntu下的U盘启动器制作 准备工作 安装 写入 准备工作 原先有两个U盘用来制作U盘启动器,一个Windows系统,一个Ubuntu,奈何windows系统的U盘被我格式化了,只能在Ubuntu ...

  8. MAC的VMware Fusion使用U盘启动器启动系统

    系统:macOS Mojave 10.14.2 VMware Fusion:专业版 11.0.0 (10120384) U盘启动器:老毛桃 参考的官方教程 编辑 VMware Fusion 虚拟机的 ...

  9. 制作ESX6.0 U盘启动器

    首先附上ESX6.0的下载链接:http://pan.baidu.com/s/1pLSW5mF 把ESX6.0下载下来以后,在下载一个软件rufus来制作u盘启动器 rufus下载链接:http:// ...

最新文章

  1. 基于Tkinter利用python实现颜色空间转换程序
  2. ubuntu下oracle数据的导入,导入oracle数据库命令行
  3. Java面向接口编程,低耦合高内聚的设计哲学
  4. Ubuntu-16.04 部署 OpenStack Ocata下
  5. ASP.NET的MVC请求处理流程
  6. SpringData_Repository接口概述
  7. 《Groovy in Action》笔记
  8. 50-20-192-配置-Flink 配置文件详解-zoo.cfg
  9. 算法学习--链表/Hash--LRU cache
  10. linux mysql 数据库同步
  11. python打印当前时间
  12. java中udp的使用
  13. Wireshark软件的使用教程
  14. 基于java的仓库管理系统_基于Java的仓库管理系统.doc
  15. python爬微博话题_用Python写一个简单的微博爬虫
  16. 【小程序源码】游戏助手王者荣耀战力查询,游戏扫码登录器等
  17. 一元二次方程abc决定什么_专题—二次函数一元二次方程-abc意义.pptx
  18. 计算机编程 计算存款利息,第8周项目5-定期存款利息计算器
  19. Python数据清洗:提取爬虫文本中的电话号码
  20. Android刘海屏、水滴屏全面屏适配详解,android开发权威指南

热门文章

  1. 整夜我的背影是一条踏往星空的道路
  2. 审阅 Windchill 和 Creo 设置
  3. 我想了一晚上的一道题目:关于dfs+回溯+部分图论
  4. mysql字符类型_MYSQL字符类型大全
  5. Mac安装Homebrew的正确姿势
  6. P7589 黑白棋(2021 CoE-II B
  7. java中的7种单例模式
  8. 【转载】--CSDN中如何转载文章
  9. 第21章 翱翔于三维空间——游戏摄像机的构建
  10. 汇总网上资料,一篇文章扫盲“容器技术”