共计 1899 个字符,预计需要花费 5 分钟才能阅读完成。
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 命令,具体的读写函数语句为:”echo'”+key.toLocal8Bit()+”‘| sudo -S dd if='”+sourcePath.toLocal8Bit()+”‘of=”+targetPath.toLocal8Bit()+”status=progress”; 这条语句包含 U 盘门路,镜像文件门路和状态 progress。以上两条语句便是 U 盘镜像制作的关键点。同时,用户也能够在以下界面通过观察进度图,判断制作状况,进度条图的展现应用的是圆形进度条。首先应用 QPainter 函数画圆之后,应用 setPersent()将进度传入进度条中,这种形式不必通过查看后盾服务端的运行状况,更不便用户的体验,交互感更强烈,如图 4。
图 4. 正在制作界面在制作实现后,waitForFinished()期待零碎落盘,落盘后会提醒制作实现,跳到制作实现界面。
图 5. 制作实现界面如果在制作中途点击敞开,会弹出如下提示框,通知用户启动盘正在制作中,是否进行,如果选是,则进行工作退出程序,如果选否,则会持续从以后制作制作启动盘。
图 6. 制作途中途中提醒界面好啦~ 以上就是对 openKylin U 盘启动器的局部原理介绍,如果有小伙伴对此感兴趣,可通过点击 https://gitee.com/openkylin/s… 返回 openKylin 仓库查看源码进行钻研哦。
openKylin(凋谢麒麟)社区旨在以“共创”为外围,在开源、被迫、平等、合作的根底上,通过开源、凋谢的形式与企业构建合作伙伴生态体系,独特打造桌面操作系统顶级社区,推动 Linux 开源技术及其软硬件生态凋敝倒退。社区首批理事成员单位包含麒麟软件、普华根底软件、中科方德、麒麟信安、凝思软件、一铭软件、中兴新支点、元心科技、中国电科 32 所、技德零碎、北京麟卓、先进操作系统翻新核心等 13 家产业同仁和行业机构。
起源:戎有丽
审核:openKylin