做网站公司郑州郑州的网站建设公司哪家好,网络营销外包是干啥的,wordpress的首页,软件推广是什么工作1.内核启动文件系统后#xff0c;文件系统的工作流程 1.参数的接收 2.参数的解析 3.参数的应用
问题#xff1a;
1. UBOOT 传给 KERNEL 的参数是以tagglist进行的 KERNEL 传给 文件系统(busybox)的参数是以什么进行的#xff1f;
2. 在整个文件系统中都需…1.内核启动文件系统后文件系统的工作流程 1.参数的接收 2.参数的解析 3.参数的应用
问题
1. UBOOT 传给 KERNEL 的参数是以tagglist进行的 KERNEL 传给 文件系统(busybox)的参数是以什么进行的
2. 在整个文件系统中都需要什么组件 文件系统初始化流程
parse_inittab() file fopen(INITTAB, r) //#define INITTAB /etc/inittab if (file NULL) { /* Reboot on Ctrl-Alt-Del */ new_init_action(CTRLALTDEL, reboot, ); /* Umount all filesystems on halt/reboot */ new_init_action(SHUTDOWN, umount -a -r, ); /* Swapoff on halt/reboot */ if (ENABLE_SWAPONOFF) new_init_action(SHUTDOWN, swapoff -a, ); /* Prepare to restart init when a HUP is received */ new_init_action(RESTART, init, ); /* Askfirst shell on tty1-4 */ new_init_action(ASKFIRST, bb_default_login_shell, ); new_init_action(ASKFIRST, bb_default_login_shell, VC_2); new_init_action(ASKFIRST, bb_default_login_shell, VC_3); new_init_action(ASKFIRST, bb_default_login_shell, VC_4); /* sysinit */ new_init_action(SYSINIT, INIT_SCRIPT, );
inittab的格式 Format for each entry: id:runlevels:action:process
文件系统默认的参数解析
static void new_init_action(int action, const char *command, const char *cons)
{struct init_action *new_action, *a, *last;if (strcmp(cons, bb_dev_null) 0 (action ASKFIRST))return;/* Append to the end of the list */for (a last init_action_list; a; a a-next) {/* dont enter action if its already in the list,* but do overwrite existing actions */if ((strcmp(a-command, command) 0) (strcmp(a-terminal, cons) 0)) {a-action action;return;}last a;}new_action xzalloc(sizeof(struct init_action));if (last) {last-next new_action;} else {init_action_list new_action;}strcpy(new_action-command, command);new_action-action action;strcpy(new_action-terminal, cons);messageD(L_LOG | L_CONSOLE, command%s action%d tty%s\n,new_action-command, new_action-action, new_action-terminal);
}struct init_action {struct init_action *next;int action;pid_t pid;char command[INIT_BUFFS_SIZE];char terminal[CONSOLE_NAME_SIZE];
};
默认的inittab
::ctrlaltdel:/sbin/reboot
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r
::restart:/sbin/init
::askfirst:/bin/sh
tty2::askfirst:/bin/sh
tty3::askfirst:/bin/sh
tty4::askfirst:/bin/sh
::SYSINIT:/etc/init.d/rcS
参数使用流程 run_actions(SYSINIT); waitfor(a, 0); //运行该action对应的命令函数并且等待其退出
启动流程 run_actions(SYSINIT); //运行::SYSINIT:/etc/init.d/rcS脚本并且等待退出 run_actions(WAIT); run_actions(ONCE); while (1) {/* run the respawn stuff */run_actions(RESPAWN);/* run the askfirst stuff */run_actions(ASKFIRST);//:/bin/sh/* Dont consume all CPU time -- sleep a bit */sleep(1);/* Wait for a child process to exit */wpid wait(NULL);while (wpid 0) {/* Find out who died and clean up their corpse */for (a init_action_list; a; a a-next) {if (a-pid wpid) {/* Set the pid to 0 so that the process gets* restarted by run_actions() */a-pid 0;message(L_LOG, process %s (pid %d) exited. Scheduling it for restart.,a-command, wpid);}}/* see if anyone else is waiting to be reaped */wpid waitpid(-1, NULL, WNOHANG);}}
一个文件系统都需要什么 1./dev/console 2.init_main函数----busybox 3./etc/init.d/rcS--脚本 4.因为需要运行shell命令所以要有shell命令的支持函数---busybox 5.标准库函数包含glibc