linux文件系统启动分析

简介

最近正在制作关于yaffs2的最小文件系统。

组成

zhou@ubuntu:~/weidongshan/fs/fsroot$ ls 
bin  dev  etc  lib  linuxrc  mnt  proc  root  sbin  sys  tmp  usr

etc文件

etc目录下面放置配置文件
init进程会根据inittab文件创建子进程。比如调用脚本文件配置IP地址挂载其他文件系统最后会启动shell等。需要注意的是ubuntu下面没有inittab文件

zhou@ubuntu:~/weidongshan/fs/fsroot/etc$ ls
fstab  init.d  inittab
zhou@ubuntu:~/weidongshan/fs/fsroot/etc$ cat inittab 
# /etc/inittab
::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r

inittab的语法
identifier : run_level : action : process

zhou@ubuntu:~/weidongshan/fs/fsroot/etc$ cat init.d/rcS 
#!/bin/sh
#ifconfig eth0 192.168.1.17
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

调用rcS脚本完成一系列的挂载。
mount -a [-t|-O] … : mount all stuff from /etc/fstab

zhou@ubuntu:~/weidongshan/fs/fsroot/etc$ cat fstab 
# device     mount-point    type   options        dump  fsck order
proc           /proc        proc   defaults        0     0
tmpfs          /tmp         tmpfs  defaults        0     0
sysfs          /sys         sysfs  defaults        0     0
tmpfs          /dev         tmpfs  defaults        0     0
  • proc
    proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。
  • sys
    sys文件夹。Sysfs文件系统是一个类似于proc文件系统的特殊文件系统,用于将系统中的设备组织成层次结构,并向用户模式程序提供详细的内核数据结构信息。其实,就是在用户态可以通过对sys文件系统的访问,来看内核态的一些驱动或者设备等。
  • dev
    dev文件夹。dev目录中包含了所有Linux系统中使用的外部设备

sbin

zhou@ubuntu:~/weidongshan/fs/fsroot/sbin$ ls
acpid       devmem       getty      ifup      lsmod      mkfs.minix  poweroff     slattach           syslogd
adjtimex    fbsplash     halt       init      makedevs   mkfs.vfat   raidautorun  start-stop-daemon  tunctl
arp         fdisk        hdparm     insmod    man        mkswap      reboot       sulogin            udhcpc
blkid       findfs       hwclock    klogd     mdev       modinfo     rmmod        swapoff            vconfig
blockdev    freeramdisk  ifconfig   loadkmap  mkdosfs    modprobe    route        swapon             watchdog
bootchartd  fsck         ifdown     logread   mke2fs     nameif      runlevel     switch_root        zcip
depmod      fsck.minix   ifenslave  losetup   mkfs.ext2  pivot_root  setconsole   sysctl

/sbin 下的命令属于基本的系统命令。其中init创建就是PID为1的著名init进程
可以使用

zhou@ubuntu:~/weidongshan/fs/fsroot/sbin$ sudo strace init 

追踪一下init的调用过程。

  • linuxrc
lrwxrwxrwx  1 zhou zhou   11 Dec 18  2012 linuxrc -> bin/busybox

内核启动完之后,运行/linuxrc。这里使用的是称为瑞士军刀的busybox

参考资料

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值