#033
#034 mount(“tmpfs”, “/dev”, “tmpfs”, 0, “mode=0755”);
#035 mkdir(“/dev/pts”, 0755);
#036 mkdir(“/dev/socket”, 0755);
#037 mount(“devpts”, “/dev/pts”, “devpts”, 0, NULL);
#038 mount(“proc”, “/proc”, “proc”, 0, NULL);
#039 mount(“sysfs”, “/sys”, “sysfs”, 0, NULL);
在 Linux 中將一個文件系統與一個存儲設備關聯起來的過程稱為掛裝(mount)。使用 mount 命令將一個文件系統附著到當前文件系統層次結構中(根)。在執行掛裝時,要提供文件系統類型、文件系統和一個掛裝點。因此,這裡就是把tmpfs文件系統加到目錄/dev下面,文件系統的名稱是tmpfs。tmpfs是一個虛擬內存文件系統,它不同於傳統的用塊設備形式來實現的Ramdisk,也不同於針對物理內存的Ramfs。Tmpfs可以使用物理內存,也可以使用交換分區。在Linux內核中,虛擬內存資源由物理內存(RAM)和交換分區組成,這些資源是由內核中的虛擬內存子系統來負責分配和管理。Tmpfs向虛擬內存子系統請求頁來存儲文件,它同Linux的其它請求頁的部分一樣,不知道分配給自己的頁是在內存中還是在交換分區中。同Ramfs一樣,其大小也不是固定的,而是隨著所需要的空間而動態的增減。接著創建pts和socket目錄,在/dev/pts掛裝devpts虛擬文件系統,在目錄/proc掛裝proc文件系統,在目錄/sys掛裝sysfs文件系統。
#040
#041 /* We must have some place other than / to create the
#042 * device nodes for kmsg and null, otherwise we wont
#043 * be able to remount / read-only later on.
#044 * Now that tmpfs is mounted on /dev, we can actually
#045 * talk to the outside world.
#046 */
#047 open_devnull_stdio();
這段代碼是創建空的設備節點(/dev/null)。
#048 log_init();
這段代碼是創建kmsg(/dev/kmsg)節點,主要用來輸出LOG信息。比如把LOG信息輸出到開發板的串口上,再在電腦上打印出來,方便跟蹤和調試系統的功能。
#049
#050 //caijs add test. 2010-07-13
#051 ERROR(“Init::main() %s
“, “caijunsheng 2010-07-13”);
這裡是我測試系統引導輸出的一行LOG代碼。
#052
#053 INFO(“reading config file
“);
#054 parse_config_file(“/init.rc”);
這段代碼是分析根目錄下面的init.rc配置文件,並且把裡面的參數組成鏈表的方式,以便後面使用,後面再來仔細地分析init.rc文件的格式和內容。
#055
#056 /* pull the kernel commandline and ramdisk properties file in */
#057 qemu_init();
這裡初始化qemu模擬器運行計數,這裡是指模擬ARM指令的虛擬系統。
#058 import_kernel_cmdline(0);
這段代碼是從linux內核裡獲取引導系統給內核的引導參數,並保存到全局變量,以便使用