如何列出Linux引导期间使用的所有文件

维塔利·伊萨耶夫(Vitaly Isaev)

我想获取在Linux启动过程中使用的文件列表。我们正在开发基于RHEL 6.4的受保护企业系统。指定文件的完整性将通过特殊硬件检查。

因此,问题是-如何获取这些文件的列表(已解决的依赖关系来自不同的引导服务和守护程序)。

维塔利·伊萨耶夫(Vitaly Isaev)

感谢RHEL的支持,发现了明确的解决方案。它基于systemtap内核模块的使用情况。这里引用以避免链接腐烂。再次感谢您的所有建议:)

我什至无法想象systemtap甚至可以在初始化脚本之前启动并跟踪启动过程。我非常感谢Red Hat 支持和我个人Pushpendra Chavan在此完美工具方面的帮助(不幸的是,我不知道该方法确切属于开发人员-否则我会首先归功于他们)。

因此,我们需要创建两个简单的脚本:

bootinit.sh

#!/bin/sh


# Use tmpfs to collect data
/bin/echo "Mounting tmpfs to /tmp/stap/data"
/bin/mount -n -t tmpfs -o size=40M none /tmp/stap/data

# Start systemtap daemon & probe
/bin/echo "Loading bootprobe2.ko in the background. Pid is :"
/usr/bin/staprun \
    /root/bootprobe2.ko \
    -o /root/bootprobe2.log -D

# Give daemon time to start collecting...
/bin/echo "Sleeping a bit.."
sleep 5

# Hand off to real init
/bin/echo "Starting."
exec /sbin/init 3

bootprobe2.1.stp用嵌入式systemtap脚本语言编写:

global ident

function get_usertime:long() {
  return task_utime() + @cast(task_current(), "task_struct", "kernel<linux/sched.h>")->signal->utime;
}

function get_systime:long() {
 return task_stime() + @cast(task_current(), "task_struct", "kernel<linux/sched.h>")->signal->stime;
}

function timestamp() {
  return sprintf("%d %s", gettimeofday_s(), ident[pid()])
}

function proc() {
  return sprintf("%d \(%s\)", pid(), execname())
}  

function push(pid, ppid) {
   ident[ppid] = indent(1)
   ident[pid] = sprintf("%s", ident[ppid])
}

function pop(pid) {
  delete ident[pid]
} 

probe syscall.fork.return {
  ret = $return
  printf("%s %s forks %d  \n", timestamp(), proc(), ret)
  push(ret, pid())
}

probe syscall.execve {
  printf("%s %s execs %s \n", timestamp(), proc(), filename)
}

probe syscall.open {
  if ($flags & 1) {
    printf("%s %s writes %s \n", timestamp(), proc(), filename)
  } else {
    printf("%s %s reads %s \n", timestamp(), proc(), filename)
  }
} 

probe syscall.exit {
  printf("%s %s exit with user %d sys %d \n", timestamp(), proc(), get_usertime(), get_systime())
  pop(pid())
}
<linux sched.h=""><linux sched.h="">
</linux></linux>

为了接收在启动过程中以systemtap日志格式访问的文件列表,我们应该实现以下内容:

下载并安装适当命名的版本的systemtapkernel debuginfo软件包(已获得此链接,但如果您使用的是CentOS,则最好使用链接);

创建/tmp/stap/tmp/stap/data

mkdir -p /tmp/stap/data

地方bootprobe2.1.stpbootinit.sh/root,使它们可执行的:chmod + X /根/启动*

bootinit.sh如果默认运行级别为5,则将“ exec / sbin / init 3”编辑并更改为“ exec / sbin / init 5”。

从bootprobe2.stp创建.ko模块

 cd /root
 stap bootprobe2.1.stp -m bootprobe2 -p4

重启。

停止grub(按Esc或Shift)并在默认内核上按'a'。在内核行的末尾输入以下内容,然后按Enter键:

init=/root/bootinit.sh,

正常启动将恢复。登录后,kill将其stapio复制bootprobe2.logtmpfs /tmp/stap/data目录中并卸载。

killall stapio
cp /tmp/stap/data/bootprobe2.log /tmp/stap/
umount /tmp/stap/data  

现在,检查文件/tmp/stap/bootprobe2.log文件以获取在引导过程中读取的所有文件的列表。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用python动态列出目录中的所有文件?

来自分类Dev

Ubuntu / Linux搜索-如何列出所有驱动器上的所有文件?

来自分类Dev

从磁盘读取文件期间使用中断

来自分类Dev

如何列出所有文件的特定提交?

来自分类Dev

在 SonarQube 6.7.5 扫描期间使用几乎所有内存的 Oracle DB 服务器

来自分类Dev

引导后如何查看Linux中的所有引导消息?

来自分类Dev

如何从Linux操作系统列出Windows操作系统分区上的所有文件?

来自分类Dev

如何列出Linux中的所有可执行文件(目录,子目录,$ PATH)?

来自分类Dev

如何在Linux上列出可执行文件的所有正在运行的实例?

来自分类Dev

如何在VSTS构建期间使用OctoPack避免XML文件中的无效字符?

来自分类Dev

如何使用angular js列出文件夹中的所有文件名

来自分类Dev

列出我在Linux集群上创建的所有文件

来自分类Dev

如何使用Linux内核模块中的地址转储/列出所有内核符号?

来自分类Dev

使用PHP递归列出所有带有日期的文件

来自分类常见问题

如何使用adb shell列出android手机中的所有文件?

来自分类Dev

如何使用PHP从Google Cloud Storage的存储桶中列出所有文件?

来自分类Dev

如何使用C ++列出Windows目录中的所有CSV文件?

来自分类Dev

如何使用nodeJS列出所有子目录和文件?

来自分类Dev

如何使用dir以UTF-8编码简单地列出目录的所有文件?

来自分类Dev

如何使用JQuery设置列出所有'.xml'文件的路径名

来自分类Dev

如何使用Make列出特定目录中的所有源文件

来自分类Dev

使用Java,如何列出和打印MS-Access 2003 mdb文件中的所有查询?

来自分类Dev

如何使用PHP从Google Cloud Storage的存储桶中列出所有文件?

来自分类Dev

如何将所有不推荐使用的类列出到文件中?

来自分类Dev

如何使用美丽的汤列出在 html 文件中包含 PA/ 的所有字符串

来自分类Dev

如何使用bash列出目录中的所有pdf文件,按字母倒序排序?

来自分类Dev

在Unix上登录期间使用什么文件?

来自分类Dev

如何使用grep查看Linux中的所有文件?

来自分类Dev

如何列出Linux中所有锁定的用户?

Related 相关文章

  1. 1

    如何使用python动态列出目录中的所有文件?

  2. 2

    Ubuntu / Linux搜索-如何列出所有驱动器上的所有文件?

  3. 3

    从磁盘读取文件期间使用中断

  4. 4

    如何列出所有文件的特定提交?

  5. 5

    在 SonarQube 6.7.5 扫描期间使用几乎所有内存的 Oracle DB 服务器

  6. 6

    引导后如何查看Linux中的所有引导消息?

  7. 7

    如何从Linux操作系统列出Windows操作系统分区上的所有文件?

  8. 8

    如何列出Linux中的所有可执行文件(目录,子目录,$ PATH)?

  9. 9

    如何在Linux上列出可执行文件的所有正在运行的实例?

  10. 10

    如何在VSTS构建期间使用OctoPack避免XML文件中的无效字符?

  11. 11

    如何使用angular js列出文件夹中的所有文件名

  12. 12

    列出我在Linux集群上创建的所有文件

  13. 13

    如何使用Linux内核模块中的地址转储/列出所有内核符号?

  14. 14

    使用PHP递归列出所有带有日期的文件

  15. 15

    如何使用adb shell列出android手机中的所有文件?

  16. 16

    如何使用PHP从Google Cloud Storage的存储桶中列出所有文件?

  17. 17

    如何使用C ++列出Windows目录中的所有CSV文件?

  18. 18

    如何使用nodeJS列出所有子目录和文件?

  19. 19

    如何使用dir以UTF-8编码简单地列出目录的所有文件?

  20. 20

    如何使用JQuery设置列出所有'.xml'文件的路径名

  21. 21

    如何使用Make列出特定目录中的所有源文件

  22. 22

    使用Java,如何列出和打印MS-Access 2003 mdb文件中的所有查询?

  23. 23

    如何使用PHP从Google Cloud Storage的存储桶中列出所有文件?

  24. 24

    如何将所有不推荐使用的类列出到文件中?

  25. 25

    如何使用美丽的汤列出在 html 文件中包含 PA/ 的所有字符串

  26. 26

    如何使用bash列出目录中的所有pdf文件,按字母倒序排序?

  27. 27

    在Unix上登录期间使用什么文件?

  28. 28

    如何使用grep查看Linux中的所有文件?

  29. 29

    如何列出Linux中所有锁定的用户?

热门标签

归档