uncompressing linux .................................................后没反应解决办法

编译kernel是的no machine record defined 错误,网上有一些解法,其实都是错误的,以讹传讹。不打算自己写,找到一篇还算靠谱的,转摘一下。

其根本原因是没有在 __proc_info_end  与 __proc_info_begin 之间找到有效的machine ID。

http://hi.baidu.com/rwen2012/item/9f5191c64036d87ecfd4f849

在新的kernel 2.6.29 上编译不能通过,终端提示:

arm-none-linux-gnueabi-ld: no machine record defined

解决方法 
放狗搜后,按照如下方法可以解决。将arch/arm/kernel/vmlinux.lds的最后两行(如下),给注释起来,但都没说是为了什么

ASSERT((__proc_info_end - __proc_info_begin), "missing CPU support") 
ASSERT((__arch_info_end - __arch_info_begin), "no machine record defined")

自己到arch/arm/kernel/vmlinux.lds里看的时候,才发现那两行的上头写着

/* These must never be empty 
If you have to comment these two assert statements out, your binutils is too old (for other reasons as well) */ 
ASSERT((__proc_info_end - __proc_info_begin), "missing CPU support") 
ASSERT((__arch_info_end - __arch_info_begin), "no machine record defined")

我想可能不是我交叉编译器太旧的缘故,而是太新了! 
我用的是:Sourcery G++ Lite 2009q1-126 for ARM GNU/Linux 
而官方是:Sourcery G++ Lite 2008q1-126 for ARM GNU/Linux

机器ID错误: 
现在注释后可以正常编译内核了!替换新的内核文件,在boot后提示: 
uncompressing linux ................................................. 
然后再没有动静了,我想可能解压后给kernel传递参数时出现问题了吧。但是是什么参数可能出的问题就不晓得啦。

在这里困住了好久!因为这句话啥都没提示!好歹有句话啊。。。。。。。。

经过多方搜索,发现了一个调试技巧,嘿嘿嘿,一般人我不告诉他!那就是下面解决方法中提到的设置Kernel debugging,设置后,再重启启动内核就会出现详细的问题说明。

因为内核启动时首先进入SVC模式,关闭中断,并machine ID,如果uboot传输过来的 machine ID跟编译的内核machine ID不一致,那就就咯屁了。具体表现为:啥反应都没有!

解决方法: 
1)。执行make xconfig

在配置中进入Kernel hacking,打开Kernel debugging和Kernel low-level debugging functions.

选中这两项的目的是打印出调试信息,重新make uImage

Starting kernel ...

Uncompressing Linux........................................................................................... done, booting the kernel.

Error: unrecognized/unsupported machine ID (r1 = 0x000007d1).

Available machine support:

ID (hex) NAME

罓?0009

Please check your kernel config and/or bootloader.

终于看到阻在这里的原因啦,是机器ID错误,别人的机器ID错误至少有个NAME值啊,我的咋为空呢?

2) 是不是没有注册机器ID?猜测。这一步保证系统支持的ID里面含有devkit8000!

make xconfig 发现system type菜单下面没有devkit的选项,肯定是哪里的配置文件还没有添加,经过分析,找到了/kernel/arch/arm/mach-omap2/Kconfig文件,在末尾配置添加了devkit8000支持。

config MACH_OMAP3_BEAGLE

bool "OMAP3 BEAGLE board"

depends on ARCH_OMAP3 && ARCH_OMAP34XX

config MACH_OMAP3_DEVKIT8000

bool "OMAP3 DEVKIT8000 board"

depends on ARCH_OMAP3 && ARCH_OMAP34XX

然后make xconfig 发现system type菜单,选择devkit选项,选devkit8000,保存。

3)上一步仅仅能保证可以支持,要想能正确支持,还要修改下面的文件。

1. 我们进到arch/arm/mach-omap2/board_devkit8000.c,在最后一段有这句

MACHINE_START(OMAP3_DEVKIT8000 , ”OMAP3 beggle board”)

这里OMAP3_DEVKIT8000就是machine ID的代号~ 呢具体值是多少呢?~

2. 在文件arch/arm/tools/mach-types中最后一行添加,设置我们的machine ID是2001。

omap3_devkit8000 ARCH_OMAP3_DEVKIT8000 OMAP3_DEVKIT8000 2001

通过修改Kconfig和mach-types两个文件,我们可以使系统正确的识别我们的machine ID,并且从上面我们也可以看到r1= 0x000007d1,0x7d1就是2001。与我们所设置的machine ID是相一致的。

时间: 2025-01-01 08:05:58

uncompressing linux .................................................后没反应解决办法的相关文章

Centos7安装完后,重新启动系统提示Initial setup of CentOS Linux 7 (Core)的解决办法

今天安装完Centos7(CentOS-7-x86_64-DVD-1511.iso)后,重新启动系统提示Initial setup of CentOS Linux 7 (Core): 解决办法: 按提示步骤分别输入"1"."2"."q"."yes"即可.

WIN10连接VPN后无法上网解决办法-WIN10,VPN,PPTP,连接VPN后无法上网,VPN连接右键属性--网络--IPV4,点属性没反应不会弹出对话框

WIN10连接VPN后无法上网解决办法 1.C盘搜索框内搜索rasphone.pbk 2.打开rasphone.pbk(字节不为0的那个文件) 3.IpPrioritizeRemote值全部替换成0(有2个) 重新连接VPN看看 亲测有效!!! 微软官方的文档:http://answers.microsoft.com/zh-hans/windows/forum/windows_10-networking/win10vpnpptp%E8%BF%9E%E6%8E%A5vpn%E5%90%8E/c48

android 自定义adapter和线程结合 + ListView中按钮滑动后状态丢失解决办法

adapter+线程 1.很多时候自定义adapter的数据都是来源于服务器的,所以在获取服务器的时候就需要异步获取,这里就需要开线程了(线程池)去获取服务器的数据了.但这样有的时候adapter的中没有数据. 如下面的代码: 这就是在initData中异步获取服务器的数据,然后实例化adatper,再将adapter赋给listView. 2.initData()中的代码是: 这里线程要睡眠5秒钟,是为了模仿网络的耗时操作 3.Handler: 在Handler中接收到数据后给list赋值后,

win10开始菜单打不开怎么办 win菜单键没反应解决办法

win10开始菜单打不开怎么办 win菜单键没反应解决办法 —————————————————————————————————————————————————————————————————————————— 1.右键点击任务栏—— 任务管理器,点击文件——运行新任务,新建任务 “powershell”同时勾选下方的“以管理员身份运行” .确定. 2.在弹出“管理员”运行中输入:Get-AppXPackage -AllUsers | Foreach {Add-AppxPackage -Disab

(原创)Windows下编译的Shell脚本不能再Linux中运行的解决办法

一.原理 Windows编译的文件和Linux编译的文件格式不太一样,导致在Linux运行Shell脚本的时候会提示:/bin/bash^M: bad interpreter: 没有那个文件或目录. 原因是这样的: 1.Windows编译的文件结束时(回车+换行) 2.Linux编译的文件结束时(换行)             这样导致了Windows编译的文件放在Linux中会有[noeol]和[dos]的Flag标示. 如果运行CAT命令可以更直观的看到两个不同操作系统产生的文件差异,Win

linux 中文显示乱码解决办法

linux 中文显示乱码解决办法, 其实是有多种情况的, 有一部分是由于终端默认的设置造成的 vi /etc/sysconfig/i18n将内容改为LANG="en_US.UTF-8"SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"SYSFONT="latarcyrheb-sun16"将内容改为LANG="zh_CN.GB18030"LANGUAGE="zh_

新浪图片停止外链后的一些解决办法

缘由 个人在后台获取了一个新浪图片,最近新浪图片无法展示了,看了下http请求返回状态是403.说明被限制住了. 原理 一般这种限制都是 通过判断 referer 或者请求来源IP 是不是信任的. 解决方案 方案一 增加如下代码在head头部,但是就会导致所有的请求不会有referer ,这对于我们正常完整进行溯源不太友好 <meta name="referrer" content="no-referrer" /> <meta name="

nextcloud 登陆不了,填写密码后登陆没反应解决办法

原因是web.php nginx 和/var/lib/php/session/不是同一个用户路径:/var/lib/php/session/解决办法换成一样的用户(我的用的nginx用户)chown nginx:nginx /var/lib/php/session/之后就可以登陆了,完美解决有问题欢迎留言 1349371880 原文地址:https://blog.51cto.com/12226796/2444119

Mysql误删root后的简单解决办法

今天在学习mysql数据库过程中,误删掉了root用户,一直出现 “mysql ERROR 1045 (28000): Access denied for user root”错误,网上查了半天才找到解决办法: 1.编辑mysql配置文件my.ini(windows下叫这个名字)或my.cnf (linux下叫这个名字)找到这个选项skip-grant-tables,如果没有请添加!然后重启mysql服务器. 2.提示符下输入mysql -u root -p就可以不用密码登录了,出现passwo