Мне нужна файловая система, когда я не хочу хранить какие-либо данные

Я задал вопрос здесь. Обязательно ли иметь файловую систему

Один из комментариев:

как система без файловой системы будет работать на Linux, поскольку даже принтер или карта ethernet рассматривается как файл? Какова ваша цель? … Kiwy 24 февраля в 14:18

Теперь вот сообщение журнала при загрузке Linux без файловой системы (которая висит в конце):

[Tue Apr 08 20:07:18.298 2014] [Tue Apr 08 20:07:18.298 2014] [Tue Apr 08 20:07:18.298 2014] U-Boot 2013.07 (Apr 08 2014 - 14:27:03) [Tue Apr 08 20:07:18.298 2014] [Tue Apr 08 20:07:18.298 2014] Memory: ECC disabled [Tue Apr 08 20:07:18.298 2014] DRAM: 1 GiB [Tue Apr 08 20:07:18.308 2014] SF: Detected N25Q128A with page size 64 KiB, total 16 MiB [Tue Apr 08 20:07:18.341 2014] *** Warning - bad CRC, using default environment [Tue Apr 08 20:07:18.341 2014] [Tue Apr 08 20:07:18.341 2014] In: serial [Tue Apr 08 20:07:18.341 2014] Out: serial [Tue Apr 08 20:07:18.341 2014] Err: serial [Tue Apr 08 20:07:18.341 2014] U-BOOT for Xilinx-ZC702-14.7 [Tue Apr 08 20:07:18.341 2014] [Tue Apr 08 20:07:18.341 2014] [Tue Apr 08 20:07:18.341 2014] SF: Detected N25Q128A with page size 64 KiB, total 16 MiB [Tue Apr 08 20:07:18.697 2014] Linux [Tue Apr 08 20:07:18.697 2014] Load Address: 0x00008000 [Tue Apr 08 20:07:18.697 2014] Entry Point: 0x00008000 [Tue Apr 08 20:07:18.697 2014] Verifying Hash Integrity ... OK [Tue Apr 08 20:07:18.697 2014] ## Loading fdt from FIT Image at 01000000 ... [Tue Apr 08 20:07:18.697 2014] Using 'conf@1' configuration [Tue Apr 08 20:07:18.697 2014] Trying 'fdt@1' fdt subimage [Tue Apr 08 20:07:18.697 2014] Description: Flattened Device Tree blob [Tue Apr 08 20:07:18.697 2014] Type: Flat Device Tree [Tue Apr 08 20:07:18.697 2014] Compression: uncompressed [Tue Apr 08 20:07:18.697 2014] Data Start: 0x0111d344 [Tue Apr 08 20:07:18.697 2014] Data Size: 11179 Bytes = 10.9 KiB [Tue Apr 08 20:07:18.697 2014] Architecture: ARM [Tue Apr 08 20:07:18.697 2014] Hash algo: crc32 [Tue Apr 08 20:07:18.697 2014] Hash value: a7a92b47 [Tue Apr 08 20:07:18.697 2014] Hash algo: sha1sha1+ OK [Tue Apr 08 20:07:18.702 2014] Booting using the fdt blob at 0x111d344 [Tue Apr 08 20:07:18.702 2014] UncomprOK [Tue Apr 08 20:07:18.702 2014] Loading Device Tree to 07ffa000, end 07fffbaa ... OK [Tue Apr 08 20:07:18.702 2014] [Tue Apr 08 20:07:18.702 2014] Starting kernel ... [Tue Apr 08 20:07:18.702 2014] [Tue Apr 08 20:07:19.453 2014] u @c0a7b000 s5568 r8192 d14912 u32768 [Tue Apr 08 20:07:19.453 2014] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 260096 [Tue Apr 08 20:07:19.453 2014] Kernel command line: root=mtd:jffs2 rw rootfstype=jffs2 console=ttyPS0,115200 [Tue Apr 08 20:07:19.453 2014] PID hash table entries: 4096 (order: 2, 16384 bytes) [Tue Apr 08 20:07:19.453 2014] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [Tue Apr 08 20:07:19.453 2014] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) [Tue Apr 08 20:07:19.453 2014] __ex_table already sorted, skipping sort [Tue Apr 08 20:07:19.453 2014] Memory: 1024MB = 1024MB total [Tue Apr 08 20:07:19.453 2014] Memory: 1036960k/1036960k available, 11616k reserved, 270339 16 [Tue Apr 08 20:07:19.625 2014] I reach build/linux/kernel/xlnx-3.8/source/net/socket.c: [Tue Apr 08 20:07:19.625 2014] DMA: preallocated 256 KiB pool for atomic coherent allocations [Tue Apr 08 20:07:19.625 2014] xgpiops e000a000.ps7-gpio: gpio at 0xe000a000 mapped to 0xf004e000 [Tue Apr 08 20:07:19.625 2014] GPIO IRQ not connected [Tue Apr 08 20:07:19.625 2014] XGpio: /amba@0/gpio@41220000: registered, base is 255 [Tue Apr 08 20:07:19.625 2014] GPIO IRQ not connected [Tue Apr 08 20:07:19.625 2014] XGpio: /amba@0/gpio@41200000: registered, base is 251 [Tue Apr 08 20:07:19.625 2014] usbcore: registered new interface driver usbfs [Tue Apr 08 20:07:19.625 2014] usbcore: registered new interface driver hub [Tue Apr 08 20:07:19.625 2014] usbcore: registered new device driver usb [Tue Apr 08 20:07:19.625 2014] Switching to clocksoutyPS0 at MMIO 0xe0001000 (irq = 82) is a xuartps [Tue Apr 08 20:07:19.629 2014] console [ttyPSxusbps-ehci xusbps-ehci.0: irq 53, io mem 0x00000000 [Tue Apr 08 20:07:19.670 2014] xusbps-ehci xusbps-ehci.0: USB 2.0 started, EHCI 1.00 [Tue Apr 08 20:07:19.675 2014] hub 1-0:1.0: USB hub found [Tue Apr 08 20:07:19.675 2014] hub 1-0:1.0: 1 port detected [Tue Apr 08 20:07:19.681 2014] xi2cps e0004000.ps7-i2c: 400 kHz mmio e0004000 irq 57 [Tue Apr 08 20:07:19.686 2014] xadcps f8007100.ps7-xadc: enabled: yes reference: external [Tue Apr 08 20:07:19.709 2014] xwdtps f8005000.ps7-wdt: Xilinx Watchdog Timer at f00ea000 with timeout 10s [Tue Apr 08 20:07:19.709 2014] sdhci: Secure Digital Host Controller Interface driver [Tue Apr 08 20:07:19.709 2014] sdhci: Copyright(c) Pierre Ossman [Tue Apr 08 20:07:19.709 2014] sdhci-pltfm: SDHCI platform and OF driver helper [Tue Apr 08 20:07:19.729 2014] usbcore: registered new interface driver usbhid [Tue Apr 08 20:07:19.729 2014] usbhid: USB HID core driver [Tue Apr 08 20:07:19.729 2014] I am at build/linux/kernel/xlnx-3.8/source/drivers/hid/usbhid/hid-core.c [Tue Apr 08 20:07:19.729 2014] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4 [Tue Apr 08 20:07:19.781 2014] MTD: MTD device with name "jffs2" not found. [Tue Apr 08 20:07:19.781 2014] List of all partitions: [Tue Apr 08 20:07:19.781 2014] No filesystem could mount root, tried: jffs2 [Tue Apr 08 20:07:19.781 2014] Kernel panic - not syncing: VFS: Unable to mount root fs on mtd:jffs2 [Tue Apr 08 20:07:19.781 2014] CPU1: stopping [Tue Apr 08 20:07:19.781 2014] Backtrace: [Tue Apr 08 20:07:19.781 2014] Function entered at [<c0011094>] from [<c01c6408>] [Tue Apr 08 20:07:19.781 2014] r6:c0246418 r5:00000000 r4:00000001 r3:60000193 [Tue Apr 08 20:07:19.781 2014] Function entered at [<c01c63f0>] from [<c0011fbc>] [Tue Apr 08 20:07:19.781 2014] Function entered at [<c0011f78>] from [<c0012270>] [Tue Apr 08 20:07:19.781 2014] r4:c0247ef4 r3:c0011f78 [Tue Apr 08 20:07:19.781 2014] Function entered at [<c001220c>] from [<c00084e4>] [Tue Apr 08 20:07:19.781 2014] r5:ef07bf68 r4:f8f00100 [Tue Apr 08 20:07:19.824 2014] Function entered at [<c0008484>] from [<c000da00>] [Tue Apr 08 20:07:19.824 2014] Exception stack(0xef07bf68 to 0xef07bfb0) [Tue Apr 08 20:07:19.824 2014] bf60: c0a838d0 00000000 00000003 00000000 ef07a000 c01cd528 [Tue Apr 08 20:07:19.824 2014] bf80: ef07a000 c025c418 0000406a 413fc090 00000000 ef07bfbc ef07bfc0 ef07bfb0 [Tue Apr 08 20:07:19.824 2014] bfa0: c000e94c c000e950 60000113 ffffffff [Tue Apr 08 20:07:19.824 2014] r6:ffffffff r5:60000113 r4:c000e950 r3:c000e94c [Tue Apr 08 20:07:19.824 2014] Function entered at [<c000e924>] from [<c000eacc>] [Tue Apr 08 20:07:19.824 2014] Function entered at [<c000ea40>] from [<c01c4208>] [Tue Apr 08 20:07:19.824 2014] r5:00000001 r4:c024cf68 [Tue Apr 08 20:07:19.824 2014] Function entered at [<c01c4118>] from [<001c37c8>] [Tue Apr 08 20:07:19.844 2014] r6:10c03c7d r5:00000015 r4:2f06406a r3:c01c37b0 [Tue Apr 08 20:07:19.844 2014] MTD: MTD device with name "jffs2" not found. [Tue Apr 08 20:07:19.844 2014] List of all partitions: [Tue Apr 08 20:07:19.844 2014] No filesystem could mount root, tried: jffs2 [Tue Apr 08 20:07:19.844 2014] Kernel panic - not syncing: VFS: Unable to mount root fs on mtd: 

Я загружаюсь со вспышки.

Теперь из журнала очень ясно, что многие из драйверов уже загружены, даже если загрузка файловой системы не удалась (потому что я намеренно не помещал файловую систему rootfs.jffs2 во flash).

Теперь, ссылаясь на комментарий выше, если все в файле в Linux, как драйверы успешно загружены? Вы можете видеть, что USB, GPIO, SD все идет раньше, чем запрашивает файловую систему (и не удалось).

Так технически правильно сказать, что

linux ДОЛЖЕН иметь файловую систему

Некоторый фон. Я пытаюсь добиться того, чтобы linux работал в системе, в которой будет выполняться управляющее приложение. Приложение просто захватывает некоторые данные и отправляет их некоторым подчиненным. Существует не вопрос хранения данных AT ALL. Поэтому хотелось бы полностью избавиться от файловой системы. Как я понимаю, файловая система требуется для хранения данных, и поскольку я не буду хранить какие-либо данные, почему бы использовать файловую систему и увеличить использование ресурсов?

Обновить

Хотя я упомянул об этом в фоновом режиме , но, в частности, отправка данных будет происходить с использованием USB или Ethernet, поэтому естественно иметь соответствующие драйверы.

  • Где находится apache / tmp?
  • Есть ли более сжатая альтернатива трубопроводу для wc для подсчета файлов в каталоге
  • Может ли жесткая связь нарушить структуру файловой системы?
  • Точка монтирования для разных разделов и разных файловых систем
  • Как мой раздел (ext4) знает свой размер используемого / свободного пространства?
  • Как изменить размер разделов на полный образ жесткого диска?
  • SSD: обрезка на разных файловых системах
  • Выбор файловой системы для общего диска (а не файловой системы кластера, такой как GFS)
  • 8 Solutions collect form web for “Мне нужна файловая система, когда я не хочу хранить какие-либо данные”

    Если вам нужна Linux, вам нужна файловая система.

    (Я имею в виду Linux в операционной системе, а не в Linux – ядро ​​ОС. Ниже я расскажу об этой более узкой интерпретации.)

    Ваше наблюдение за загрузкой драйверов устройств при загрузке до существования файловой системы – это красная селедка. Вы можете загрузить драйвер без файловой системы. То, что вы не можете сделать, это fd = open("/dev/foo", O_RDONLY) без файловой системы.

    Это не означает, что вам нужен постоянный перезаписываемый носитель данных, отформатированный с использованием традиционной файловой системы, например, с вашим примером JFFS2. Все, что вам нужно для поддержки традиционного дерева /dev – это структура данных, которая ведет себя как файловая система на диске. Современные Linux используют udev в файловой системе в памяти, чтобы обеспечить доступ к узлам /dev без необходимости постоянного хранения для узлов /dev , например.

    Вам также нужна файловая система для использования нескольких других возможностей Linux-the-OS:

    • Нужны общие библиотеки или скриптовые языковые модули? Вам нужна файловая система для хранения /lib/libfoo.* , /usr/lib/perl5/* , /lib/ld.so , /etc/ld.so.cache и т. Д.

    • Нужны загружаемые модули ядра? Вам нужна файловая система для /lib/modules/$(uname -r)/*

    • Нужно больше одного исполняемого файла, например, оболочки или текстового редактора? Им нужна файловая система для жизни.

    • Нужно ли ядро ​​для обеспечения контроля доступа? Большинство из них выполняется через биты разрешений , ACL и метки SELinux в файле или каталоге.

    Я мог бы придумать больше примеров, но это будет сделано.

    Можно загружать все ресурсы, необходимые вашей системе из постоянного хранилища в оперативную память, так что после загрузки система вообще не использует постоянное хранилище. Распространяются дистрибутивы Linux . Также часто для встроенных ОС Linux можно создавать всю свою файловую систему в ОЗУ при их загрузке, так что после их загрузки они больше не будут ссылаться на постоянное хранилище, такое как устройство флэш-памяти .

    Если вы создаете узкоспециализированную одноцелевую встроенную систему, вам, вероятно, не нужна Linux-the-OS. Вам может понадобиться только меньшая, менее функциональная встроенная ОС , или вы можете писать прямо на металл .

    Некоторые из других ответов здесь говорят о том, чтобы лишить Linux до такой степени, что все, что вам осталось, – это Linux-ядро, либо сопряженное с одним исполняемым файлом – ваша программа, работающая под ядром, либо работающая как монолитная программа с ваш код статически включен в него. В любом случае, вы можете полностью отказаться от необходимости в файловой системе, но в конечном итоге вы больше не Linux-the-OS.

    Я написал ответ на связанный с ним вопрос, в котором подробно описывается, как концепция файла является основной для того, как работает Unix, и поскольку у вас не может быть файла без какой-либо файловой системы, это означает, что вам определенно нужен он.

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

    Конечно, недостатки в том, что, поскольку все, что требуется системе, должно существовать в памяти, вы можете обнаружить, что вам просто недостаточно для того, что вы хотите сделать. Также вам будет сложно записывать любые данные, которые вы хотите сохранить после перезагрузки.

    На самом деле, технически говоря, вам не нужна файловая система. По умолчанию используется файловая система для загрузки. (например, /sbin/init запускается оттуда). Однако, если вам нравится, вы можете посмотреть, что происходит в do_basic_setup() в linux-source/init/main.c К моменту вызова этой процедуры ядро ​​и CPU0 готовы к реальной работе. Вы можете уничтожить всю работу, необходимую для загрузки initramfs – это тоже файловая система! – и что-нибудь потом и замените его собственным кодом для работы без файловых систем.

    Затем вы могли бы использовать потоки ядра для создания любых процессов, которые вы хотите. Тем не менее, все это было бы супер уродливо.

    Файловая система предоставляет больше, чем просто место для хранения файлов. Здесь находятся исполняемые файлы (программы), библиотеки и файлы конфигурации для вашей системы. Как минимум, для ядра linux требуется файловая система, позволяющая ему находить / выполнять процесс « init », который отвечает за обеспечение запуска других процессов в соответствии с вашей системой.

    Что касается всего, это файл, который означает, что Linux / Unix-системы обеспечивают доступ к устройствам, ресурсам, файлам через абстракцию файла. Это означает, что существует (открытый, закрытый, читаемый, написанный, …) интерфейс (почти!) Все.

    Ваша путаница с драйверами устройств возникает из-за того, что вы путаете источник инструкций драйвера устройства с фактическими исполняемыми машинными инструкциями, которые реализуют драйвер устройства. В примере, который вы указали, драйверы устройств встроены непосредственно в ядро ​​и могут запускаться после загрузки образа ядра в память. Если драйверы устройств построены как модули, они содержатся в файлах в файловой системе, и исполняемые машинные инструкции загружаются из файла в память ядра, где они выполняются. Как только драйвер устройства загружен и запущен, он обычно делает контролируемые им устройства доступными в / dev через файловую систему.

    Когда ядро ​​запускает процесс init, и все его дети должны получить доступ к файлу, чтобы взаимодействовать с другими процессами, обращаться к устройствам, запрашивать виртуальную память, получать источники случайных чисел, отправлять сообщения друг другу. Это для основной части, выполняемой через доступ к файловой системе. Отправка / получение через сеть является одним из исключений, требующих доступа к файловой системе, но в любом случае вы, скорее всего, захотите получить доступ к файловой системе.

    Действительно, учитывая ваш прецедент, вы должны смотреть на использование небольшого настраиваемого дистрибутива, такого как OpenWrt . Благодаря этому вы можете создать систему с минимальным набором установленных программ и которая в основном работает из ОЗУ без необходимости писать что-либо в стабильное хранилище. После этого вы всегда можете удалить ненужные компоненты, но не недооценивайте помощь, в которой есть дистрибутив с инструментами отладки и активной пользовательской базой.

    Файловые системы – это средство для операционных систем для организации сохраненных данных. В частности, они позволяют ОС эффективно хранить и извлекать данные. Когда вы говорите, что вы загрузились с флеш-накопителя, это означает, что этот флеш-накопитель, безусловно, имеет файловую систему. Тот факт, что ядро ​​загрузил драйвер, означает, что он должен был найти его где-нибудь. Эта «найти где-то» достигается файловой системой. Но даже если ядро ​​монолитно и все скомпилировано, то, по крайней мере, загрузчик должен иметь способ найти ядро.

    Теоретически, вы можете сделать это без сложной файловой системы, просто поместите все в какое-то фиксированное место и жесткий код этого местоположения, но какая цель это послужит? И мы не говорим о ваших файлах данных, таких как электронные письма и все остальное. Без файловой системы нет звука для хранения (и последующего поиска). Даже если вы не хотите хранить какой-либо файл, ОС – это больше, чем просто ядро, оно включает в себя различные сервисные программы и пользовательские программы, которые хранятся в файлах.

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

    Если вы хотите, чтобы ОС Linux функционировала, она должна иметь файловую систему.

    Но нет требования, чтобы файловая система находилась на жестком диске (или SSD и т. Д.). На самом деле даже не требуется, чтобы Linux был на устройстве вообще.

    Вы можете использовать протокол BOOTP для загрузки ОС по сети. Для этого вам нужно довольно много оперативной памяти, хотя для этого нужно быть эффективным. Загрузочный загрузчик является стандартным ПЗУ на сетевой карте. Все остальное передается через сеть и хранится в виртуальной файловой системе, которая создается в ОЗУ.

    Однако для выделенного устройства было бы лучше установить флеш-память с эквивалентом загрузочного диска USB Live и запустить программу оттуда. Похоже, вы уже пытаетесь сделать что-то подобное. При работе с флэш-диска или ПЗУ виртуальная файловая система также создается в ОЗУ, но при использовании метода BOOTP вам требуется меньше оперативной памяти.

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

    Вы можете добавить свои собственные программы в образ ОС, используя различные инструменты для монтирования ISO в качестве файловой системы чтения / записи. Вы можете использовать rc.local для запуска программы, но остерегайтесь того, что rc.local запускается несколько раз во время запуска. Вы также можете создать сценарий /etc/init.d/, но это сложнее.

    В резюме: вашей программе не нужна файловая система, но ОС работает, однако реального / физического диска не требуется.

    Раньше компьютеры (и некоторые современные встроенные системы) не имеют файловой системы. My Apple] [(и в Commodore PET) школы была ОС в ПЗУ и была готова бросить примерно через 2 секунды после холодного ботинка. Хотите загрузить программное обеспечение? Либо введите источник вручную, либо введите LOAD, нажмите enter, а затем PLAY на ленточном аппарате. Затем мы получили диск – и было много радости.

    Тем не менее, в самом ядре Linux предполагается наличие файловой системы, и на этом все строится. Если вы хотите реализовать настоящую систему без файловой системы, это, безусловно, возможно, но ваше оборудование и ОС должны быть построены вокруг концепции.

    Метод Apple заключался в том, чтобы подключить ОС в последние 16 тыс. Памяти, процессор (MC6502) был жестко подключен к месту, которое постоянно хранится в последних двух байтах памяти.

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

    «Никакая файловая система не может монтировать root, try: jffs2» «MTD: устройство MTD с именем« jffs2 »не найдено».

    Я предполагаю, что часть процесса загрузки либо не находит / место для монтирования, либо не имеет возможности смонтировать эту файловую систему.

    Interesting Posts

    Получение и установка размера экрана для Xorg

    Запускать службу на основе TCP по требованию и останавливать ее после закрытия соединения

    Насколько ограниченный дистрибутив Linux на Nokia n900?

    Постоянная консоль на рабочем столе как «виджет»

    Как зеркалировать еще один диск на существующей файловой системе

    Отключить баннер ssh для определенных пользователей или ips

    Как / почему это выражение работает?

    IF для возврата true, если слово содержит конкретное письмо

    Что такое значение первой цифры в 0022, когда я запускаю umask на linux?

    Синтаксическая ошибка: ожидаемый операнд (токен ошибки равен «= 1 +»)

    Докер говорит, что на устройстве нет места, но у системы много места?

    Как мне настроить звук на устройство Bluetooth?

    Загрузка вложенных файлов PDF с помощью wget

    Debian dhcpd «Нет декларации подсети для eth0»

    Как я могу прекратить использование групп setxkbmap из ключей модификатора привязки?

    Linux и Unix - лучшая ОС в мире.