Android培訓班(11) – Android移動開發技術文章_手機開發 Android移動開發教學課程

#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內核裡獲取引導系統給內核的引導參數,並保存到全局變量,以便使用

發佈留言