Замена ядра Linux извне системы

Замена ядра Linux извне системы

Есть некий образ ubuntu, который работает (с SD карты) с аппаратным контроллером. Весь образ занимает 2 гигабайта, ибо таков размер карты. Образ собран на старом ядре. Нужно заменить материнскую плату, т.к. старые уже не выпускаются, а новые соответствующие старому ядру не общаются. И самое главное, безвозвратно (из-за определенного хаоса при смене разработчиков) утерян пароль root от образа - то есть заменить ядро ​​цивилизованным образом, изнутри, увы, не получится. Вопрос: возможно ли - и как - сменить ядро, не меняя остальное, вне системы, просто переписав что-то на карту с существующим образом с моего ноутбука? Если нет, то придется пересобирать весь отлаженный и отлаженный образ, чего хотелось бы избежать.

решение1

Во-первых, я не могу не подчеркнуть, что вам следует не использовать рабочую копию, а сделать резервную копию и использовать ее на случай, если что-то пойдет не так.

Это может не сработать, но это ваш лучший шанс.

Ядро изначально зависит от файлов в /boot.

System.map-4.19.1-1-default
.vmlinuz-4.19.4-1-default.hmac
config-4.19.4-1-default
initrd-4.19.1-1-default
initrd is symlinked to above
symvers-4.19.1-1-default.gz
sysctl.conf-4.19.1-1-default
vmlinux-4.19.1-1-default.gz
vmlinuz symlink to below
vmlinuz-4.19.4-1-default

Вам необходимо иметь все эти файлы из новой версии, очевидно, что большинство имен файлов содержат номер версии и будут отличаться в зависимости от используемой версии ядра.

Внутри /lib/modules/ находится ряд папок, по одной для каждой версии ядра. Например:

4.19.4-1-default

Все модули в этой папке необходимо будет скопировать.

Наконец, ваши файлы grub или grub2 необходимо будет изменить, чтобы они указывали на эти новые файлы.

  1. Сделайте резервную копию вашей SD-карты и используйте резервную копию.
  2. Если ваша старая материнская плата не поддерживает UEFI, отключите ее на новой материнской плате, иначе возникнут проблемы.
  3. Купите другую SD-карту/жесткий диск
  4. Установите более новую версию дистрибутива, который вы использовали.
  5. Скопируйте /boot и /lib/modules/ в соответствующие места на резервной копии вашей ОС. Если присутствует /usr/lib/bootloader, его также следует скопировать.
  6. Загрузитесь и посмотрите, что произойдет.

Вероятно, будут и другие проблемы совместимости. Самая большая опасность — это перемещение далеко вперед и переход с initd на systemd или другие серьезные изменения.

Я бы посоветовал выяснить, какую версию дистрибутива вы использовали, и перейти только на 1 версию выше для начала. Если установка не удалась, вы можете перейти на одну версию за раз.

Если у вас есть загружаемая система, то я предлагаю использовать apt-get или что-то подобное, чтобы выполнить полное обновление дистрибутива надлежащим образом.

Связанный контент