来看看:Uboot对非Linux kernel的引诱
系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo、pswho完成了uboot对非linuxkernel的引诱。固然有一个IH_TYPE_STANDALONE,可是没有完成。nnd.只能本人想举措。完成具体见上面。
1、两个命令
setbootcmdtftp84000000uImage;bootm84000000
setbootdelay1
2、非linuxkernel的引诱完成办法:
一共三个函数:jump,selectboot和system_boot
把jump放在必要跳转的中央,参数就是要跳转的地点。然后前往,重启体系。select放在main的开首。经由过程判别ram的特定地点的特定信息完成跳转。
system_boot完成体系的从头启动
#defineFDMA_SRAM_TOP_ADDRESS0xB9229800
#defineMAGIC_NUM0x71097100
#defineDEAD_PATTERN0xBAD0BADF
#defineST40_CPG_REGS_BASE0xFFC00000#define
ST40_CPG_WTCNT(ST40_CPG_REGS_BASE+0x08)
#defineST40_CPG_WTCSR(ST40_CPG_REGS_BASE+0x0C)
#defineST40_CPG_WTCSR2(ST40_CPG_REGS_BASE+0x1C)
voidJump(unsignedintaddress)
{
STSYS_WriteRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*1,MAGIC_NUM);
STSYS_WriteRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*2,address);
STSYS_WriteRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*3,~address);
STSYS_WriteRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*4,~MAGIC_NUM);
STSYS_WriteRegDev16LE(ST40_CPG_WTCNT,0x5AF0);/*Watchdogcounter*/
STSYS_WriteRegDev16LE(ST40_CPG_WTCSR,0xA547);/*Watchdogcontrol*/
STSYS_WriteRegDev16LE(ST40_CPG_WTCSR2,0xAA00);/*Watchdogcontrol2*/
STSYS_WriteRegDev16LE(ST40_CPG_WTCSR,0xA5C7);/*Startwatchdogcounter*/for(;;);
}
voidSelectBoot(void)
{
unsignedintMagicNum=0;
unsignedintNotMagicNum=0;
unsignedintJumpAddress=0;
unsignedintNotJumpAddress=0;void(*entry)(void);
/*entry=0xa0100000;
entry();*///if((STSYS_ReadRegDev16LE(ST40_CPG_WTCSR2)&0xFF)!=0x0)
{
MagicNum=STSYS_ReadRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*1);
JumpAddress=STSYS_ReadRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*2);
NotJumpAddress=STSYS_ReadRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*3);
NotMagicNum=STSYS_ReadRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*4);
if((MagicNum==MAGIC_NUM)
&&(MagicNum==(~NotMagicNum))
&&(JumpAddress==(~NotJumpAddress)))
{
entry=(void(*)(void))JumpAddress;
STSYS_WriteRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*1,DEAD_PATTERN);
STSYS_WriteRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*2,DEAD_PATTERN);
STSYS_WriteRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*3,DEAD_PATTERN);
STSYS_WriteRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*4,DEAD_PATTERN);
#if0/*SetupForwatchdogincasejumpfailed.*/
STSYS_WriteRegDev16LE(ST40_CPG_WTCNT,0x5AF0);
STSYS_WriteRegDev16LE(ST40_CPG_WTCSR,0xA543);
STSYS_WriteRegDev16LE(ST40_CPG_WTCSR2,0xAA01);
STSYS_WriteRegDev16LE(ST40_CPG_WTCSR,0xA5C7);
#endifentry();while(1);
}
}
}voidsystem_reboot(void)
{
ulongsr;
asm("stcsr,%0":"=r"(sr));
sr|=(1<<28);/*setblockbit*/
asm("ldc%0,sr"::"r"(sr));
asmvolatile("trapa#0");
}
</p>
当你经过一段时间的学习后就应该扩充自己的知识,多学习linux命令,但是不要在初学阶段就系统的学习linux命令。 如果上面的措施没有解决问题,此时你就需要Linux社区的帮助了。Linux的使用者一般都是专业人士,他们有着很好的电脑背景且愿意协助他人。 请问谁有Linux的学习心得的吗?简单的说说? 首先Linux是开源的,这也是最主要的原因,想学windows,Unix,对不起我们没源代码。也正是因为这样,Linux才能够像滚雪球一样越滚越大,发展到现在这种规模。 再次,Linux是用C语言编写的,我们有学习C语言的基础,读程序和编写代码方面存在的困难小一点,也是我们能较快掌握的原因之一。? 掌握在Linux系统中安装软件,在安装Linux工具盘后大致日常所需的软件都会有,一般网络提供下载的软件都会有安装说明。 我们自学,就这个循环的过程中,我们学习了基本操作,用vi,shell,模拟内存的分配过程等一些OS管理。 这种补充有助于他人在邮件列表/新闻组/论坛中搜索对你有过帮助的完整解决方案,这可能对他们也很有用。 请问谁有Linux的学习心得的吗?简单的说说?
页:
[1]