边学边干Linux内核指导(1)——理解Shell

时间:2021-10-20 02:11:02

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