static int init(void * unused) { lock_kernel(); do_basic_setup();
prepare_namespace();
/* * Ok, we have completed the initial bootup, and * we're essentially up and running. Get rid of the * initmem segments and start the user-mode stuff.. */ free_initmem(); unlock_kernel();
if (open("/dev/console", O_RDWR, 0) < 0) printk("Warning: unable to open an initial console.\n");
(void) dup(0); (void) dup(0);
/* * We try each of these until one succeeds. * * The Bourne shell can be used instead of init if we are * trying to recover a really broken machine. */
printk("========================================\n"); printk("= Friendly-ARM Tech. Ltd. =\n"); printk("= http://www.arm9.net =\n"); printk("= http://www.arm9.com.cn =\n"); printk("========================================\n");
if (execute_command) execve(execute_command,argv_init,envp_init); execve("/sbin/init",argv_init,envp_init); execve("/etc/init",argv_init,envp_init); execve("/bin/init",argv_init,envp_init); execve("/bin/sh",argv_init,envp_init); panic("No init found. Try passing init= option to kernel."); } |
这样在Linux的启动过程中,会额外地输出:
======================================== = Friendly-ARM Tech. Ltd. = = http://www.arm9.net = = http://www.arm9.com.cn = ======================================== |
4.文件系统移植
文件系统是基于被划分的存储设备上的逻辑上单位上的一种定义文件的命名、存储、组织及取出的方法。如果一个Linux没有根文件系统,它是不能被正确的启动的。因此,我们需要为Linux创建根文件系统,我们将其创建在K9S1208 NAND FLASH上。
Linux的根文件系统可能包括如下目录(或更多的目录):
(1)/bin (binary):包含着所有的标准命令和应用程序; (2)/dev (device):包含外设的文件接口,在Linux下,文件和设备采用同种地方法访问的,系统上的每个设备都在/dev里有一个对应的设备文件; (3)/etc (etcetera):这个目录包含着系统设置文件和其他的系统文件,例如/etc/fstab(file system table)记录了启动时要mount 的filesystem; (4)/home:存放用户主目录; (5)/lib(library):存放系统最基本的库文件;
|