无忧启动论坛

标题: grub2 中md5sum的使用方式 [打印本页]

作者: helloxixi    时间: 2017-3-14 15:02
标题: grub2 中md5sum的使用方式
想在grub启动时对内核文件进行校验,目前看到md5sum -c 这个命令可以检测文件的完成性,但是如果MD5验证失败后就不启动内核,这个grub.cfg 关于md5sum这一段该怎么写?
作者: wintoflash    时间: 2017-3-15 20:14
请教一下md5sum -c是怎么用的?
作者: helloxixi    时间: 2017-3-16 11:56
wintoflash 发表于 2017-3-15 20:14
请教一下md5sum -c是怎么用的?

我先在ubuntu系统里面使用命令md5sun initrd.img-4.4.0-57-generic >/boot/file.md5  生成initrd.img-4.4.0-57-generic文件的md5校验文件。然后重启ubuntu,进入grub2 的command界面,然后在grub输入md5sum -c /boot/file.md5 -p /boot/ 这个命令可以通过这个file.md5文件校验initrd.img-4.4.0-57-generic这个文件,如果initrd.img-4.4.0-57-generic文件被修改过则会校验失败,没有修改则校验成功。我现在想通过校验结果来决定是否启动系统。现在遇到的问题是手动执行md5sum -c /boot/file.md5 -p /boot/ 可以做正确判断,但是现在遇到的问题不能依据这个执行结果做逻辑判断
作者: wintoflash    时间: 2017-3-16 12:05
helloxixi 发表于 2017-3-16 11:56
我先在ubuntu系统里面使用命令md5sun initrd.img-4.4.0-57-generic >/boot/file.md5  生成initrd.img-4.4 ...

命令执行失败,返回值为1,执行成功,返回值为0。根据这个用if判断应该可以吧。
作者: helloxixi    时间: 2017-3-16 17:11
wintoflash 发表于 2017-3-16 12:05
命令执行失败,返回值为1,执行成功,返回值为0。根据这个用if判断应该可以吧。

a=$(md5sum -c /boot/file.md5 -p /boot/)  这个命令取不到返回值,执行报错,是这样取返回值吗
作者: wintoflash    时间: 2017-3-16 17:40
helloxixi 发表于 2017-3-16 17:11
a=$(md5sum -c /boot/file.md5 -p /boot/)  这个命令取不到返回值,执行报错,是这样取返回值吗

md5sum -c /boot/file.md5 -p /boot/
a=$?
试一试。
作者: helloxixi    时间: 2017-3-16 18:03
wintoflash 发表于 2017-3-16 17:40
md5sum -c /boot/file.md5 -p /boot/
a=$?
试一试。

用你的方法能拿到返回值,但是文件被修改过和没有被修改过返回值都是0。我猜可能是命令执行是成功的,所以返回值都是0 但是校验成功了输出OK,文件被修改校验失败了输出failed  所以无论是ok,还是failed命令的返回值都是0 除非命令报错
作者: helloxixi    时间: 2017-3-16 18:50
wintoflash 发表于 2017-3-16 17:40
md5sum -c /boot/file.md5 -p /boot/
a=$?
试一试。

谢谢  可以了  把命令改成这样就可以获取到返回值,成功返回0,失败返回1 ,命令如下:
md5sum -c /boot/file.md5 -p /boot/
a=${?}





欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3