Загрузите систему с SD-карты в память, а затем загрузитесь из памяти.

alias please="sudo $(history -p \!\-2)"
0
20.01.2016, 20:41
2 ответа

Загрузчик вообще не участвует, эта задача обычно выполняется ядром Linux после того, как оно загружается в память с SD карты загрузчиком, который находится на SD карте.

Современный способ "загрузки" из памяти требует написания собственного скрипта initramfs, который будет определять носитель, с которого загружается Linux (поскольку загрузчики не предоставляют такой полезной информации, хотя некоторые из них, конечно, могут определять носитель, с которого они загружаются), "откроет" его файловую систему в режиме readonly, выделит tmpfs место для будущей корневой файловой системы, а затем скопирует в нее все с носителя, после чего просто переключится в switchroot и выполнит /sbin/init оттуда.

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

Если вы не знаете, как работает initramfs, вам следует сначала ознакомиться с хорошей информацией, прочтите Documentation/filesystems/ramfs-rootfs-initramfs.txt, а также Linux From Scratch - About initramfs, и погуглите "linux initramfs".

0
29.04.2021, 00:18

Вы можете посмотреть на живой дистрибутив, такой как GRML, который поддерживает копирование всех файлов squashfs в ОЗУ при загрузке (с использованием аргумента grml2ram ) и который можно легко настроить (см. grml-live ); или вы можете выложить свою систему как initramfs и загрузить загрузчик вместе с ядром.

Менее элегантно, вы могли бы придерживаться стандартного initramfs и добавить к нему сценарий, который загружает содержимое вашей SD-карты в память, а затем использует его в качестве rootfs.

0
29.04.2021, 00:18

Теги

Похожие вопросы