linux教程之利用initrd文件体系 U-boot引诱Linux办法
由于在linux中,用户权限很大,做任何事情都很自由,所以,你往往需要知道你做的每一步在干什么。bootm0x1000000x240000
(个中:0x100000是linux内核在flash中的地点,0x240000是initrd在flash中的地点)
setenvbootargsconsole=ttyS0,115200n8root=/dev/ramrwmem=32M
当u-boot利用下面的设置时,可以一般引诱linux加载initrd!
注重:
u-boot和linux内核之间是经由过程ATAG-TAG体例来传送启动参数的。u-boot依据上面的命令:
bootm0x1000000x240000
经由过程挪用setup_initrd_tag()在params=(structtag*)bd->bi_boot_params内存响应地位创建initd的TAG表项,向linux传送了关于initrd的内核参数,因而,不必在bootargs中再次指定initrd的相干参数了!
voiddo_bootm_linux(cmd_tbl_t*cmdtp,intflag,intargc,char*argv[],
ulongaddr,ulong*len_ptr,intverify)
{
ulonginitrd_start,initrd_end;
......
data=addr+sizeof(image_header_t);
len=ntohl(hdr->ih_size);
......
#ifdefined(CONFIG_B2)||defined(CONFIG_OSK_OMAP5912)
memmove((void*)ntohl(hdr->ih_load),(uchar*)data,len);
data=ntohl(hdr->ih_load);
#endif
......
if(data){
initrd_start=data;
initrd_end=initrd_start+len;
}
......
#ifdefined(CONFIG_SETUP_MEMORY_TAGS)||
defined(CONFIG_CMDLINE_TAG)||
defined(CONFIG_INITRD_TAG)||
setup_start_tag(bd);
......
#ifdefCONFIG_INITRD_TAG
if(initrd_start&&initrd_end)
setup_initrd_tag(bd,initrd_start,initrd_end);
#endif
......
setup_end_tag(bd);
#endif
......
theKernel(0,bd->bi_arch_number,bd->bi_boot_params);
}
#ifdefCONFIG_INITRD_TAG
staticvoidsetup_initrd_tag(bd_t*bd,ulonginitrd_start,ulonginitrd_end)
{
params->hdr.tag=ATAG_INITRD2;
params->hdr.size=tag_size(tag_initrd);
params->u.initrd.start=initrd_start;
params->u.initrd.size=initrd_end-initrd_start;
params=tag_next(params);
}
#endif
#ifdefined(CONFIG_SETUP_MEMORY_TAGS)||
defined(CONFIG_CMDLINE_TAG)||
defined(CONFIG_INITRD_TAG)||
......
staticvoidsetup_start_tag(bd_t*bd)
{
params=(structtag*)bd->bi_boot_params;
......
params=tag_next(params);
}
intboard_init(void)
{
DECLARE_GLOBAL_DATA_PTR;
gd->bd->bi_arch_number=234;
gd->bd->bi_boot_params=0x10000100;
......
}
</p>
开发linux发行版的人都是通读过linux内核代码,对linux原理极其精通的人。 一些显而易见的小错误还是用vi改正比较方便。以后的大一点的程序就得在Linux下调试了,因为有的头文件在VC里面说找不到。? 随着Linux技术的更加成熟、完善,其应用领域和市场份额继续快速增大。目前,其主要应用领域是服务器系统和嵌入式系统。然而,它的足迹已遍布各个行业,几乎无处不在。 我学习Linux的心得体会 ,希望对大家的学习有所帮助,由于水平有限,本文难免有所欠缺,望请指正。 任何人都可以根据自己的喜好来定制适合自己的操作系统,Linux?是抢占式多任务多用户操作系统. 其实当你安装了一个完整的Linux系统后其中已经包含了一个强大的帮助,只是可能你还没有发现和使用它们的技巧。 在学习的过程中,我们用的是VM虚拟机,开始时真的不真的该怎么去做,特别是我的是命令窗口界面,别人的是图形界面,我都不知道怎么调过来。 工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。目前国内关于Linux的书籍有很多不过精品的不多。
页:
[1]