简短的故事是这样的(据我所知):我无法通过局域网(PXE启动)在initramfs的帮助下启动ubuntu,而无需编译自己的内核。 正如我所看到的,问题是:networking接口设备根本没有启动。
所以这里是漫长的故事。 我有两个相同的服务器。 一个是硬盘主,另一个是无盘节点。 我希望节点可以从networking中使用从NFS获取的根fs进行引导。 我设置了一切(dhcp,tftpd-hpa,nfs-kernel-server)。 我做了一个/ nfsroot。 在此之后,我编译了一个定制的内核,这是第一个重要的步骤 – 我没有 initrd.img的帮助就启动了 ubuntu。 没关系,根源是从主人那里拿走的。 但是,接下来是重要的一步 – 我想做同样的启动, 但不编译自定义的内核。 我想在initrd.img的帮助下做到这一点。
所以我做了以下步骤:
/etc/initramfs-tools/initramfs.conf更改了BOOT=nfs和MODULES=netboot mkinitramfs -o ~/initrd.img- uname -r“ /tftproot KERNEL=<my bundled kernel> ,并将initrd=...添加到/tftproot/pxelinux.cfg/default的cmdline 在此之后,我加电节点,并得到一个内核恐慌。 这是恐慌:
[ 18.415714] Freeing unused kernel memory: 824K (ffff880001732000 - ffff880001800000) [ 18.424996] Freeing unused kernel memory: 700K (ffff880001b51000 - ffff880001c00000) Loading, please wait... [ 18.446709] systemd-udevd[340]: starting version 204 Begin: Loading essential drivers ... done. Begin: Running /scripts/init-premount ... done. Begin: Mounting root file system ... Begin: Running /scripts/nfs-top ... done. ipconfig: no devices to configure ipconfig: no devices to configure ipconfig: no devices to configure ipconfig: no devices to configure ipconfig: no devices to configure ipconfig: no devices to configure ipconfig: no devices to configure ipconfig: no devices to configure ipconfig: no devices to configure ipconfig: no devices to configure /init: .: line 252: can't open '/run/net-*.conf' [ 18.604039] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000200 [ 18.604039] [ 18.613180] CPU: 0 PID: 1 Comm: init Not tainted 3.13.0-30-generic #54-Ubuntu [ 18.620323] Hardware name: Supermicro X9DRFF-iG+/-7G+/-iTG+/-7TG+/X9DRFF-iG+/-7G+/-iTG+/-7TG+, BIOS 3.0 07/29/2013 [ 18.630668] ffff8817f8748000 ffff8817fb1d7e48 ffffffff8171a324 ffffffff81a4dcc0 [ 18.638135] ffff8817fb1d7ec0 ffffffff81713525 ffffffff00000010 ffff8817fb1d7ed0 [ 18.645599] ffff8817fb1d7e70 ffffffff81f229e0 0000000000000200 ffff8817fb1d8398 [ 18.653070] Call Trace: [ 18.655539] [<ffffffff8171a324>] dump_stack+0x45/0x56 [ 18.660696] [<ffffffff81713525>] panic+0xc8/0x1d7 [ 18.665498] [<ffffffff8106a391>] do_exit+0xa41/0xa50 [ 18.670554] [<ffffffff8109dd94>] ? vtime_account_user+0x54/0x60 [ 18.676562] [<ffffffff8106a41f>] do_group_exit+0x3f/0xa0 [ 18.681954] [<ffffffff8106a494>] SyS_exit_group+0x14/0x20 [ 18.687458] [<ffffffff8172aeff>] tracesys+0xe1/0xe6 [ 18.695229] ------------[ cut here ]------------ [ 18.699859] WARNING: CPU: 0 PID: 1 at /build/buildd/linux-3.13.0/arch/x86/kernel/smp.c:124 native_smp_send_reschedule+0x5d/0x60() [ 18.711494] Modules linked in: [ 18.714572] CPU: 0 PID: 1 Comm: init Not tainted 3.13.0-30-generic #54-Ubuntu [ 18.721707] Hardware name: Supermicro X9DRFF-iG+/-7G+/-iTG+/-7TG+/X9DRFF-iG+/-7G+/-iTG+/-7TG+, BIOS 3.0 07/29/2013 [ 18.732044] 0000000000000009 ffff88181fc03d90 ffffffff8171a324 0000000000000000 [ 18.739500] ffff88181fc03dc8 ffffffff810676bd 0000000000000001 ffff88181fc14440 [ 18.746956] 00000000fffeec2c 0000000000000000 ffff88181fc34440 ffff88181fc03dd8 [ 18.754421] Call Trace: [ 18.756883] <IRQ> [<ffffffff8171a324>] dump_stack+0x45/0x56 [ 18.762675] [<ffffffff810676bd>] warn_slowpath_common+0x7d/0xa0 [ 18.768676] [<ffffffff8106779a>] warn_slowpath_null+0x1a/0x20 [ 18.774512] [<ffffffff8104022d>] native_smp_send_reschedule+0x5d/0x60 [ 18.781041] [<ffffffff810a800a>] trigger_load_balance+0x16a/0x1e0 [ 18.787232] [<ffffffff810992c4>] scheduler_tick+0xa4/0xf0 [ 18.792737] [<ffffffff81076230>] update_process_times+0x60/0x70 [ 18.798753] [<ffffffff810d5bf5>] tick_sched_handle.isra.17+0x25/0x60 [ 18.805188] [<ffffffff810d5c71>] tick_sched_timer+0x41/0x60 [ 18.810874] [<ffffffff8108e547>] __run_hrtimer+0x77/0x1d0 [ 18.816362] [<ffffffff810d5c30>] ? tick_sched_handle.isra.17+0x60/0x60 [ 18.822980] [<ffffffff8108ed4f>] hrtimer_interrupt+0xef/0x230 [ 18.828821] [<ffffffff81043077>] local_apic_timer_interrupt+0x37/0x60 [ 18.835360] [<ffffffff8172d0bf>] smp_apic_timer_interrupt+0x3f/0x60 [ 18.841715] [<ffffffff8172ba5d>] apic_timer_interrupt+0x6d/0x80 [ 18.847722] <EOI> [<ffffffff810b0bd2>] ? up+0x32/0x50 [ 18.852981] [<ffffffff817135f0>] ? panic+0x193/0x1d7 [ 18.858036] [<ffffffff8171355a>] ? panic+0xfd/0x1d7 [ 18.863004] [<ffffffff8106a391>] do_exit+0xa41/0xa50 [ 18.868059] [<ffffffff8109dd94>] ? vtime_account_user+0x54/0x60 [ 18.874065] [<ffffffff8106a41f>] do_group_exit+0x3f/0xa0 [ 18.879459] [<ffffffff8106a494>] SyS_exit_group+0x14/0x20 [ 18.884947] [<ffffffff8172aeff>] tracesys+0xe1/0xe6 [ 18.889906] ---[ end trace 614851f5bf760874 ]---
我也试图做到以下几点。 由于这些机器是相同的,所以我在主服务器上输出了lsmod ,并将所有模块添加到/etc/initramfs-tools/modules并更改为MODULES=list 。 在这个mkinitramfs -o ~/initrd.img- uname -r“后复制到/tftproot 。 结果是一样的。 同样的内核恐慌。
我也试图netboot一个virtualbox虚拟机。 它仍然给我这个内核恐慌。
所以我的问题是…什么是错的? 我的步骤似乎是在不编译我自己的内核的情况下制作可引导networking节点的步骤。
一些额外的信息。
/tftproot/pxelinux.cfg/default https://dl.dropboxusercontent.com/u/8057759/netboot/default .config ,我用它来build立我的自定义内核, 在没有 initrd的情况下启动 https://dl.dropboxusercontent.com/u/8057759/netboot/.config /boot/config-3.13.0-24-generic (如果可以帮忙的话) https://dl.dropboxusercontent.com/u/8057759/netboot/config-3.13.0-24-generic 谢谢。
1)内核恐慌是由于尝试为dhcp查找networking设备时初始化脚本失败而引起的。
2)您不必编译自己的内核进行PXE启动/安装Ubuntu / Lubuntu; 事情要简单得多;
请参阅PXE启动/安装Lubuntu时使用的参数(我与Serva开发相关)
[PXESERVA_MENU_ENTRY] asset = Lubuntu 14.04 Desktop Live platform = amd64 kernel = NWA_PXE/$HEAD_DIR$/casper/vmlinuz append = showmounts toram root=/dev/cifs initrd=NWA_PXE/$HEAD_DIR$/casper/initrd.lz,NWA_PXE/$HEAD_DIR$/casper/INITRD_N11.GZ boot=casper netboot=cifs nfsroot=//$IP_BSRV$/NWA_PXE_SHARE/$HEAD_DIR$ NFSOPTS=-ouser=serva,pass=avres,ro ip=bootp ro
在这种情况下,Serva使用CIFS而不是NFS,但可以轻松更改相应的附加参数。 您还将看到一些其他目录和IP参数指向Serva存储库,必须根据您的需要进行编辑。 看到你需要下载一个微小的互补initrd INITRD_N11.GZ从Serva的网站免费提供。
当然,您不需要使用Serva来启动客户端; 您可以使用您自己的PXE服务器使用Serva参数。 即使你不打算使用Serva,也应该使用它来微调你的参数; 一旦你有一个工作集,那么你可以移动到任何你可能想要使用的PXE服务器。
我做到了。 问题变得非常简单。 我给了PXE客户端一个3.13.0-30内核。 但是我在运行3.13.0-24内核的机器上运行mkinitramfs 。
我开始给一个PXE客户端的3.13.0-24内核,它的工作。