linux – 自定义Centos5 AMI内核恐慌

我正在尝试在亚马逊上构建一个Custom Centos 5 AMI,并在启动时内核恐慌.
我花了将近一个星期的时间,我无法弄清楚出了什么问题.

我遵循了以下食谱:
http://blog.maclawran.ca/gotchas-porting-centos-58-from-virtualbox-to

我也尝试过互联网上其他类似的食谱,结果相同.我从上面的配方中改变的唯一事情是:

>使用最新的Centos ISO / repos(5.9)
>有一个分区(/ boot里面/)
>使用ext4而不是ext3的根分区

步骤几乎如下:

>在Virtual Box上安装Centos
>将.vdi磁盘转换为.img
>将磁盘映像上传到AWS
>将图像复制到卷
>对initrd,fstab,grub.conf进行一些更改
>快照量
>创建AMI
>启动新实例

EC2系统日志

Xen Minimal OS!
  start_info: 0xac4000(VA)
    nr_pages: 0x26700
  shared_inf: 0xbfa11000(MA)
     pt_base: 0xac7000(VA)
nr_pt_frames: 0x9
    mfn_list: 0x990000(VA)
   mod_start: 0x0(VA)
     mod_len: 0
       flags: 0x0
    cmd_line: root=/dev/sda1 ro 4
  stack:      0x94f860-0x96f860
MM: Init
      _text: 0x0(VA)
     _etext: 0x5ffbd(VA)
   _erodata: 0x78000(VA)
     _edata: 0x80ae0(VA)
stack start: 0x94f860(VA)
       _end: 0x98fe68(VA)
  start_pfn: ad3
    max_pfn: 26700
Mapping memory range 0xc00000 - 0x26700000
setting 0x0-0x78000 readonly
skipped 0x1000
MM: Initialise page allocator for c01000(c01000)-26700000(26700000)
MM: done
Demand map pfns at 26701000-2026701000.
Heap resides at 2026702000-4026702000.
Initialising timer interface
Initialising console ... done.
gnttab_table mapped at 0x26701000.
Initialising scheduler
Thread "Idle": pointer: 0x2026702010,stack: 0x26640000
Initialising xenbus
Thread "xenstore": pointer: 0x20267027c0,stack: 0x26650000
Dummy main: start_info=0x96f960
Thread "main": pointer: 0x2026702f70,stack: 0x26660000
"main" "root=/dev/sda1" "ro" "4" 
vbd 2049 is hd0
******************* BLKFRONT for device/vbd/2049 **********


backend at /local/domain/0/backend/vbd/2087/2049
Failed to read /local/domain/0/backend/vbd/2087/2049/feature-barrier.
Failed to read /local/domain/0/backend/vbd/2087/2049/feature-flush-cache.
16777216 sectors of 512 bytes
**************************

Press `ESC' to enter the menu... 1   
Press `ESC' to enter the menu... 0   
    [H
    [J  Booting 'CentOS (2.6.18-348.2.1.el5)'



root (hd0,0)

 Filesystem type is ext2fs,partition type 0x83

kernel /boot/vmlinuz-2.6.18-348.2.1.el5xen ro root=LABEL=/

initrd /boot/initrd-2.6.18-348.2.1.el5xenec2.img



xc_dom_probe_bzimage_kernel: kernel is not a bzImage
close blk: backend at /local/domain/0/backend/vbd/2087/2049
Bootdata ok (command line is ro root=LABEL=/)

Linux version 2.6.18-348.2.1.el5xen (mockbuild@builder10.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-54)) #1 SMP Tue Mar 5 17:05:33 EST 2013

BIOS-provided physical RAM map:

 Xen: 0000000000000000 - 0000000026f00000 (usable)

No mptable found.

Built 1 zonelists.  Total pages: 155531

Kernel command line: ro root=LABEL=/

Initializing CPU#0

PID hash table entries: 4096 (order: 12,32768 bytes)

Xen reported: 2666.746 MHz processor.

Console: colour dummy device 80x25

Dentry cache hash table entries: 131072 (order: 8,1048576 bytes)

Inode-cache hash table entries: 65536 (order: 7,524288 bytes)

Software IO TLB disabled

Memory: 602796k/637952k available (2559k kernel code,26616k reserved,1762k data,196k init)

Calibrating delay using timer specific routine.. 6688.32 BogoMIPS (lpj=13376641)

Security Framework v1.0.0 initialized

SELinux:  Initializing.

selinux_register_security:  Registering secondary module capability

Capability LSM initialized as secondary

Mount-cache hash table entries: 256

CPU: L1 I cache: 32K,L1 D cache: 32K

CPU: L2 cache: 6144K

CPU: Physical Processor ID: 0

CPU: Processor Core ID: 3

(SMP-)alternatives turned off

Brought up 1 CPUs

checking if image is initramfs... it is

Grant table initialized

NET: Registered protocol family 16

Brought up 1 CPUs

PCI: setting up Xen PCI frontend stub

ACPI: Interpreter disabled.

Linux Plug and Play Support v0.97 (c) Adam Belay

pnp: PnP ACPI: disabled

xen_mem: Initialising balloon driver.

usbcore: registered new driver usbfs

usbcore: registered new driver hub

PCI: System does not support PCI

PCI: System does not support PCI

NetLabel: Initializing

NetLabel:  domain hash size = 128

NetLabel:  protocols = UNLABELED CIPSOv4

NetLabel:  unlabeled traffic allowed by default

NET: Registered protocol family 2

IP route cache hash table entries: 32768 (order: 6,262144 bytes)

TCP established hash table entries: 131072 (order: 9,2097152 bytes)

TCP bind hash table entries: 65536 (order: 8,1048576 bytes)

TCP: Hash tables configured (established 131072 bind 65536)

TCP reno registered

audit: initializing netlink socket (disabled)

type=2000 audit(1363277397.008:1): initialized

VFS: Disk quotas dquot_6.5.1

Dquot-cache hash table entries: 512 (order 0,4096 bytes)

Initializing Cryptographic API

alg: No test for crc32c (crc32c-generic)

ksign: Installing public key data

Loading keyring

- Added public key 1A2C6C3E680FB539

- User ID: CentOS (Kernel Module GPG key)

io scheduler noop registered

io scheduler anticipatory registered

io scheduler deadline registered

io scheduler cfq registered (default)

pci_hotplug: PCI Hot Plug PCI Core version: 0.5

rtc: IRQ 8 is not free.

Non-volatile memory driver v1.2

Linux agpgart interface v0.101 (c) Dave Jones

brd: module loaded

Xen virtual console successfully installed as xvc0

Bootdata ok (command line is ro root=LABEL=/)

Linux version 2.6.18-348.2.1.el5xen (mockbuild@builder10.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-54)) #1 SMP Tue Mar 5 17:05:33 EST 2013

BIOS-provided physical RAM map:

 Xen: 0000000000000000 - 0000000026f00000 (usable)

No mptable found.

Built 1 zonelists.  Total pages: 155531

Kernel command line: ro root=LABEL=/

Initializing CPU#0

PID hash table entries: 4096 (order: 12,4096 bytes)

Initializing Cryptographic API

alg: No test for crc32c (crc32c-generic)

ksign: Installing public key data

Loading keyring

- Added public key 1A2C6C3E680FB539

- User ID: CentOS (Kernel Module GPG key)

io scheduler noop registered

io scheduler anticipatory registered

io scheduler deadline registered

io scheduler cfq registered (default)

pci_hotplug: PCI Hot Plug PCI Core version: 0.5

rtc: IRQ 8 is not free.

Non-volatile memory driver v1.2

Linux agpgart interface v0.101 (c) Dave Jones

brd: module loaded

Xen virtual console successfully installed as xvc0

Event-channel device installed.

Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2

ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx

ide-floppy driver 0.99.newide

usbcore: registered new driver hiddev

usbcore: registered new driver usbhid

drivers/usb/input/hid-core.c: v2.6:USB HID core driver

PNP: No PS/2 controller found. Probing ports directly.

i8042.c: No controller found.

mice: PS/2 mouse device common for all mice

md: md driver 0.90.3 MAX_MD_DEVS=256,MD_SB_DISKS=27

md: bitmap version 4.39

TCP bic registered

Initializing IPsec netlink socket

NET: Registered protocol family 1

NET: Registered protocol family 17

XENBUS: Device with no driver: device/vbd/2049

XENBUS: Device with no driver: device/vif/0

XENBUS: Device with no driver: device/console/0

Initalizing network drop monitor service

Write protecting the kernel read-only data: 506k

Red Hat nash version 5.1.19.6 starting
Mounting proc filesystem
Mounting sysfs filesystem
Creating /dev
Creating initial device nodes
Setting up hotplug.
Creating block device nodes.
Loading ehci-hcd.ko module
Loading ohci-hcd.ko module
Loading uhci-hcd.ko module
USB Universal Host Controller Interface driver v3.0

Loading scsi_mod.ko module
SCSI subsystem initialized

Loading sd_mod.ko module
Loading libata.ko module
Loading ata_piix.ko module
Loading ahci.ko module
Loading dm-mem-cache.ko module
Loading dm-mod.ko module
device-mapper: uevent: version 1.0.3

device-mapper: ioctl: 4.11.6-ioctl (2011-02-18) initialised: dm-devel@redhat.com

Loading dm-log.ko module
Loading dm-region_hash.ko module
Loading dm-message.ko module
Loading dm-raid45.ko module
device-mapper: dm-raid45: initialized v0.2594l

Loading xenblk.ko module
Registering block device major 8

register_blkdev: cannot get major 8 for sd

xen_blk: can't get major 8 with name sd

vbd vbd-2049: 19 xlvbd_add at /local/domain/0/backend/vbd/2087/2049

Loading xennet.ko module
netfront: Initialising virtual ethernet driver.

netfront: device eth0 has copying receive path.

Waiting for driver initialization.
Scanning and configuring dmraid supported devices
Creating root device.
mkrootdev: expected fs options
Mounting root filesystem.
mount: missing mount point
Setting up other filesystems.
Setting up new root fs
setuproot: moving /dev failed: No such file or directory
no fstab.sys,mounting internal defaults
setuproot: error mounting /proc: No such file or directory
setuproot: error mounting /sys: No such file or directory
Switching to new root and running init.
unmounting old /dev
unmounting old /proc
unmounting old /sys
switchroot: mount failed: No such file or directory
Kernel panic - not syncing: Attempted to kill init!

/boot/grub/grub.conf文件

default=0
timeout=2
hiddenmenu

title CentOS (2.6.18-348.2.1.el5)
   root (hd0,0)
   kernel /boot/vmlinuz-2.6.18-348.2.1.el5xen ro root=LABEL=/
   initrd /boot/initrd-2.6.18-348.2.1.el5xenec2.img

/ etc / fstab文件

LABEL=/                 /                       ext4    defaults        1 1
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

AMI设置:

Root Device:      /dev/sda1
Kernel ID:        aki-8b655dff
Architecture:     x86_64
Root Device Type: ebs
Image Size:       8 GiB
Block Devices:    /dev/sda1=snap-4dfffb65:8:true:standard

实例设置:

Root Device:   sda1
Block Devices: sda1

/boot/initrd-2.6.18-348.2.1.el5xenec2.img中的init脚本

#!/bin/nash

mount -t proc /proc /proc
setquiet
echo Mounting proc filesystem
echo Mounting sysfs filesystem
mount -t sysfs /sys /sys
echo Creating /dev
mount -o mode=0755 -t tmpfs /dev /dev
mkdir /dev/pts
mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts
mkdir /dev/shm
mkdir /dev/mapper
echo Creating initial device nodes
mknod /dev/null c 1 3
mknod /dev/zero c 1 5
mknod /dev/urandom c 1 9
mknod /dev/systty c 4 0
mknod /dev/tty c 5 0
mknod /dev/console c 5 1
mknod /dev/ptmx c 5 2
mknod /dev/rtc c 10 135
mknod /dev/tty0 c 4 0
mknod /dev/tty1 c 4 1
mknod /dev/tty2 c 4 2
mknod /dev/tty3 c 4 3
mknod /dev/tty4 c 4 4
mknod /dev/tty5 c 4 5
mknod /dev/tty6 c 4 6
mknod /dev/tty7 c 4 7
mknod /dev/tty8 c 4 8
mknod /dev/tty9 c 4 9
mknod /dev/tty10 c 4 10
mknod /dev/tty11 c 4 11
mknod /dev/tty12 c 4 12
mknod /dev/ttyS0 c 4 64
mknod /dev/ttyS1 c 4 65
mknod /dev/ttyS2 c 4 66
mknod /dev/ttyS3 c 4 67
echo Setting up hotplug.
hotplug
echo Creating block device nodes.
mkblkdevs
echo "Loading ehci-hcd.ko module"
insmod /lib/ehci-hcd.ko 
echo "Loading ohci-hcd.ko module"
insmod /lib/ohci-hcd.ko 
echo "Loading uhci-hcd.ko module"
insmod /lib/uhci-hcd.ko 
mount -t usbfs /proc/bus/usb /proc/bus/usb
echo "Loading scsi_mod.ko module"
insmod /lib/scsi_mod.ko 
echo "Loading sd_mod.ko module"
insmod /lib/sd_mod.ko 
echo "Loading libata.ko module"
insmod /lib/libata.ko 
echo "Loading ata_piix.ko module"
insmod /lib/ata_piix.ko 
echo "Loading ahci.ko module"
insmod /lib/ahci.ko 
echo "Loading dm-mem-cache.ko module"
insmod /lib/dm-mem-cache.ko 
echo "Loading dm-mod.ko module"
insmod /lib/dm-mod.ko 
echo "Loading dm-log.ko module"
insmod /lib/dm-log.ko 
echo "Loading dm-region_hash.ko module"
insmod /lib/dm-region_hash.ko 
echo "Loading dm-message.ko module"
insmod /lib/dm-message.ko 
echo "Loading dm-raid45.ko module"
insmod /lib/dm-raid45.ko 
echo "Loading xenblk.ko module"
insmod /lib/xenblk.ko 
echo "Loading xennet.ko module"
insmod /lib/xennet.ko 
echo Waiting for driver initialization.
stabilized --hash --interval 1000 /proc/scsi/scsi
mkblkdevs
echo Scanning and configuring dmraid supported devices
echo Creating root device.
mkrootdev -t  -o defaults,ro 
echo Mounting root filesystem.
mount /sysroot
echo Setting up other filesystems.
setuproot
echo Switching to new root and running init.
switchroot

任何帮助是极大的赞赏

古斯塔沃

解决方法

在这两点之间是你的线索
mkrootdev: expected fs options
...
switchroot: mount failed: No such file or directory
Kernel panic - not syncing: Attempted to kill init!

引导加载程序已将内核加载到内存中并解压缩initrd. init进程已经启动并尝试安装永久存储(即:根文件系统),此时卸载initramfs并从永久存储继续引导.

你的initrd无法挂载根文件系统,所以init死了,因此你的内核恐慌.

我会尝试将/和/ boot分离到单独的分区中,并使用ext3.我对Amazon或VirtualBox了解不多,但我知道Red Hat不会支持EL5上的ext4根文件系统,因此它不是预期的或经过测试的用例.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、信号(signal)、消息队列、共享内存、信号量、套接字(socket)。管道用于具有亲缘关系的进程间通信,有名管道的每个管道具有名字,使没有亲缘关系的进程间也可以通信。信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别对整个系统的性能做统计,而进程级别则具体到进程,为每个进程维护统计信息。

按实现原理分,可分为基于计数器和跟踪以及剖析。含义如下:

计数器:内核维护的统计数据,通常为无符号整型,用于对发生的事件计数,比如,网络包接收计数器,磁
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书验证,详细追踪整个交互过程,可用于调用网络后端接口,诊断http和https网络服务故障。
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满、fd泄漏等问题。命令包括ping、fping、tcpdump、lsof、netstat、/proc/$pid/fd、du、grep、traceroute、dig。
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的进程数目,用uptime查看到负载很高,既有可能是CPU利用率高,也可能是大量在等待io的进程导致,用mpstat查看每个CPU的使用情况,查看CPU的使用率或者CPU花在等待io的时间,接着用pidstat定位具体的进程
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线程切换及中断切换,进程切换的开销较大,除了需要保存寄存器和程序计数器中的值还需保存全局变量、栈等到内存中,以便下次运行恢复,而同一进程中的线程切换开销会小很多,只需更新寄存器和线程独有的栈,共享资源如打开的文件、全局变量等无需切换,当硬件中
1.top命令 作用:该命令可以按CPU使用.内存使用和执行时间对任务进行排序,常用来监控系统中占用CPU或内存较高的程序及CPU和内存的负载。 默认视图: 当想看系统负载时,可观察汇总的%CPU中的us用户进程和sy系统进程是否占用CPU很高,相加接近100%就说明占用很高了,有些程序可能得不到及
文章浏览阅读1.8k次,点赞63次,收藏54次。Linux下的目录权限!!!粘滞位!!!超详解!!!
文章浏览阅读1.6k次,点赞44次,收藏38次。关于Qt的安装、Windows、Linux、MacBook_mack book 安装qt
本文介绍了使用shell脚本编写一个 Hello
文章浏览阅读1.5k次,点赞37次,收藏43次。【Linux】初识Linux——了解操作系统的发展历史以及初次体验Linux编程环境
文章浏览阅读3k次,点赞34次,收藏156次。Linux超详细笔记,个人学习时很认真的记录的,觉得好的麻烦点个赞。
文章浏览阅读6.8k次,点赞109次,收藏114次。【Linux】 OpenSSH_9.3p1 升级到 OpenSSH_9.5p1(亲测无问题,建议收藏)_openssh_9.5p1
文章浏览阅读3.5k次,点赞93次,收藏78次。初识Linux中的线程,理解线程的各种概念,理解进程地址空间中的页表转换,介绍pthread线程库并理解线程库!
文章浏览阅读863次。出现此问题为Linux文件权限问题,解决方案为回到引擎目录执行命令。输入用户密码后运行./UnrealEditor。_increasing per-process limit of core file size to infinity.
文章浏览阅读2.9k次。使用文本编辑器:打开CSV文件,并使用文本编辑器(如Notepad++、Sublime Text、Visual Studio Code等)来查看文件的字符编码格式。通常在编辑器的底部状态栏或设置中可以找到当前编码的显示。请注意,上述方法并非绝对准确,特别是当文件没有明确的编码标识时。因此,如果你发现CSV文件在不同的工具或方法中显示不同的编码格式,可能需要进行进一步的分析和判断,或者尝试使用不同的编码转换方法。该命令将输出文件的MIME类型和编码信息。使用命令行工具:在命令行中,你可以使用。_shell读取csv文件逐行处理
本文介绍了如何在Linux系统中升级gcc版本,以便更好地支持C++11及以上版本的新特性。通过升级gcc,可以提升编译器的功能和性能,获得更好的开发体验。详细的步骤和方法请参考原文链接。
文章浏览阅读4.4k次,点赞6次,收藏19次。Mosquitto是一个开源的MQTT消息代理服务器。MQTT是一个轻量级的、基于发布/订阅模式的消息传输协议。 mosquitto的安装使用比较简单,可以方便的来进行一些测试。_linux mosquitto
文章浏览阅读7.2k次,点赞2次,收藏12次。Linux中,用于根目录下有一个.ssh目录,保存了ssh相关的key和一些记录文件。_~/.ssh/
文章浏览阅读4.5k次,点赞5次,收藏18次。首先需要安装 snmp ,使用下面的命令进行安装安装完毕之后,使用下面的命令查看是否安装成功当命令行显示如图即为安装成功。_snmp工具