Загрузка нового ядра Linux изнутри Linux?

Кто-нибудь знает способ "загрузить" другое ядро ​​Linux из Linux, отказавшись от исходного ядра /initrd? Идея состоит в том, что я могу загрузить свой сервер из небольшой копии Linux, доступной только для чтения, которая выполняет некоторые задачи по ведению домашнего хозяйства / сбору данных, а затем проверяет работу сервера управления, чтобы выяснить, что делать с сервером. В большинстве случаев это будет просто для загрузки Linux/Windows с локальных жестких дисков или создания образа.

По сути, я хочу, чтобы крошечный экземпляр Linux был загрузчиком, а не специализированным (и менее гибким) пакетом загрузчика. Крошечная копия Linux может быть на USB-ключе или доставлена ​​PXE.

Loadlin раньше делал это для Windows, поэтому я мог создать эту среду в DOS... но работа в сети может быть сложной, и я теряю много инструментов.

Другие варианты - виртуализация. Вся описанная выше автоматизация является частью операционной системы хоста, и она проверяет сервер управления, чтобы выяснить, какие гости запускаются, и тому подобное. Как облачные серверы делают это. Или я мог бы поработать на стороне PXE: PXE сначала загрузит сборочную копию Linux, внесет изменения на PXE-сервер и перезагрузит его во второй раз, когда PXE загружает удаленное ядро, но с локального диска ОС.

3 ответа

Решение

Хорошо в установке с чистым linux, у вас есть kexec, который можно использовать для "перезагрузки" ядра / ОС без перезагрузки оборудования / повторной загрузки BIOS. Что хорошо работает для всего, кроме паники ядра.

Но в смешанной среде, я думаю, у Eater есть решение. По сути, вы загружаетесь в свой Linux, запускаете любые скрипты, которые вам нужны / делаете все, что требуется, и затем перезагружаетесь в выбранную вами ОС.

Имейте в виду, однако, что это приводит к чрезмерно медленному времени загрузки. Конечно, вы можете оптимизировать время загрузки Linux до такой степени, что это может занять несколько секунд, вам все равно придется иметь дело с загрузкой BIOS дважды. Все это видно пользователю, который затем может принять решение о сумасшествии.

Используя GRUB, вы можете сделать что-то вроде этого:

[root@localhost ~]# echo "savedefault --default=2 --once" | grub --batch
[root@localhost ~]# reboot

Это инструктирует GRUB обойти timeout а также default настройки из /boot/grub.conf и загрузочная запись 2 только один раз. С использованием --once флаг гарантирует, что при последующих загрузках значения по умолчанию в boot/grub.conf сопровождаются

Насколько я знаю, вы не можете загрузить второе ядро ​​изнутри работающего в данный момент ядра.

Лучше всего установить виртуальную машину через Xen и заставить ее выполнять задачи через интерфейс виртуальной сети. Если вы настроите новую виртуальную машину, вы сможете использовать SSH для подключения обратно к хосту и запускать сценарии и инструменты по своему усмотрению.

Для того, что вы делаете, это был бы мой выбор.

Другие вопросы по тегам