uboot启动常见的错误汇总
刷机失败问题解析
======== (command write failed (Invalid argument)) / 8672 ======== 翻译:命令写入失败(无效参数)PS:数据线或USB口问题(链接中断,链接不稳定,供电不足)(手机助手冲突)======== (command write failed (No such device or address)) / 26709 ========翻译:命令写入失败(没有这样的设备或地址)PS:数据线或USB口问题(链接中断,链接不稳定,供电不足)======== (command write failed (No such file or directory)) / 893 ========翻译:命令写入失败(没有这样的文件或目录)PS:数据线或USB口问题(链接中断,链接不稳定,供电不足)======== (command write failed (Too many links)) / 1771 ========翻译:(命令写入失败(太多的链接)PS:数据线或USB口问题(链接中断,链接不稳定,供电不足)======== (command write failed (Too many open files in system)) / 4 ========翻译:命令写入失败(系统中打开文件过多)PS:数据线或USB口问题(链接中断,链接不稳定,供电不足)======== (command write failed (Unknown error)) / 1407 ========翻译:(命令写入失败(未知错误)PS:数据线或USB口问题(链接中断,链接不稳定,供电不足)======== (data transfer failure (No such device or address)) / 302 ========翻译:数据传输失败(没有这样的设备或地址)PS:数据线或USB口问题(链接中断,链接不稳定,供电不足)======== (data transfer failure (No such file or directory)) / 17 ========翻译:数据传输失败(没有这样的文件或目录)PS:数据线或USB口问题(链接中断,链接不稳定,供电不足)======== (data transfer failure (Too many links)) / 5141 ========翻译:数据传输失败(太多的链接)PS:数据线或USB口问题(链接中断,链接不稳定,供电不足)======== (data transfer failure (Unknown error)) / 1927 ========翻译:数据传输失败(未知错误)PS:数据线或USB口问题(链接中断,链接不稳定,供电不足)======== (remote failure) / 14 ========翻译:(远程故障)PS:在刷机途中插入了另外一部手机。
U-boot命令分析报告
Uboot命令的解释及添加方法Baods2012.03.22一、分析uboot命令的执行过程在uboot启动的第二段代码start_armboot函数最后面会进入死循环,在这个死循环中调用main_loop函数,其中main_loop函数在common/main.c中定义在这里面查看是否设置环境变量参数,如果设置了则看串口在bootdelay秒内有没有输入,若没有则执行bootcmd命令/****************************************************************************/ void main_loop(void){......#if defined(CONFIG_BOOTDELAY)&&(CONFIG_BOOTDELAY>=0)char*s;int bootdelay;#endif....../**在这里获得环境变量参数bootdelay,如果环境变量中有定义,则将值赋给bootdelay,*没有则赋值给CONFIG_BOOTDELAY.*/#if defined(CONFIG_BOOTDELAY)&&(CONFIG_BOOTDELAY>=0)s=getenv("bootdelay");bootdelay=s?(int)simple_strtol(s,NULL,10):CONFIG_BOOTDELAY;debug("###main_loop entered:bootdelay=%d\n\n",bootdelay);......s=getenv("bootcmd");获取bootcmddebug("###main_loop:bootcmd=\"%s\"\n",s?s:"<UNDEFINED>");if(bootdelay>=0&&s&&!abortboot(bootdelay)){run_command(s,0);/*执行bootcmd中的命令*/....../*Main Loop for Monitor Command Processing*/#ifdef CFG_HUSH_PARSERparse_file_outer();/*This point is never reached*/for(;;);#elsefor(;;){len=readline(CFG_PROMPT);/*首先显示CFG_PROMPT定义的字符串"U-boot>"然后等待键盘输入....之后对一些特别字符进行处理,对于正常字符将存放到console_buffer中*/flag=0;/*assume no special flags for now*/if(len>0)strcpy(lastcommand,console_buffer);else if(len==0)flag|=CMD_FLAG_REPEAT;#ifdef CONFIG_BOOT_RETRY_TIMEelse if(len==-2){/*返回值等于-2则timeout*/puts("\nTimed out waiting for command\n");#ifdef CONFIG_RESET_TO_RETRY/*Reinit board to run initialization code again*/do_reset(NULL,0,0,NULL);#elsereturn;/*retry autoboot*/#endif}#endifif(len==-1)/*返回值等于-1则break*/puts("<INTERRUPT>\n");elserc=run_command(lastcommand,flag);读取到命令后交给run_command处理if(rc<=0){/*invalid command or not repeatable,forget it*/lastcommand[0]=0;}}#endif/*CFG_HUSH_PARSER*/}接下来看看run_command函数做了什么工作?int run_command(const char*cmd,int flag){cmd_tbl_t*cmdtp;char cmdbuf[CFG_CBSIZE];/*working copy of cmd*/char*str=cmdbuf;......clear_ctrlc();/*forget any previous Control C*/if(strlen(cmd)>=CFG_CBSIZE){/*判断输入的命令是否太长*/ puts("##Command too long!\n");return-1;}strcpy(cmdbuf,cmd);/*复制命令到cmdbuf*//*Process separators and check for invalid repeatable commands*/ while(*str){/*char*str=cmdbuf*//**Find separator,or string end*Allow simple escape of';'by writing"\;"*/for(inquotes=0,sep=str;*sep;sep++){if((*sep=='\'')&&(*(sep-1)!='\\'))inquotes=!inquotes;if(!inquotes&&(*sep==';')&&/*separator*/(sep!=str)&&/*past string start*/(*(sep-1)!='\\'))/*and NOT escaped*/break;}/*Limit the token to data between separators*/token=str;if(*sep){str=sep+1;/*start of command for next pass*/*sep='\0';}elsestr=sep;/*no more commands for next pass*//*find macros in this token and replace them*/process_macros(token,finaltoken);/*Extract arguments*/if((argc=parse_line(finaltoken,argv))==0){rc=-1;/*no command at all*/continue;}/*这里调用到了find_cmd函数,查找命令表、进入一个命令*/if((cmdtp=find_cmd(argv[0]))==NULL){printf("Unknown command'%s'-try'help'\n",argv[0]);rc=-1;/*give up after bad command*/continue;}if(argc>cmdtp->maxargs){/*检查最大的参数变量*/printf("Usage:\n%s\n",cmdtp->usage);rc=-1;continue;}#if(CONFIG_COMMANDS&CFG_CMD_BOOTD)/*avoid"bootd"recursion*/if(cmdtp->cmd==do_bootd){#ifdef DEBUG_PARSERprintf("[%s]\n",finaltoken);#endifif(flag&CMD_FLAG_BOOTD){puts("'bootd'recursion detected\n");rc=-1;continue;}else{flag|=CMD_FLAG_BOOTD;}}#endif/*CFG_CMD_BOOTD*//*OK接下来调用cmd_tbl_t结构体中注册的cmd函数*/if((cmdtp->cmd)(cmdtp,flag,argc,argv)!=0){rc=-1;}repeatable&=cmdtp->repeatable;/*Did the user stop this?*/if(had_ctrlc())return0;/*if stopped then not repeatable*/}return rc?rc:repeatable;}从上面的分析知道XXX命令的执行过程如下:1.在U-Boot中输入“XXX”命令执行时,U-Boot接收输入的字符串“XXX”,然后传递给run_command函数;2.run_command函数调用find_cmd函数在__u_boot_cmd_start与__u_boot_cmd_end间查找命令,并返回“XXX”命令的cmd_tbl_t结构;3.run_command函数使用返回的cmd_tbl_t结构中的函数指针调用“XXX”命令的响应函数“do_XXX”,从而完成了命令的执行。
刷机失败问题解析
======== (command write failed (Invalid argument)) / 8672 ======== 翻译:命令写入失败(无效参数)PS:数据线或USB口问题(链接中断,链接不稳定,供电不足)(手机助手冲突)======== (command write failed (No such device or address)) / 26709 ========翻译:命令写入失败(没有这样的设备或地址)PS:数据线或USB口问题(链接中断,链接不稳定,供电不足)======== (command write failed (No such file or directory)) / 893 ========翻译:命令写入失败(没有这样的文件或目录)PS:数据线或USB口问题(链接中断,链接不稳定,供电不足)======== (command write failed (Too many links)) / 1771 ========翻译:(命令写入失败(太多的链接)PS:数据线或USB口问题(链接中断,链接不稳定,供电不足)======== (command write failed (Too many open files in system)) / 4 ========翻译:命令写入失败(系统中打开文件过多)PS:数据线或USB口问题(链接中断,链接不稳定,供电不足)======== (command write failed (Unknown error)) / 1407 ========翻译:(命令写入失败(未知错误)PS:数据线或USB口问题(链接中断,链接不稳定,供电不足)======== (data transfer failure (No such device or address)) / 302 ========翻译:数据传输失败(没有这样的设备或地址)PS:数据线或USB口问题(链接中断,链接不稳定,供电不足)======== (data transfer failure (No such file or directory)) / 17 ========翻译:数据传输失败(没有这样的文件或目录)PS:数据线或USB口问题(链接中断,链接不稳定,供电不足)======== (data transfer failure (Too many links)) / 5141 ========翻译:数据传输失败(太多的链接)PS:数据线或USB口问题(链接中断,链接不稳定,供电不足)======== (data transfer failure (Unknown error)) / 1927 ========翻译:数据传输失败(未知错误)PS:数据线或USB口问题(链接中断,链接不稳定,供电不足)======== (remote failure) / 14 ========翻译:(远程故障)PS:在刷机途中插入了另外一部手机。
uboot启动常见的错误汇总
【uboot启动常见的错误汇总】1. operating at 100M full duplex mode*** ERROR: `ethaddr' not setdm9000 i/o: 0x5000000, id: 0x90000a46DM9000: running in 16 bit modeMAC: 00:00:00:00:00:00operating at 100M full duplex modeWrong Image Format for bootm commandERROR: can't get kernel image!原因是:没有设置mac地址,需要重新设置setenv ethaddr 01:02:03:04:05:06saveenv/save2.在开发板上ping ubuntu的ip地址ping不通1.网线没插2.ubuntu没有打开3.ping 的过程中,ubuntu会扫描ip地址,会一直去获取ip地址,但是开发板没有分配ip地址的权利,也就是ubuntu获取不了ip地址,同时查看ubuntu 的ip地址是没有的。
1.设置临时的ip地址sudo ifconfig eth0 192.168.1.*2.永久生效在ubuntu的右上角添加静态ip地址。
3.发现ubuntu的右上角网络图标类似于wifi的图标,如何将这个图标改成网络的图标sudo /etc//init.d/network-manager restart如何执行之后,还是wifi图标sudo vi /etc/NetworkManager/NetworkManager.confmanaged=false false --->truesudo /etc//init.d/network-manager restart如果执行之后,还是wifi图标重启系统4.你的pc电脑已经打开wifi网,需要将无线网关闭5.虚拟机网卡设置出错,需要将nat设置为桥接6.换开发板4.ping ubuntu是可以ping通,但是当启动内核的时候出现T TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTubuntu的tftp服务没有开启,重启tftp服务sudo /etc/init.d/tftpd-hpa restartTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTubuntu的ip没了,需要再次设置ip地址sudo ifconfig eth0 192.168.1.*5.uboot启动内核是提示文件没找到,需要将内核和设备树拷贝到tftp服务器的目录6.nfs在启动nfs服务器时,exportfs: /etc/exports [2]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/rootfs".Assuming default behaviour ('no_subtree_check').NOTE: this default has changed since nfs-utils version 1.0.x解决方法:/rootfs *(rw,sync,no_root_squash,no_subtree_check)7.vfs:为应用程序提供统一的接口程序--》fopen ---->open---->vfs---->内核函数---》硬件7.] VFS: Mounted root (nfs filesystem) on device 0:10.[ 2.130000] devtmpfs: error mounting -2[ 2.135000] Freeing unused kernel memory: 232K (c0655000 - c068f000)[ 2.140000] hub 1-3:1.0: USB hub found[ 2.145000] hub 1-3:1.0: 3 ports detected[ 2.150000] Failed to execute /linuxrc (error -2). Attempting defaults...[ 2.160000] Kernel panic - not syncing: No working init found. Try passing init= option to kernel. See Linux Documentation/init.txt for guidance.解决方法:需要将文件系统拷贝到这个目录文案编辑词条B 添加义项?文案,原指放书的桌子,后来指在桌子上写字的人。
Unix系统的十大常见故障及解决方法
Unix系统的十大常见故障及解决方法SCO Openserver 5.0.5作为一种高效稳定、安全性能高的多用户操作系统,在金融、保险、电信等部门得到广泛的应用。
在系统日常维护工作中,有时会遇到一些系统故障。
下面店铺就为大家介绍一下Unix系统的十大常见故障及解决方法,望对大家能有所帮助。
常见故障现象及解决方法:一、打开计算机电源后,主控台屏幕上出现如下信息:boot not found cannot open stage 1 boot failure:error loading hd(40)/boot,然后死机。
分析:这表明系统根目录下的Boot文件丢失或找不到。
Boot文件是用于装载并执行UNIX程序的交互式程序,主要用于装载和执行UNIX操作系统的核心,在引导过程中Boot将读取/etc/default/boot,显示引导过程信息,装入并执行/Unix,所以当Boot文件丢失或找不到将导致系统引导失败。
解决方法:若Boot文件丢失:1.以Boot盘(应急软盘或安装光盘)引导。
2.在系统引导提示下敲入hd(40) unix,这个命令用于从硬盘把Unix核心载入。
然后输入root用户的口令,进入单用户模式,此时出现超级用户提示符#.3.卸载Boot文件系统,执行命令: umount /stand.4.装载Boot文件系统,执行命令:mount /stand.(说明:SCO Openserver5.0.5系统启动后将/stand文件系统设置为只读,且不能更改属性,用此方法使/stand目录可写。
)5.用命令把Boot软盘安装到系统中,执行命令:mount /dev/fd0135ds18 /mnt,然后用命令:cp /mnt/boot /stand将Boot 文件拷贝到/stand目录下。
6.用命令umount /dev/fd0135ds18(或umount /mnt)把Boot 盘卸载。
7.取出Boot盘,敲入haltsys或reboot命令重新引导系统。
uboot常见DDR问题详解教程
5.尝试在某个地方插入一个值,确保它“粘住”,并且不影响其他地址。这就是为什么一个大内存窗口是一个好主意-典型的ddr有2KB-8KB的页面大小(根据总线宽度可能更大);所以你能看到的越多越好。
这很可能是一个配置问题,即根据您的配置重新检查DDR数据表。您可能与bank数量、列地址位等不匹配。
这种不匹配的另一个特征是您看到重复的数据—例如,偏移量0处的数据与偏移量256处的数据匹配,1匹配257,2,匹配258。。。等等。如果重复模式之间的偏移量(本例中为256)小于DDR接口的行长度(即,(2^^#列地址)*bus_width_in_bytes(以字节为单位);那么这无疑是问题所在。如果偏移量大于或等于行长度;则问题可能仍然存在于此配置中,但也可能指向与较低地址位(A0、A1)有关的微妙的计时问题;后者将用于寻址DDR的相邻行。
以上方法并不是内存测试的全部方法。有更好的可用选项,如memtester等,以便进行更全面的测试。上面的测试是一个简单的方法,可以用来判断在启动一个新的电路板时,DDR接口是否有明显的问题。
完整试验程序
1.在低温高压下测试电路板。低温应仍在所有部件的规格范围内。“高电压”指的是与DDR相关的任何轨道可以(在合理范围内)调整。例如,在Sitara设备上,VDD_CORErail为EMIF供电,VDDS_DDR rail用作总线电压。如果这些rail是可调的(比如通过PMIC),那么你应该为低温测试提高一点电压,以加强接口。
2.在高温和低压下测试电路板。高温应仍在所有部件的规格范围内。请记住,不同的部件可能对其温度有不同的规定。例如,TI-Sitara设备通常指定一个结温度,而DDR3设备通常指定一个外壳温度。同时请记住,对于许多DDR设备,刷新率需要在85C以上翻倍。对于电压,这又与影响DDR的电压有关,您只需要稍微降低一点(即仍然希望它们符合规范)。
34个GRUB常见错误
5 : Partition table invalid or corrupt
解释 :5 号错误表示分区表无效或者被破坏。这是一个不好的预兆
6 : Mismatched or corrupt version of stage1/stage2
解释 :6号错误表示 install 命令发现 stage1 和 stage2 的颁布号不被兼容
例子 :
[root@monitor boot]# dd if=/dev/zero of=vmlinuz-2.4.20-31.9 bs=1024 count=1 seek=1
读入了 1+0 个块
输出了 1+0 个块
[root@monitor boot]#grub
grub> kernel /vmlinuz-2.4.20-31.9 root=label=/
9 : Unknown boot failure
解释 :9 号错误表示未知的引导错误
10 : Unsupported Multiboot features requested
解释 :10 号错误表示请求 Multiboot header 所要求功能不被 GRUB 所支持。
11 : Unrecognized device string
grub>
3 : Bad or corrupt data while decompressing file
解释 :3号错误表示解压文件时发生错误。可能是因为这个文件被损坏了
4 : Bad or incompatible header in compressed file
解释 :4号错误表示压缩文件的头部格式不被兼容或者错误
linux系统下uboot、kernel、android文件系统编译错误整理及解决办法
linux系统下uboot、kernel、android文件系统编译错误整理及解决办法Ver1.0作成者:雷鹏作成年月:2012/09/251、linux下编译应用程序时出现如下错误: /usr/bin/ld: cannot find -lxxx。
原因分析:编译过程找不到对应库文件。
其中,-lxxx表示链接库文件 libxxx.so。
由于库文件是编译过程临时生成的,如果前面编译过程出错也会导致出现这种情况,下面针对本机系统环境缺失而引起的错误进行分析。
一般出现这种错误有以下几种原因:⑴.系统缺乏对应的库文件;⑵.版本不对应;⑶.库文件的链接错误;⑷.库文件路径设置问题。
解决方法:对应第一第二种情况,可以通过下载安装lib来解决,ubuntu系统可以直接通过apt-get来安装:apt-get install libxxx-dev如果还是不能解决问题,那么,引起错误的原因不是链接错误就是库文件路径问题。
通过find或者locate指令定位到链接文件,查看链接文件是否正确的指向了编译需要的lib,如果不是,用下列指令修改它。
ln -sf */libxxx.so.x */libxxx.so如果是库文件路径引发的问题,可以到/etc/ld.so.conf.d目录下,修改其中任意一份conf文件,(可以自建conf,以方便识别)将lib所在目录写进去,然后在终端输入 ldconfig 更新缓存。
2、编译时出现错误提示:include/asm is a directory but a symlink was expected原因分析:linux/include/asm 文件夹是内核编译过程中创建的,创建结果就是一个指向文件夹asm-arm 的链接,表明该系统的平台是arm架构的,而编译系统内核之前,是没有asm这个链接的,所以,在编译过程中,创建该链接时文件名字与asm文件夹的名字发生冲突,于是系统报错了。
uboot中unrecognized filesystem type
uboot中unrecognized filesystem type 在使用uboot时,如果出现“unrecognized filesystem type”错误,说明uboot无法识别文件系统类型。
这可能是因为文件系统类型不受支持或文件系统损坏导致的。
解决此问题的方法如下:
1. 确认文件系统类型是否支持:uboot支持的文件系统类型包括ext2、ext3、ext4和fat等。
如果使用的文件系统类型不在此范围内,则会出现该错误。
2. 确认文件系统是否损坏:使用文件系统检查工具(如fsck)检查文件系统是否损坏。
如果文件系统损坏,则需要修复或重新格式化该文件系统。
3. 更新uboot版本:在某些情况下,更新uboot版本可能会解决该问题。
在更新uboot版本之前,请确保新版本支持所使用的文件系统类型。
4. 更换存储介质:如果存储介质出现故障,则会导致文件系统损坏或无法读取,从而导致该错误。
此时,需要更换存储介质。
总之,uboot中出现“unrecognized filesystem type”错误可能有多种原因,需要根据具体情况采取相应的解决方法。
- 1 -。
Linux服务器开机启动报错
问题描述:重启机房服务器119 开机的时候卡在这里吗,重启后还是卡这里。
问题分析:由于前一段时间,tomcat服务的一个错误代码导致CPU一直接近100% 运行,并且在网上提问后发现是/home 这个分区有错误,导致系统起不来。
怀疑是前一段时间的磁盘的高速运行使得磁盘有坏道,导致在系统检测磁盘的时候(/etc/fstab)一直卡在这里。
解决问题:百度后得知,网友是这样解决的,解决方法1:1.首先在命令行输入(可选)#mount | grep ''on /''得到root用户所在分区/dev/your_partition2.修复文件系统(修复有可能损坏系统文件)#fsck -y /dev/your_partition注:检测并修复磁盘/dev/root,-y 选项指定检测每个文件是自动输入yes3.输入reboot进行重启,仍然报错4.继续在命令行输入修复命令#fsck -y /dev/sda15.重启后,继续报错Starting auditd:FAILED注:网上搜索的解释是“The auditd daemon will fail to start if its logfile is readable by anyone but root”,即由于root没有写auditd日志文件的权限,导致auditd启动失败输入如下命令:#chown root.root /var/log/audit/audit.log#chmod 600 /var/log/audit/audit.log6.重启,成功进入系统小结:fsck不仅可以对文件系统进行扫描,还能修正文件系统的一些问题,值得注意的是fsck 扫描文件系统时一定要在单用户模式、修复模式或把设备umount后进行!操作前一定先备份(使用dd命令备份)!解决方法2:如果觉得这个检查很消耗时间,可以去掉,方法如下:1. 进入单用户执行root# mount –o remount,rw /然后修改vi /etc/fstab2. 进入救援模式(光盘启动按F2 然后输入Linux rescue )vi /mnt/sysimage/etc/fstab修改方法:把错误的磁盘注释掉或者把根目录的最后一个域改为0/dev/sda1 / ext3 defaults 1 0附最后两个域的意义:这两个数字分别位于/etc/fstab文件的第五个域(fs_mntops)和第六个域(fs_passno)fs_mntops:用于规定文件系统的备份频率,系统的自动备份程序在执行时需要读取这个域的值,1代表系统要求每天备份一次文件系统,2代表每2天备份一次,余此类推...如果这个值是0,那么意味着不备份这个文件系统.fs_passno:被fsck用来决定检查文件系统完整性的次数,在系统每次重启时系统将启动fsck对文件系统进行完整性检查.这个数字越小就越先得到检查,通常根文件系统的fs_passno被置1,其他文件系统的被置2,如果这个数字是0,就意味着系统重启动时不进行完整性检查。
linux常见故障排错思路
Linux常见故障排错思路Linux操作系统因其开源、稳定、安全等特点,在服务器领域得到广泛应用。
但在使用过程中,无论是初学者还是经验丰富的系统管理员,都可能会遇到各种问题。
本文将详细阐述Linux系统中常见的故障及其排错思路,旨在帮助读者快速定位并解决问题。
一、启动故障1. GRUB引导加载器问题- 故障现象:系统启动时,无法加载GRUB或出现GRUB错误提示。
- 排错思路:- 检查GRUB配置文件是否正确。
- 使用Live CD/USB启动,进入救援模式修复GRUB。
- 重新安装GRUB到MBR。
2. 内核问题- 故障现象:启动过程中内核崩溃或无法继续启动。
- 排错思路:- 查看启动日志,分析内核报错信息。
- 尝试更换不同版本的内核启动。
- 检查硬件兼容性,如内存、CPU等。
3. 文件系统损坏- 故障现象:系统提示文件系统损坏,无法正常挂载。
- 排错思路:- 使用fsck工具检查和修复文件系统。
- 分析dmesg输出,查找与文件系统相关的错误。
- 在必要时恢复备份数据。
二、网络故障1. 无法连接到网络- 故障现象:系统无法访问外部网络或局域网。
- 排错思路:- 检查网络接口是否启动。
- 使用ping命令测试网络连通性。
- 查看/etc/resolv.conf文件中的DNS设置。
- 检查防火墙和网络策略配置。
2. SSH连接问题- 故障现象:无法通过SSH远程连接到服务器。
- 排错思路:- 检查SSH服务是否运行。
- 查看SSH配置文件(如/etc/ssh/sshd_config)是否正确。
- 使用netstat或ss命令检查SSH端口监听状态。
- 查看系统日志(如/var/log/auth.log)中的SSH相关记录。
三、性能问题1. 系统负载过高- 故障现象:系统响应缓慢,CPU、内存或磁盘负载过高。
- 排错思路:- 使用top、htop或vmstat命令监控系统资源使用情况。
- 分析系统日志,查找可能导致高负载的原因。
开机时出现这样的错误怎么解决
错误:ubuntu开机出现错误提示:piix4_smbus 0000:00:007.3: Host SMBus controller not enabled
原因: ubuntu装入i2c_piix4模块所致,因为系统找不到这个模块,所以报错
处理方法:
1、查明装入模块的确切名字,显示输出的结果是模块的确切名字:i2c_piix4
2、将该模块列入不装入名单。
编辑文件sudo vim /etc/modprobe.d/blacklist.conf,在末尾加入blacklist i2c-piix4
3、重启reboot
出现错误:faild to load SELinux policy freezing,查了一些资料,完善方案
1. 重启时在启动页面按 E,进入 grub 编辑页面;
2. 找到 linux 那一行,在最后 language 后面,空格加上 selinux=0
3. 然后 ctrl + x 重新运行,即可了
4. 重新启动之前,ls /etc/selinux 发现多了一个 config~的文件,,应该就是这个文件的问题了,把 config~文件删除;
5. reboot重新启动
(centos7 修改selinux 开机导致 faild to load SELinux policy freezing 错误
之前把selinux关闭了,这次想打开selinux,于是修改了 /etc/selinux/config 文件,然后重启时,就开不了机了,
)。
内核引导失败的常见问题解决办法
内核引导常见问题Kernel - Common Problems Booting Linux作者:卢浩时间:2012.3.9转载请注明出处嵌入式爱好者开发群:122879839不少用户在尝试引导内核的时候,遇到了一些意外,内核的引导在某一点突然中断,并且不能进行下去,有时候是有个软件的bug导致的,而有时候可能是由于内核的错误的配置导致的,这篇文章是为开发者提供一些帮助来诊断为什么不能正常引导内核并且找出其中可能的原因。
问题1:内核只引导到"Starting Kernel...",然后串口终端就没有输出了,举个例子:## Booting kernel from Legacy Image at 80300000 ...Image Name: Linux-2.6.31Image Type: ARM Linux Kernel Image (uncompressed)Data Size: 1750680 Bytes = 1.7 MBLoad Address: 80008000Entry Point: 80008000Verifying Checksum ... OKLoading Kernel Image ... OKOKStarting kernel ...到这里,串口终端就没有再输出任何信息了.以上的串口输出信息是uboot的引导过程,至于这个starting kernel其实是uboot阶段输出最后的一句信息,这时候正准备进入内核引导。
这个错误一般由于错误的配置debug串口导致的,你可以检验下你内核配置的时候,你所配置的串口输出端口是多少。
打个比方,你用的是TI的omap3的beagle-board板子,其中UART3被用来输入调试信息,那么你打开linux-2.6.37(打个比方是这个版本的内核)下的.config文件,你会看到以下信息:# CONFIG_OMAP_LL_DEBUG_UART1 is not set# CONFIG_OMAP_LL_DEBUG_UART2 is not setCONFIG_OMAP_LL_DEBUG_UART3=y你会看到串口3是被设置为调试的串口。
内核引导失败的常见问题解决办法
内核引导常见问题Kernel - Common Problems Booting Linux作者:卢浩时间:2012.3.9转载请注明出处嵌入式爱好者开发群:122879839不少用户在尝试引导内核的时候,遇到了一些意外,内核的引导在某一点突然中断,并且不能进行下去,有时候是有个软件的bug导致的,而有时候可能是由于内核的错误的配置导致的,这篇文章是为开发者提供一些帮助来诊断为什么不能正常引导内核并且找出其中可能的原因。
问题1:内核只引导到"Starting Kernel...",然后串口终端就没有输出了,举个例子:## Booting kernel from Legacy Image at 80300000 ...Image Name: Linux-2.6.31Image Type: ARM Linux Kernel Image (uncompressed)Data Size: 1750680 Bytes = 1.7 MBLoad Address: 80008000Entry Point: 80008000Verifying Checksum ... OKLoading Kernel Image ... OKOKStarting kernel ...到这里,串口终端就没有再输出任何信息了.以上的串口输出信息是uboot的引导过程,至于这个starting kernel其实是uboot阶段输出最后的一句信息,这时候正准备进入内核引导。
这个错误一般由于错误的配置debug串口导致的,你可以检验下你内核配置的时候,你所配置的串口输出端口是多少。
打个比方,你用的是TI的omap3的beagle-board板子,其中UART3被用来输入调试信息,那么你打开linux-2.6.37(打个比方是这个版本的内核)下的.config文件,你会看到以下信息:# CONFIG_OMAP_LL_DEBUG_UART1 is not set# CONFIG_OMAP_LL_DEBUG_UART2 is not setCONFIG_OMAP_LL_DEBUG_UART3=y你会看到串口3是被设置为调试的串口。
u-boot在S3C2440上的移植问题及解决方法集锦(一)
u-boot在S3C2440上的移植问题及解决方法集锦(一)一、移植环境∙主机:VMWare6.5--Fedora 9∙开发板:自制开发板CPU:S3C2440;SDRAM:HY57V561620FTP-H;NOR flash:SST_39VF1601(2M);NAND flash:K9F1G08U0B(128M);网卡芯片:DM9000EP∙编译器:arm-linux-gcc-4.3.2∙u-boot:u-boot-2009.08∙linux kernel:linux-2.6.30∙busybox:busybox-1.13.3二、博客地址/liuqiqi677如有错误,欢迎指正。
三、参考资料主要参考了黄刚的博客/u3/101649/,他的博客写得相当不错,将嵌入式开发各个阶段的知识以边做边学的方式,辅以图片、解释,清晰地呈现给读者,能够让读者把握主线,对嵌入式开发有整体的了解。
强烈推荐!!!四、问题及解决方法1、NAND flash(K9F1G08U0B)的寻址方案开始照着黄刚的博客进行u-boot移植,u-boot从NOR flash启动比较顺利,但是从NAND flash启动时,就遇到问题了,u-boot不能完全启动!通过在程序中插入点led灯的方法,将问题定位在了NAND flash的读取函数nand_read_ll中对NAND flash单元进行寻址的几条指令上。
这时,问题大概有眉目了,黄刚所用的开发板是友善之臂的mini2440,上面的NAND flash 的型号是K9F1208,容量为64M,与我所用的芯片不一样。
下面比较一下这两款芯片的寻址方案:图1 K9F1208寻址方案图2 K9F1G08寻址方案黄刚博客中K9F1208的寻址代码是:NFADDR = i & 0xFF;NFADDR = (i >> 9) & 0xFF;NFADDR = (i >> 17) & 0xFF;NFADDR = (i >> 25) & 0xFF;而我的K9F1G08的寻址代码则是:NFADDR = 0;NFADDR = 0;NFADDR = (i >> 11) & 0xFF;NFADDR = (i >> 19) & 0xFF;NFADDR = (i >> 27) & 0xFF;但是,这里又出现三个问题了:(1)K9F1G08的寻址方案只有4个周期,而我的代码却有5个周期;(2)为什么前两个周期我给的值都是0;(3)按照芯片手册,第3-5个周期起,移位操作应该分别为(i >> 12)、(i >> 20)、(i >> 28),那为什么却是上面那样的呢?一开始,我也是挺纳闷的,但是通过查找资料与不断试验,终于弄懂了这些原因。
ubifs文件系统的制作过程
ubifs文件系统的制作过程&&遇到的问题及解决方案总结---之一“uboot中添加对UBIFS文件系统的支持”分类:嵌入式2012-04-18 21:34 314人阅读评论(0) 收藏举报为了更好的理解ubifs根文件系统的制作,首先,我们简单的说一下,系统的组成:bootloader(uboot)的作用就是用来加载操作系统;而嵌入式linux系统由linux 内核和根文件系统两部分构成,两者缺一不可。
所以我们要制作一个UBIFS的根文件系统,首先必须让上面系统组成的几个部分都支持UBIFS文件系统,就得在这几个组成部分添加一些“东西”(支持UBI的配置):(打个我自己理解的比喻吧:“娶媳妇”比作--启动系统,娶媳妇是不是要经过老爸、老妈、丈母娘、岳父的同意和支持?bootloader、parames、kernel、root Filesystem便是老爸、老妈、丈母娘、岳父...O(∩_∩)O~,而你叫"UBI")这篇博文主要是详细解析:uboot中添加对UBIFS文件系统的支持一、移植环境§主机:vmware-redhat5§开发板:mini2440--256MB nandflash§kernel:2.6.29 编译器:arm-linux-gcc-4.3.2.tgz§uboot: u-boot-2008.10二.移植步骤本次移植的功能为:支持UBIFS文件系统1.在include/configs/mini2440.h中添加如下配置:(注意:不同的开发板在include/configs/目录下对应的修改的配置文件不同,我的开发板是mini2440所以修改的是mini2440.h)#define CONFIG_MTD_DEVICE#define CONFIG_MTD_PARTITIONS#define CONFIG_CMD_MTDPARTS#define CONFIG_LZO#define CONFIG_RBTREE#define CONFIG_CMD_UBIFS //要支持ubIfs首先得让uboot支持UBIFS的烧写命令#define CONFIG_CMD_UBI //uboo支持的ubifs烧写命令:1.mtdparts: 用来给NAND分区;/*2.nand erase.part:用来擦除指定分区等这些命令在“UBIFS镜像的制作&&烧写”博文理解*///其次要支持MTD(memory technology device内存技术设备)是用于访问memory设备(ROM、flash)的Linux的子系统#define MTDIDS_DEFAULT "nand0=nandflash0" //同时要给nandlflash建立默认的分区,#define MTDPARTS_DEFAULT"mtdparts=nandflash0:384k(bootloader),"\ //我的分区:"128k(params),"\"5m(kernel),"\"64m(root)"/*还要修改下面几个宏,因为使用UBIFS会占用更多的堆、栈空间*/#define CONFIG_STACKSIZE (512*1024)#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE+1024*1024) #define CONFIG_SYS_GBL_DATA_SIZE 5122.回到uboot的顶层目录下(可能拿到的uboot已被编译过,所以最好要用此命令清理中间文件)执行命令:make clean(uboot是通用的bootloader,支持多种开发板,所以编译之前先选择使用哪种board)执行命令:make mini2440_config注意:我用的是mini2440开发板,所以要编译这个开发板使用的uboot,所以这里的目标为mini2440_config,表示选择的board是mini2440(mini2440_config在Makefile标准术语称为“目标”,可以在uboot顶层Makefile找到该目标)执行命令(开始编译uboot):make CROSS_COMPILE=arm-linux-ubifs文件系统的制作过程&&遇到的问题及解决方案总结---之二“Linux内核中添加对UBIFS文件系统的支持”分类:嵌入式2012-04-19 13:55 156人阅读评论(0) 收藏举报一、移植环境§主机:vmware-redhat5§开发板:mini2440--256MB nandflash§kernel:2.6.29 编译器:arm-linux-gcc-4.3.2.tgz§uboot: u-boot-2008.10二.移植步骤1.在内核顶层目录下使用命令:make menuconfig ,进入内核配置菜单,添加对UBIFS文件系统的支持。
UBOOT的几个核心问题
UBOOT的几个核心问题1、计算机系统的主要部件(1)计算机系统就是以CPU为核心来运行的系统。
典型的计算机系统有:PC机(台式机+笔记本) 嵌入式设备(手机、平板电脑、游戏机)单片机(家用电器像电饭锅、空调)(2)计算机系统的组成部件非常多,不同的计算机系统组成部件也不同。
但是所有的计算机系统运行时需要的主要核心部件都是3个东西:CPU+外部存储器(Flash/硬盘)+ 内部存储器(DDR SDRAM/SDRAM/SRAM)2、PC机的启动过程(1)部署:典型的PC机的BIOS程序部署在PC机主板上(随主板出厂时已经预制了),操作系统部署在硬盘上,内存在掉电时无作用,CPU在掉电时不工作。
(2)启动过程:PC上电后先执行BIOS程序(实际上PC的BIOS就是NorFlash),BIOS程序负责初始化DDR内存,负责初始化硬盘,然后从硬盘上将OS镜像读取到DDR中,然后跳转到DDR中去执行OS直到启动(OS启动后BIOS就无用了)3、典型嵌入式linux系统启动过程(1)典型嵌入式系统的部署:uboot程序部署在Flash(能作为启动设备的Flash)上、OS部署在FLash(嵌入式系统中用Flash代替了硬盘)上、内存在掉电时无作用,CPU在掉电时不工作。
(2)启动过程:嵌入式系统上电后先执行uboot、然后uboot负责初始化DDR,初始化Flash,然后将OS从Flash中读取到DDR中,然后启动OS(OS启动后uboot就无用了)总结:嵌入式系统和PC机的启动过程几乎没有两样,只是BIOS成了uboot,硬盘成了Flash。
4、android系统启动过程(1)Android系统的启动和Linux系统(前面讲的典型的嵌入式系统启动)几乎一样。
即:前面完全一样,只是在内核启动后加载根文件系统后不同了。
android的启动和linux的差别在第二阶段。
(2)可以认为启动分为2个阶段:第一个阶段是uboot到OS启动;第二个阶段是OS启动后到rootfs加载到命令行执行;5、总结:uboot到底是干嘛的?(1)uboot主要作用是用来启动操作系统内核。
嵌入式Linux启动过程中的问题积
嵌入式Linux启动过程中的问题积累1.Bad Magic Number## Booting image at 33000000 ...Bad Magic NumberOMAP5912 OSK # (tftp下载好kernel的uImage后就停止在这,不能启动kernel)问题原因:启动参数设置错误,0x30000000处不可以执行。
有的开发板sdram不是在0x33000000,所以不能把kerneluImage下载到0x33000000中运行。
如我之前的bootcmd参数为:setenv bootcmd tftpboot 33000000uImage\; bootm 33000000。
但板子Omap5912的sdram地址在0x100000000,将参数改为setenvbootcmd tftpboot 10000000 uImage\; bootm 10000000后便可以启动kernel了。
2.启动停止在"Starting kernel ..."TFTP from server 192.168.167.170; our IP address is 192.168.167.15Filename 'uImage'Load address: 0x10000000Loading:######################################################## ################################################################# #########doneBytes transferred = 2025908 (1ee9b4 hex)## Booting image at 10000000 ...Image Name: Linux-2.6.18-mh8_pro500-versatilImage Type: ARM Linux Kernel Image (uncompressed)Data Size: 2025844 Bytes = 1.9 MBLoad Address: 30008000Entry Point: 30008000Verifying Checksum ... OKOKStarting kernel ... (卡在这里)问题原因:多半是kernel没编译成功。
zynqu-boot启动中提示SF:unrecognizedJEDECidbytes:c2。。。
zynqu-boot启动中提⽰SF:unrecognizedJEDECidbytes:c2。
错误现象:原因分析:\u-boot-xlnx-xilinx-v2018.1\u-boot-xlnx-xilinx-v2018.1\drivers\mtd\spi\ spi_flash.c中static const struct spi_flash_info *spi_flash_read_id(struct spi_flash *flash){int tmp;u8 id[SPI_FLASH_MAX_ID_LEN];const struct spi_flash_info *info;#ifdef CONFIG_SPI_GENERICif (flash->spi->option & SF_DUAL_PARALLEL_FLASH)flash->spi->flags |= SPI_XFER_LOWER;#endiftmp = spi_flash_cmd(flash->spi, CMD_READ_ID, id, SPI_FLASH_MAX_ID_LEN);if (tmp < 0) {printf("SF: error %d reading JEDEC ID\n", tmp);return ERR_PTR(tmp);}info = spi_flash_ids;for (; info->name != NULL; info++) {if (info->id_len) {if (!memcmp(info->id, id, info->id_len))return info;}}printf("SF: unrecognized JEDEC id bytes: %02x, %02x, %02x\n",id[0], id[1], id[2]);return ERR_PTR(-ENODEV);}spi_flash_read_id(struct spi_flash *flash)函数中需要读flashID,info = spi_flash_ids;对应的时ID列表,u-boot-xlnx-xilinx-v2018.1\u-boot-xlnx-xilinx-v2018.1\drivers\mtd\spi\ spi_flash_ids.c中定义了#ifdef CONFIG_SPI_FLASH_MACRONIX /* MACRONIX */{"mx25l2006e", INFO(0xc22012, 0x0, 64 * 1024, 4, 0) },{"mx25l4005", INFO(0xc22013, 0x0, 64 * 1024, 8, 0) },{"mx25l8005", INFO(0xc22014, 0x0, 64 * 1024, 16, 0) },{"mx25l1605d", INFO(0xc22015, 0x0, 64 * 1024, 32, 0) },{"mx25l3205d", INFO(0xc22016, 0x0, 64 * 1024, 64, 0) },{"mx25l6405d", INFO(0xc22017, 0x0, 64 * 1024, 128, 0) },{"mx25l12805", INFO(0xc22018, 0x0, 64 * 1024, 256, RD_FULL | WR_QPP) },{"mx25l25635f", INFO(0xc22019, 0x0, 64 * 1024, 512, RD_FULL | WR_QPP) },{"mx25l51235f", INFO(0xc2201a, 0x0, 64 * 1024, 1024, RD_FULL | WR_QPP) },{"mx25u6435f", INFO(0xc22537, 0x0, 64 * 1024, 128, RD_FULL | WR_QPP) },{"mx25l12855e", INFO(0xc22618, 0x0, 64 * 1024, 256, RD_FULL | WR_QPP) },{"mx25u1635e", INFO(0xc22535, 0x0, 64 * 1024, 32, SECT_4K) },{"mx66u51235f", INFO(0xc2253a, 0x0, 64 * 1024, 1024, RD_FULL | WR_QPP) },{"mx66l1g45g", INFO(0xc2201b, 0x0, 64 * 1024, 2048, RD_FULL | WR_QPP) },{"mx66u1g45g", INFO(0xc2253b, 0x0, 64 * 1024, 2048, RD_FULL | WR_QPP) },#endif因此⽣成u-boot的过程中,需要添加CONFIG_SPI_FLASH_MACRONIX解决⽅法:在gedit configs/zynq_zed_defconfig 中添加CONFIG_SPI_FLASH_MACRONIX=y问题解决。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【uboot启动常见的错误汇总】
1. operating at 100M full duplex mode
*** ERROR: `ethaddr' not set
dm9000 i/o: 0x5000000, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 00:00:00:00:00:00
operating at 100M full duplex mode
Wrong Image Format for bootm command
ERROR: can't get kernel image!
原因是:没有设置mac地址,需要重新设置
setenv ethaddr 01:02:03:04:05:06
saveenv/save
2.在开发板上ping ubuntu的ip地址ping不通
1.网线没插
2.ubuntu没有打开
3.ping 的过程中,ubuntu会扫描ip地址,会一直去获取ip地址,但是开发板没有分配ip地址的权利,也就是ubuntu获取不了ip地址,同时查看ubuntu 的ip地址是没有的。
1.设置临时的ip地址
sudo ifconfig eth0 192.168.1.*
2.永久生效
在ubuntu的右上角添加静态ip地址。
3.发现ubuntu的右上角网络图标类似于wifi的图标,如何将这个图标改成网络的
图标
sudo /etc//init.d/network-manager restart
如何执行之后,还是wifi图标
sudo vi /etc/NetworkManager/NetworkManager.conf
managed=false false --->true
sudo /etc//init.d/network-manager restart
如果执行之后,还是wifi图标
重启系统
4.你的pc电脑已经打开wifi网,需要将无线网关闭
5.虚拟机网卡设置出错,需要将nat设置为桥接
6.换开发板
4.ping ubuntu是可以ping通,但是当启动内核的时候出现T TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
ubuntu的tftp服务没有开启,重启tftp服务
sudo /etc/init.d/tftpd-hpa restart
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
ubuntu的ip没了,需要再次设置ip地址
sudo ifconfig eth0 192.168.1.*
5.uboot启动内核是提示文件没找到,需要将内核和设备树拷贝到tftp服务器的目录
6.nfs
在启动nfs服务器时,
exportfs: /etc/exports [2]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/rootfs".
Assuming default behaviour ('no_subtree_check').
NOTE: this default has changed since nfs-utils version 1.0.x
解决方法:
/rootfs *(rw,sync,no_root_squash,no_subtree_check)
7.vfs:为应用程序提供统一的接口
程序--》fopen ---->open---->vfs---->内核函数---》硬件
7.] VFS: Mounted root (nfs filesystem) on device 0:10.
[ 2.130000] devtmpfs: error mounting -2
[ 2.135000] Freeing unused kernel memory: 232K (c0655000 - c068f000)
[ 2.140000] hub 1-3:1.0: USB hub found
[ 2.145000] hub 1-3:1.0: 3 ports detected
[ 2.150000] Failed to execute /linuxrc (error -2). Attempting defaults...
[ 2.160000] Kernel panic - not syncing: No working init found. Try passing init= option to kernel. See Linux Documentation/init.txt for guidance.
解决方法:
需要将文件系统拷贝到这个目录。