
Есть некий образ 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 необходимо будет изменить, чтобы они указывали на эти новые файлы.
- Сделайте резервную копию вашей SD-карты и используйте резервную копию.
- Если ваша старая материнская плата не поддерживает UEFI, отключите ее на новой материнской плате, иначе возникнут проблемы.
- Купите другую SD-карту/жесткий диск
- Установите более новую версию дистрибутива, который вы использовали.
- Скопируйте /boot и /lib/modules/ в соответствующие места на резервной копии вашей ОС. Если присутствует /usr/lib/bootloader, его также следует скопировать.
- Загрузитесь и посмотрите, что произойдет.
Вероятно, будут и другие проблемы совместимости. Самая большая опасность — это перемещение далеко вперед и переход с initd на systemd или другие серьезные изменения.
Я бы посоветовал выяснить, какую версию дистрибутива вы использовали, и перейти только на 1 версию выше для начала. Если установка не удалась, вы можете перейти на одну версию за раз.
Если у вас есть загружаемая система, то я предлагаю использовать apt-get или что-то подобное, чтобы выполнить полное обновление дистрибутива надлежащим образом.