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