免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2464 | 回复: 9
打印 上一主题 下一主题

[内核入门] 如何產生vmcore [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-09-15 10:56 |只看该作者 |倒序浏览
各位好,請問一下當我已經把下面config都選入了,但產生panic時,vmcore還是無法產生出,想請教各位是什麼原因嗎?

‧         Boot options  --->
     ‧         [*] Kexec system call (EXPERIMENTAL)
     ‧         [*] Export atags in procfs (NEW)
‧         Kernel hacking  --->
     ‧         [*] Compile the kernel with debug info


BTW. 我目前是在 ARM Qemu上面作測試

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
2 [报告]
发表于 2014-09-15 12:48 |只看该作者
你这仅仅把KEXEC打开了。自己去百度一下KDUMP相关的文章吧。工作还差很多呢。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
3 [报告]
发表于 2014-09-15 12:50 |只看该作者
你需要crash kernel,在first kernel起来之后,需要用kexec加载crash kernel
然后first kernel panic时,才会去执行crash kernel
crash kernel成功启动之后,才能看到vmcore

论坛徽章:
0
4 [报告]
发表于 2014-09-15 16:29 |只看该作者
回复 3# arm-linux-gcc

感謝回應

目前的平台為Qemu+ARM

是有加入crashkernel=64M@0x0 到 command-line上

以及也porting好了kexec-tool使用下面方式去執行

在版子上使用以下方式執行

/home/app09/workspaces/kexec-tools-2.0.7/build/sbin/kexec -p /home/app09/linux-stable/vmlinux --initrd=/home/app09/ramdisk_16M --append="root=/dev/ram0 rw user_debug=31 console=ttyAMA0,115200n8"

發現會出現下面這錯誤
  1. Could not find a free area of memory of 0x1000 bytes...
  2. locate_hole failed
复制代码
請問有誰有在Qemu+ ARM是成功的,可否分享一下心得


   

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
5 [报告]
发表于 2014-09-15 16:36 |只看该作者
回复 4# wth0722


0地址肯定是不行的
arm linux的crashkernel的保留地址的实现有bug,不能自动分配,只能手动指定


你把完整的内核启动log贴出来


论坛徽章:
0
6 [报告]
发表于 2014-09-15 17:31 |只看该作者
回复 5# arm-linux-gcc


我有試過crashkernel=128M@16M依然是不行

看了一下上面吶command會作哪些事情

其實他就是去保留那塊記憶體而已(在開機時會作)

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
7 [报告]
发表于 2014-09-15 19:47 |只看该作者
回复 6# wth0722


    放在low memory的中间,这是最保险的

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
8 [报告]
发表于 2014-09-15 22:49 |只看该作者
你的内存有多大呀,是不是真没有这么一大块内存? 建议看看/proc/meminfo, 或在内存查找的过程打点信息。盲目去试不太可取。

论坛徽章:
0
9 [报告]
发表于 2014-09-16 19:25 |只看该作者
回复 7# arm-linux-gcc


    已經放到low_memory中間了

    也確定記憶體有這麼大的空間

    目前查的方向為reserve_crashkernel()這邊

    cmd為crashkernel=64M@32M

    看到printk("crash_base=0x%08x , crash_size=0x%0x8\n",crash_base,crash_size);

    crash_base=0, 0x20000008

    但是下面console印出的又是對的
    Reserving 64MB of memory at 32MB for crashkernel (System RAM: 128MB)

    我再查查看reserve_crashkernel()這邊

论坛徽章:
0
10 [报告]
发表于 2014-09-16 19:51 |只看该作者
回复 9# wth0722


它是對的

因為它的型態是unsigned long long

印出來是必須是要轉為(unsigned long)才會正確

所以我再看看有沒有其他人在Qemu上試成功好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP