1.内核初始化过程,所有的函数列表。P26
2.在用户态初始化阶段init程序在每个tty端口上创建一个进程以支持用户登陆。每个进程都运行一个getty程序的拷贝。getty负责验证口令,进入shell
3.Shell的几大功能:
3.1 后台运行
if ((pid= fork() ==0)
execv(buffer, arg);
else{
if (is_back ==0)
waitpid(pid,&status,0);
}
3.2 I/O重定向
每个进程都在内核有自己的文件描述表(fileDescriptor)
用if (dup2(fd_out,STDOUT_FILENO)==-1) 把fd_out所指的file discriptor复制到 STDOUT。复制的文件描述词与原来的共享文件状态
3.3管道
int pipeID[2];
pipe(pipID);
pipeID[0]是一个文件描述符,指向管道的读端。pipeID[1]
父进程创建管道,让两个子进程读写。
4.Shell 脚本
argv1="$1"
set '/sbin/runlevel'
"command"格式的命令:执行command,并把结果替换到该位置
set 用于在脚本文件内设定命令行参数
[ -d /home/t ] []判断 其中的表达式
5.制作linux启动盘
启动分为两大:
1.root盘,所有的文件系统,ext2文件系统。拷贝所有的基本配置文件(rc,inittab,fstab)和基本命令和模块
dd if=/dev/ramdisk bs=1k | gzip -v9 > /rootfs.gz
dd if=/rootfs.gz of=/dev/fd0 bs=1k
2.boot盘,影像了linux内核 dd if=/boot/vmlinuz-2.4.2-2 of=/dev/fd0 bs=1k