Непостоянный Linux с жесткого диска

366
Eric Johnson

Я разрабатываю встраиваемый продукт, который будет работать под управлением Linux на оборудовании, аналогичном Raspberry Pi, но с внутренней памятью. Мне бы хотелось, чтобы электропитание могло быть отключено от машины и иметь очень низкий риск повреждения. Я думал, что живая версия linux не будет записывать на HDD, поэтому она никогда не будет в середине записи.

Во всех случаях использования, которые я видел, это обычно делается на USB-накопителе. Я хочу установить это на внутреннее хранилище, чтобы оно могло загружаться с него.

Также в идеальном мире было бы легко обновить изображение напрямую, например, создать файл, а затем «обновить» изображение на диске, чтобы включить этот файл.

Версия Linux поддерживает что-то подобное? Кроме того, как будет работать установка, чтобы установить непостоянную установку на внутренний диск, а не на флэш-диск?

0
Ваш ответ - ramdisk или иная файловая система, предназначенная только для чтения - если вам нужна конфигурация, сохраните ее в отдельном разделе для чтения / записи. Attie 5 лет назад 0
Похоже, что у проекта есть несколько вопросов без ответа - например: каково ваше хранилище? (raw flash / eMMC / вращающийся жесткий диск). Есть разные шаги, которые вы должны предпринять для каждого из них, чтобы помочь с надежностью. Attie 5 лет назад 0

2 ответа на вопрос

2
Austin Hemmelgarn

Во-первых, вы можете довольно легко загрузить «живую» систему, подобную этой, с жесткого диска или другого постоянного хранилища. Просто запишите образ, который вы поместите на флэш-накопитель USB в любое хранилище, и загрузитесь с него. Многие системы типа киосков делают это, как и многие тонкие клиенты.

Тем не менее, это, вероятно, не самый лучший вариант для вашего случая использования. Я бы очень посоветовал взглянуть на то, как Android и ChromeOS обрабатывают свои корневые файловые системы. Оба устройства разработаны с учетом максимальной устойчивости к повреждениям, вызванным неожиданным отключением питания, и оба также обеспечивают защиту от несанкционированного доступа по умолчанию (IOW, вы будете знать, если кто-то изменил данные, когда устройство было выключено). Подобные настройки могут быть достигнуты без особых проблем с пользовательской корневой файловой системой, созданной Buildroot. .

В качестве альтернативы этому вы могли бы рассмотреть возможность взглянуть на Alpine Linux . Он предназначен для работы с носителя только для чтения, хотя я не уверен, насколько хорошо он поддерживает вещи, отличные от 64-битных систем x86.

2
sawdust

Я занимаюсь разработкой встроенного продукта ...

Устройства, работающие на встроенном Linux, обычно имеют собственное ядро ​​и пользовательскую корневую файловую систему. Как правило, не стоит пытаться адаптировать существующий дистрибутив Linux к пользовательскому оборудованию и использовать настольную файловую систему общего назначения для выделенного встроенного приложения.
Инструментами для создания собственного ядра Linux и корневых файловых систем являются Buildroot и Yocto.

Версия Linux поддерживает что-то подобное?

«Живая версия Linux» это просто ядро Linux, которая загружается с виртуальным диском или скорее RAMFS для корневой файловой системы. Я видел (а также создавал) множество встроенных систем Linux, которые используют ramfs или ramdisk для своих rootfs.
То, что вы предлагаете, не является ни уникальным, ни новым; это хорошо используемая концепция, которая имеет много вариантов реализации.

Загрузочный носитель зависит от вас и от того, что поддерживает оборудование.
Если вы хотите загрузить Linux с initramfs с жесткого диска, то единственная проблема может заключаться в том, чтобы вы научились его создавать.
В зависимости от того, какое оборудование вы используете, не может быть нового кода для разработки (кроме вашего приложения), и сборка такого ядра и rootfs будет связана с загрузкой, настройкой и сборкой существующего исходного кода.

Обновление системы на месте - сложная тема, и существует множество решений. Различные пакетные системы, используемые дистрибутивами, обычно слишком тяжелы / сложны для встроенных систем, особенно тех, которые основаны на флэш-памяти NAND.

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