Назад | Перейти на главную страницу

Загрузка Ubuntu 14.04 PXE с паникой ядра initrd (initramfs)

Вкратце (насколько я понимаю): я не могу загрузить ubuntu по локальной сети (загрузка PXE) с помощью initramfs без компиляции собственного ядра. Как я вижу, проблема такая: сетевой интерфейс устройства вообще не запускается.

Итак, вот длинная история. У меня два одинаковых сервера. Один является мастером с жестким диском, а другой - бездисковым узлом. Я хочу, чтобы узел загружался из сети с корневой файловой системой, взятой из NFS. Я все настроил (dhcp, tftpd-hpa, nfs-kernel-server). Я сделал / nfsroot. После этого я скомпилировал собственное ядро ​​и - вот первый важный шаг - я загружен убунту без помощь initrd.img. Ничего страшного, root fs брали у мастера. Но затем - и вот следующий важный шаг - я хочу выполнить ту же загрузку но без компиляции кастомного ядра. Я хочу сделать это с помощью initrd.img.

Итак, я сделал следующие шаги:

  1. Я изменился BOOT=nfs и MODULES=netboot в /etc/initramfs-tools/initramfs.conf
  2. бегать mkinitramfs -o ~/initrd.img-uname -r``
  3. скопировал сгенерированный образ initrd на мой /tftproot
  4. изменено KERNEL=<my bundled kernel> и добавил initrd=... в командную строку в /tftproot/pxelinux.cfg/default

После этого я включаю узел и ... получаю панику ядра. Вот такая паника:

[   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. И результат тот же. Такая же ядерная паника.

Я также попытался загрузить виртуальный ящик vm по сети. Это все еще вызывает у меня панику ядра.

Так что у меня вопрос .. Что не так ?? Мне кажется, что мои шаги - это шаги по созданию загружаемого по сети узла без компиляции собственного ядра.

Дополнительная информация.

  1. LUbuntu 14.04
  2. Сетевой интерфейс - Intel i350 (драйвер для него - igb)
  3. /tftproot/pxelinux.cfg/default https://dl.dropboxusercontent.com/u/8057759/netboot/default
  4. .config которое я использовал для создания собственного ядра, которое загрузился без initrd https://dl.dropboxusercontent.com/u/8057759/netboot/.config
  5. Текущий комплект /boot/config-3.13.0-24-generic (если это может хоть как-то помочь) https://dl.dropboxusercontent.com/u/8057759/netboot/config-3.13.0-24-generic
  6. Журнал с паникой ядра. Вы можете увидеть это в самом низу. Как видите, нет никакого упоминания о igb OR eth0 https://dl.dropboxusercontent.com/u/8057759/netboot/console.txt

Спасибо.

1) Паника ядра возникает из-за того, что сценарий инициализации не работает при попытке найти сетевое устройство для DHCP.

2) Вам не нужно компилировать собственное ядро ​​для загрузки PXE / установки Ubuntu / Lubuntu; все намного проще;

См. Параметры, используемые Serva при загрузке / установке Lubuntu PXE (я связан с разработкой 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, вам, вероятно, следует использовать его для точной настройки ваших параметров; как только у вас будет рабочий набор, вы можете перейти на любой PXE-сервер, который вы, возможно, захотите использовать.

Я сделал это. Проблема оказалась очень простой. Я дал PXE-клиенту ядро ​​3.13.0-30. Но я бежал mkinitramfs на машине с ядром 3.13.0-24.

Я начал давать клиенту PXE ядро ​​3.13.0-24, и оно сработало.