精通init ramfs构建step by step (四)

本文介绍如何使用mdev命令自动生成Linux系统的设备文件,并通过编写简单的init脚本来搭建一个基本可运行的Linux环境。该过程涉及挂载proc和sysfs文件系统、配置mdev等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

十一、自动生成/dev下的设备文件

  上节用chroot方法试验busybox时,为了简单,是用“绑定”的方式把主机的/dev中的设备文件映射到image目录下的dev目录。在init ramfs上,这种方法显然不能使用。

  生成系统的设备文件,现在通常都是用udev动态生成,而init ramfs为了做到通用,动态生成的要求是必须的。在busybox中有一个mdev命令,就是用来动态生成设备文件,填充到/dev目录的。

  在系统启动时,用

  mdev -s

  命令可以根据内核的sysfs文件系统在/dev目录中自动生成相应的设备文件。命令执行前,需要先挂载内核的proc和sysfs虚拟文件系统。

  十二、初始身手

  解决了自动生成设备文件的问题后,我们可以试着做一个最简单的可运行的linux系统了:

  (1)在image目录下写一个最简单的init脚本。

  #!/bin/sh

  mount -t proc proc /proc

  mount -t sysfs sysfs /sys

  mdev -s

  /bin/sh

  (2)为init脚本设置可执行权限,否则内核不会去执行它。

  chmod +x init

  (3)有些busybox配置中,mdev命令需要读取/etc/mdev.conf文件,为了避免出错信息,我们创建一个空文件。mdev.conf文件是用来控制mdev生成的设备文件的读写权限的,在这里我们不需要对设备文件设置特别的权限,就使用mdev缺省的660的权限设置。有关mdev的设备文件权限的控制详细信息,可参考busybox源码树docs目录下的mdev.txt文件。

  touch etc/mdev.conf

  (4)在内核源码目录下,执行

  make

  命令,重新编译内核,生成新的init ramfs。

  好了,在QEMU模拟环境下启动这个新的内核,系统初始化后,会进入SHELL环境。在这个SHELL环境下,试验一些常用命令,看看是否可以正常运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值