データを保存したくないときにファイルシステムが必要ですか


8

ここで質問しましたファイルシステムが必須ですか

コメントの1つは次のとおりです。

プリンタやイーサネットカードでさえファイルと見なされるので、ファイルシステムのないシステムはどのようにLinuxで動作しますか?ここであなたの目標は何ですか?... キウイ2月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をフラッシュに入れなかったためです)。

上記のコメントを参照して、すべてがLinuxのファイルである場合、ドライバーは正常にロードされるのはなぜですか?USB、GPIO、SDのすべてがファイルシステムを要求する前に(そして失敗して)来ていることがわかります。

それで、技術的に正しいと言えますか

Linuxにはファイルシステムが必要です

私が達成しようとしているいくつかの背景は、制御アプリケーションが実行されるシステムでLinuxを実行することです。アプリケーションはデータをキャプチャしてスレーブに送信するだけです。まったくデータを保存する問題はありません。だから完全にファイルシステムを取り除きたいと思います。私の理解によると、データを格納するためにファイルシステムが必要であり、データを格納しないので、なぜファイルシステムがあり、リソース使用量が増えるのですか?

更新

これについてはバックグラウンドで説明しましたが、具体的には、データの送信はUSBまたはイーサネットを使用して行われるため、対応するドライバーがあるのは当然です。


1
引用して
よかった

制御アプリケーションをどこに保存しますか?
el.pescado 2014

@ el.pescadoは、OS、基本的にはフラッシュメモリを保管する場所と同じ場所にあります。
user2799508 2014

@ user2799508 in initrd
el.pescado 2014

回答:


15

Linuxが必要な場合は、ファイルシステムが必要です。

(ここでは、LinuxがOSカーネルではなく、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ラベルを介し行われます。

おそらくもっと多くの例を考え出すことができますが、それで十分です。

システムが必要とするすべてのリソースを永続ストレージからRAMにロードすることができるので、システムが起動すると、永続ストレージはまったく使用されません。ライブLinuxディストリビューションがこれを行います。組み込みLinux OSは、起動時にファイルシステム全体をRAMに構築することも一般的です。そのため、起動すると、フラッシュストレージデバイスなどの永続ストレージを参照し続けることはありません。

対象範囲が狭い単一目的の単一タスク組み込みシステムを構築している場合は、おそらくLinux-the-OSは必要ありません。小さくて機能の少ない組み込みOSが必要な場合や、直接金属に書き込むことができる場合があります。

ここでの他の回答のいくつかは、Linuxをそのまま残して、単一の実行可能ファイル(プログラム、カーネルの下で実行される)と組み合わせるか、またはモノリシックプログラムとして静的にコードが組み込まれています。どちらの方法でも、ファイルシステムの必要性を完全になくすことができますが、結局Linux-the-OSではなくなります。


4
共有ライブラリが必要ですか?いや—静的バイナリを使用できます。ロード可能なモジュールが必要ですか?いや、モノリシックカーネルをコンパイルできます。複数の実行可能ファイルが必要ですか?いや、すべてをに入れるinit。ああ、でもどこinitにロードされますか?ビンゴ!
Gilles「SO-邪悪なこと

1
@ギレス:その道を十分に下ると、アフメドの答えとその結果としての問題が生じます。
ウォーレンヤング14

1
いいえ、initカーネルをロードすることと、ロード以外のことを行うようにカーネルを変更することには大きな違いがありますinit
Gilles「SO-悪をやめなさい」

知っている。Achmedの答えに向けての進行の最後のステップについて説明しています。私はアイデアを行き過ぎた場合の潜在的な結果について警告しています。
Warren Young 14

まったく遠すぎる可能性があるという考えには同意しません。オープンソースのカーネルの要点は、そのソースが変更可能であることです。オープンソースソフトウェアを別の目的に合わせることが、オープンソースソフトウェアの目的です。あなたがそれの悪い仕事をするか、あなたの目的があまりにも単数であるならば、あなたの変化はあなたと共に死にます、しかしあなたの変化が価値があるならば、他の人はあなたの努力から利益を得るでしょう、そして彼らが彼ら自身に貢献するとき彼らの彼らからあなたの利益を得るでしょう。
mikeserv 2014

7

ファイルの概念がUnixの動作にどのようにコアであるかを詳しく説明している関連する質問へ回答を書きました。ある種のファイルシステムがないとファイルを作成できないため、間違いなく1つ必要です。

ただし、永続ストレージメディアに存在するファイルシステムがなくても、問題なく存続できます。あなたのinitramfsイメージは、カーネル自身にコンパイル(またはそれ以外のブートローダがアクセスできるどこかに置く)することができます。技術的には、ストレージメディアに書き込まれるイメージはアーカイブであり、ファイルシステムではありません。それがロードされた後にのみ、そのようになります。この中に必要なすべてのバイナリファイルを置く場合は、それらをストレージメディアのファイルシステムに置く必要はありません。このようにして、システムを実行するために必要なすべてのファイルシステムが純粋にメモリ内に存在することを確認できます。

もちろん欠点は、システムに必要なすべてのものがメモリ内に存在する必要があるため、やりたいことを十分に行えない場合があることです。また、再起動後も保持したいデータを書き込むのに苦労します。


およそ1つの非常に顕著なポイントinitramfsの画像は、あなたがしていることであるではないだけで1だけに限定されるcpio最初の上に別の画像とあなたがしている良い行くことに。または、最初にコンパイルして、ブート後に残りを追加します。可能性は無限です。また、cpioツールはカーネルに含まているため、変更をこの方法で保存することは考えられないことではありませcpioんが、他のファイルシステムがない場合は、保存されたイメージをrawデバイスに書き込むことに制限されます。
mikeserv 2014

また、技術的にcpio画像がありませんになるファイルシステムが、アンパックであるファイルシステム- initramfsまたはrootfsあなたはそれを好むよう。
mikeserv 2014

5

実際には、技術的に言えば、ファイルシステムは必要ありません。デフォルトの動作では、起動するファイルシステムがあります。(例えば/sbin/init、そこから起動されます)。しかし、あなたが好きな場合は、中に何が起こるかを見ることができますdo_basic_setup()の中でlinux-source/init/main.c。そのルーチンが呼び出されるときまでに、カーネルとCPU0は実際の作業の準備ができています。initramfsを起動するために必要なすべての作業を細断処理できます—これもファイルシステムです!—ファイルシステムなしで機能するように、後で何かを独自のコードに置き換えます。

その後、カーネルスレッドを使用して、必要なプロセスを生成できます。しかし、これはすべて非常に醜いでしょう。


1
これはすべて真実ですが、システムにGPLを適用する必要はほとんどありませんか?ファイルシステムがないため、動的にロード可能なカーネルモジュールがないため、カーネルモジュールのライセンスホールを使用できません。
ウォーレンヤング14

簡潔、技術的に正しく、これまでの質問に正しく答えるための唯一の答えである+1。Linuxは単なるコードベースであり、多くの基本コンポーネントの必要性を排除するなど、好きなように使用できます。
Vality 2014

@Ahmed Masud私はまだ1つのファイルシステム-initramfsが必要なのですか?(ただし、アプリケーションにはイーサネットとUSBが必要です)
user2799508 '10 / 04/14

@ mikeserv、2.6より前のカーネルは必要ありません。initramfs使用しますinitrd
Graeme 2014

@Graeme私も知っており、このサイトの他の場所で自分自身についても言及しているので、これも真実です。私はそれを間違っているとしても、それよりも今はもっと考える傾向があります。しかし、私の弁護において-私は一人ではありません。OpenWRTでさえ、2.6年以上使用されてきましたが、元々Broadcomのドライバーから目的と名前が与えられたにもかかわらず、正式に2.6互換のアップデートは見られませんでした。
mikeserv 2014

1

ファイルシステムは、ファイルを格納するための単なる場所ではありません。これは、システムの実行可能ファイル(プログラム)、ライブラリ、および構成ファイルが存在する場所です。少なくともLinuxカーネルには、他のプロセスがシステムに応じて適切に開始されるようにする「init」プロセスを見つけて実行するためのファイルシステムが必要です。

すべてがファイルであることのLinux / Unixシステムは、ファイルの抽象化を介したデバイス、リソース、ファイルへのアクセスを提供することをフレーズ手段。つまり、すべてに(ほぼ!)一貫性のある(オープン、クローズ、読み取り、書き込み、...)インターフェイスがあります。

デバイスドライバーの混乱は、デバイスドライバーを実装する実際の実行可能なマシン命令とデバイスドライバーの命令のソースを混同しているために発生します。提供した例では、デバイスドライバーはカーネルに直接組み込まれており、カーネルイメージがメモリに読み込まれると実行できます。デバイスドライバーがモジュールとしてビルドされている場合、それらはファイルシステム内のファイルに含まれており、実行可能なマシン命令はファイルからカーネルメモリに読み込まれ、そこで実行されます。デバイスドライバーが読み込まれて実行されると、通常、ドライバーが制御するデバイスがファイルシステムを介して/ devで利用できるようになります。

カーネルがinitプロセスを実行し、そのすべての子が他のプロセスと対話するためにファイルにアクセスし、デバイスにアクセスし、仮想メモリを要求し、乱数のソースを取得し、互いにメッセージを送信する必要があります。これは、ファイルシステムアクセスを介して行われるメインパート用です。ネットワークを介した送受信は、ファイルシステムへのアクセスを要求する例外の1つですが、とにかく非常に迅速にファイルシステムにアクセスする必要が出てくるでしょう。

本当にあなたのユースケースを考えると、あなたはOpenWrtのような設定可能な小さなディストリビューションを使うことを検討しているはずです。これにより、最小限のソフトウェアセットがインストールされ、基本的にRAMから実行され、安定したストレージに何も書き込む必要がないシステムを構築できます。いったん実行したら、不要なコンポーネントをいつでも取り除くことができますが、デバッグツールとアクティブなユーザーベースを備えたディストリビューションがあることの助けを過小評価しないでください。


0

ファイルシステムは、オペレーティングシステムが永続的に保存されたデータを整理するための手段です。具体的には、OSがデータを効率的に保存および取得できるようにします。あなたがフラッシュドライブから起動したと言うとき、それはこのフラッシュドライブが確かにファイルシステムを持っていることを意味します。カーネルがドライバーをロードしたという事実は、どこかにそれを見つける方法があったに違いないことを意味します。この「どこかで見つける」は、ファイルシステムによって実現されます。しかし、カーネルがモノリシックですべてがコンパイルされている場合でも、少なくともブートローダーはカーネルを見つける方法を備えている必要があります。

理論的には、洗練されたファイルシステムがなくてもそれを行うことができ、すべてを特定の場所に配置して、その場所にハードコードするだけですが、どのような目的に役立ちますか?そして、私たちは話していない、あなたはまだ、電子メールや他のすべてのようなデータファイル。ファイルシステムがなければ、それらを保存する(そして後で見つける)健全な方法はありません。ファイルを保存したくない場合でも、OSは単なるカーネルではなく、ファイルに保存されるさまざまなサービスとユーザーランドプログラムが含まれています。

長い話を簡単に言うと、カーネルがどこにも見つからない場合(例のように)、パニック(ログが示すように)になるため、どこかにファイルシステムが必要です。つまり、何もしないことを意味します。ただし、Linuxドライブを(ファイルシステムを備えた)フラッシュドライブから実行することがニーズに合っている場合は、ディスクまたは他の場所にファイルシステムは必要ありません。


1
Unixy OSは、永続的なデータ以上の目的でファイルシステムを使用します。impersistent木は(devfsのは、あります/proc/sys...)、それはほとんどのアクセス制御などのバックボーンである
ウォーレン・ヤング

/ procと/ sysは単なるヘルパーであり、システムは-原則として-それらがなくても正常に機能します。/ sysはLinux固有であり、/ procはFreeBSDと同様にsysctlのようなものに置き換えることができます。
カウンター

0

Linux OSを機能させるには、ファイルシステムが必要です。

ただし、ファイルシステムがハードディスク(またはSSDなど)上にある必要はありません。実際、Linuxがデバイス上にあるという要件さえまったくありません。

BOOTPプロトコルを使用して、ネットワーク経由でOSをロードできます。ただし、これを有効にするには、かなりのRAMが必要です。ブートローダーは、ネットワークカードの標準ROMです。その他はすべてネットワーク経由で転送され、RAMに作成された仮想ファイルシステムに保存されます。

ただし、専用デバイスの場合は、USBライブブートディスクと同等のフラッシュメモリをインストールし、そこからプログラムを実行することをお勧めします。あなたはすでにそのようなことをやろうとしているようです。フラッシュディスクまたはROMから実行する場合、仮想ファイルシステムもRAMに作成されますが、BOOTP方式を使用する場合は、必要なRAMが少なくなります。

Ubuntuとは異なり、Debianはddを使用してUSBフラッシュディスクに直接コピーできるハイブリッドブートイメージを使用します。特にUbuntuでは起動可能なUSBを作成するために特別なプログラムを使用する必要があり、そのプログラムはややバギー。

さまざまなツールを使用してOSイメージに独自のプログラムを追加し、ISOを読み取り/書き込みファイルシステムとしてマウントできます。rc.localを使用してプログラムを起動できますが、rc.localは起動中に複数回実行されることに注意してください。/etc/init.d/スクリプトを作成することもできますが、それはより複雑です。

要約:プログラムにはファイルシステムは必要ありませんが、OSには必要ですが、実際のディスクや物理ディスクは必要ありません。


0

以前のコンピューター(および一部の最新の組み込みシステム)にはファイルシステムがありません。私のApple] [(および学校の​​Commodore PET)は、ROMにOSがあり、コールドブートから約2秒後にロールする準備ができていました。ソフトウェアをロードしたいですか?ソースを手動で入力するか、LOADと入力してEnterキーを押し、テープマシンで再生します。その後、ディスクドライブを手に入れました-そして、とても喜んでいました。

ただし、Linuxのコアはファイルシステムが存在することを前提としており、他のほとんどすべてがその上に構築されています。真のファイルシステムなしのOSを実装したい場合は確かに可能ですが、ハードウェアとOSの両方をコンセプトに基づいて構築する必要があります。

Appleの方法は、メモリの最後の16kにOSを配線することでした。プロセッサ(MC6502)は、メモリの最後の2バイトに永続的に保存されている場所にジャンプするようにハードワイヤードされました。


-3

いいえ、Linuxは非常に厳密な意味でのファイルシステムを持つ必要はありません。あなたのケースでは別の問題があります。

「ルートをマウントできるファイルシステムはありません。試行済み:jffs2」「MTD:「jffs2」という名前のMTDデバイスが見つかりません。」

私の推測では、ロードプロセスの一部がマウントする場所を見つけていないか、そのファイルシステムをマウントする機能を持っていません。


2
あなたの答えは「あなたはファイルシステムを必要としないが、あなたの問題はあなたがファイルシステムを必要とすることである」と言う。これは意味がなく、内部的に一貫性がありません。
ケーシー2014

私はこれを理解していません...そのエラーは、マウントするファイルシステムがないためです。ファイルシステムがないためです。マウンターは正常に動作していますが、フラッシュディスクに有効なファイルがありません。
Vality 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.