Apakah saya memerlukan sistem file ketika saya tidak ingin menyimpan data apa pun


8

Saya mengajukan pertanyaan di sini. Apakah wajib memiliki sistem file

Salah satu komentarnya adalah:

bagaimana sebuah sistem tanpa sistem file akan bekerja di linux bahkan printer atau kartu ethernet dianggap sebagai file? Apa tujuan Anda di sini? ... Kiwy 24 Feb pada 14:18

Sekarang di sini adalah pesan log ketika mem-boot linux tanpa sistem file (yang menggantung di akhir):

    [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:

Saya boot dari flash.

Sekarang dari log sangat jelas bahwa banyak driver sudah dimuat meskipun pemuatan sistem file gagal (karena saya sengaja tidak meletakkan rootfs.jffs2 sistem file dalam flash).

Sekarang mengacu pada komentar di atas, jika semuanya file di linux, bagaimana bisa driver berhasil dimuat? Anda dapat melihat USB, GPIO, SD semuanya datang sebelum meminta sistem file (dan gagal).

Jadi, apakah secara teknis benar untuk mengatakan itu

linux HARUS memiliki sistem file

Beberapa latar belakang Apa yang saya coba capai adalah menjalankan linux pada sistem di mana aplikasi kontrol akan berjalan. Aplikasi hanya menangkap beberapa data dan mengirimkannya ke beberapa budak. Tidak ada pertanyaan tentang menyimpan data sama sekali. Jadi ingin sepenuhnya menyingkirkan sistem file. Sesuai pemahaman saya, sistem file diperlukan untuk menyimpan data dan karena saya tidak akan menyimpan data apa pun, jadi mengapa memiliki sistem file dan meningkatkan penggunaan sumber daya?

Memperbarui

Meskipun saya telah menyebutkan hal ini di latar belakang , tetapi secara spesifik pengiriman data akan dilakukan menggunakan USB atau Ethernet, jadi itu wajar untuk memiliki driver yang sesuai.


1
Senang dikutip B-)
Kiwy

Di mana Anda ingin menyimpan aplikasi kontrol Anda?
el.pescado

@ el.pescado di tempat yang sama di mana saya akan menyimpan OS, pada dasarnya memori flash.
user2799508

@ user2799508 initrd?
el.pescado

Jawaban:


15

Jika Anda membutuhkan Linux, Anda memerlukan sistem file.

(Maksud saya Linux sistem operasi di sini, daripada Linux kernel OS. Saya akan sampai pada interpretasi yang lebih sempit di bawah ini.)

Pengamatan Anda tentang pengandar perangkat memuat saat boot sebelum sistem file ada adalah herring merah. Anda dapat memuat driver tanpa memiliki sistem file. Yang tidak bisa Anda lakukan adalah fd = open("/dev/foo", O_RDONLY)tanpa sistem file.

Itu tidak berarti Anda memerlukan media penyimpanan yang dapat ditulis ulang secara persisten yang diformat dengan sistem file tradisional, seperti contoh JFFS2 Anda. Yang Anda butuhkan untuk mendukung /devpohon tradisional adalah struktur data yang berperilaku seperti sistem file pada disk. Linux modern menggunakan udev pada sistem file dalam memori untuk memungkinkan akses ke /devnode tanpa memerlukan penyimpanan persisten untuk /devnode, misalnya.

Anda juga memerlukan sistem file untuk memanfaatkan beberapa kemampuan Linux-the-OS lainnya:

  • Perlu pustaka bersama atau modul bahasa skrip? Anda perlu filesystem ke toko /lib/libfoo.*, /usr/lib/perl5/*, /lib/ld.so, /etc/ld.so.cache, dll

  • Perlu modul kernel yang dapat dimuat? Anda memerlukan sistem file untuk/lib/modules/$(uname -r)/*

  • Perlu lebih dari satu yang dapat dieksekusi, seperti shell, atau editor teks? Mereka membutuhkan sistem file untuk hidup.

  • Perlu kernel untuk menegakkan kontrol akses? Sebagian besar dilakukan melalui bit izin , ACL , dan label SELinux pada file atau direktori di suatu tempat.

Saya mungkin bisa memberikan lebih banyak contoh, tetapi itu akan berhasil.

Dimungkinkan untuk memuat semua sumber daya yang dibutuhkan sistem Anda dari penyimpanan persisten ke dalam RAM, sehingga setelah di-boot, sistem tidak menggunakan penyimpanan persisten sama sekali. Distribusi Linux Live melakukan ini. Juga umum untuk OS Linux tertanam untuk membangun seluruh sistem file mereka dalam RAM ketika mereka boot, sehingga setelah boot, mereka tidak lagi melanjutkan referensi penyimpanan persisten seperti perangkat penyimpanan flash .

Jika Anda sedang membangun embedded system satu tugas sempit dengan cakupan tunggal, Anda mungkin tidak membutuhkan Linux-the-OS. Anda mungkin hanya memerlukan OS tertanam yang lebih kecil dan kurang fitur , atau Anda mungkin dapat menulis langsung ke logam .

Beberapa jawaban lain di sini berbicara tentang menghapus Linux ke titik di mana Anda hanya tinggal Linux-kernel, baik dipasangkan dengan satu executable - program Anda, berjalan di bawah kernel - atau berjalan sebagai program monolitik dengan kode Anda dimasukkan secara statis di dalamnya. Apa pun itu, Anda dapat sepenuhnya menjauh dari kebutuhan akan sistem file, tetapi yang akhirnya Anda dapatkan bukan lagi Linux-the-OS.


4
Perlu pustaka bersama? Nah - Anda dapat menggunakan binari statis. Perlu modul yang dapat dimuat? Nah - Anda dapat mengkompilasi kernel monolitik. Perlu lebih dari satu yang dapat dieksekusi? Nah - masukkan semuanya ke dalam init. Oh, tetapi di mana akan initdimuat? Bingo!
Gilles 'SANGAT berhenti menjadi jahat'

1
@Gilles: Pergi cukup jauh ke jalan itu, dan Anda berakhir dengan jawaban Achmed, dan masalah yang timbul.
Warren Young

1
Tidak, ada perbedaan besar antara memiliki initdan memodifikasi kernel untuk melakukan sesuatu selain memuat init.
Gilles 'SANGAT berhenti menjadi jahat'

Aku tahu. Anda menggambarkan langkah terakhir dalam kemajuan menuju jawaban Achmed. Saya hanya memperingatkan tentang konsekuensi potensial dari mengambil ide terlalu jauh.
Warren Young

Saya tidak setuju dengan gagasan bahwa mungkin ada yang terlalu jauh . Seluruh titik dari kernel open-source adalah bahwa source-nya terbuka untuk diubah. Menyesuaikan perangkat lunak open-source dengan tujuan alternatif adalah tujuan dari perangkat lunak open-source. Jika Anda melakukan pekerjaan yang buruk atau jika tujuan Anda terlalu tunggal maka perubahan Anda mati bersama Anda, tetapi jika perubahan Anda bermanfaat maka orang lain akan mendapat manfaat dari upaya Anda dan kemungkinan Anda dari mereka ketika mereka berkontribusi sendiri.
mikeserv

7

Saya menulis jawaban untuk pertanyaan terkait yang merinci bagaimana konsep file adalah inti cara Unix bekerja, dan karena Anda tidak dapat memiliki file tanpa semacam sistem file, itu berarti Anda pasti membutuhkannya.

Namun dimungkinkan untuk bertahan hidup tanpa sistem file yang ada pada media penyimpanan persisten. initramfsGambar Anda dapat dikompilasi ke dalam kernel itu sendiri (atau diletakkan di suatu tempat di mana bootloader dapat mengaksesnya). Secara teknis gambar yang ditulis ke media penyimpanan adalah arsip dan bukan sistem file; hanya menjadi seperti itu setelah dimuat. Jika Anda meletakkan semua file biner yang Anda butuhkan di dalamnya, tidak perlu memasukkannya ke sistem file di media penyimpanan. Dengan cara ini, Anda dapat memastikan bahwa semua sistem file yang diperlukan yang perlu dijalankan oleh sistem murni ada di memori.

Tentu saja kerugiannya adalah karena semua kebutuhan sistem harus ada dalam memori, Anda mungkin menemukan bahwa Anda tidak memiliki cukup untuk apa yang ingin Anda lakukan. Anda juga akan kesulitan menulis data apa pun yang ingin Anda pertahankan setelah reboot.


Satu hal yang sangat menonjol tentang initramfsgambar adalah bahwa Anda tidak terbatas hanya pada 1. Cukup cpiogambar lain di atas yang pertama dan Anda baik untuk pergi. ATAU kompilasi yang pertama dan tambahkan sisanya setelah boot. Kemungkinannya tidak terbatas, Juga perhatikan bahwa karena cpioalat-alat tersebut termasuk dalam kernel, tidak dapat dibayangkan untuk menyimpan perubahan dengan cara ini, meskipun Anda akan dibatasi untuk menulis cpiogambar yang disimpan ke perangkat mentah jika Anda tidak memiliki sistem file lain.
mikeserv

Selain itu, secara teknis cpiogambar tidak menjadi sistem file tetapi dibongkar ke dalam sistem file - initramfsatau rootfssesuai keinginan Anda.
mikeserv

5

Sebenarnya, secara teknis Anda tidak memerlukan sistem file. Perilaku default adalah memiliki sistem file untuk boot. (misalnya /sbin/initdiluncurkan dari sana). Namun, jika Anda suka, Anda dapat melihat apa yang terjadi do_basic_setup()di linux-source/init/main.c. Pada saat rutin dipanggil, kernel dan CPU0 siap untuk pekerjaan nyata. Anda dapat merusak semua pekerjaan yang diperlukan untuk mem-boot initramfs - yang juga merupakan filesystem! - dan apa pun sesudahnya dan ganti dengan kode Anda sendiri untuk bekerja tanpa sistem file.

Anda kemudian dapat menggunakan utas kernel untuk memunculkan proses apa pun yang Anda inginkan. Namun, semua ini akan menjadi sangat jelek.


1
Meskipun ini semua benar, bukankah cukup banyak mengharuskan Anda GPL sistem Anda? Anda tidak dapat menggunakan lubang lisensi modul kernel karena tidak ada sistem file berarti tidak ada modul kernel yang dapat dimuat secara dinamis.
Warren Young

+1 untuk ringkas, secara teknis benar dan satu-satunya jawaban untuk menjawab pertanyaan dengan benar sejauh ini. Linux hanyalah basis kode, Anda dapat menggunakannya sesuka Anda, termasuk menghilangkan kebutuhan akan banyak komponen dasar.
Vality

@Ahmed Masud Maksud Anda, saya masih memerlukan satu initramfs sistem file? (Saya akan membutuhkan ethernet dan usb di aplikasi saya)
user2799508

@ mikeserv, kernel pra 2.6 tidak perlu initramfs- mereka gunakan initrd.
Graeme

@Graeme Ini juga benar, karena saya sadar dan bahkan mencatat diri saya di tempat lain di situs ini. Saya cenderung berpikir lebih saat ini daripada itu, bahkan jika melakukan itu adalah kekeliruan. Tapi, dalam pembelaan saya - saya tidak sendirian. Bahkan OpenWRT telah menggunakan 2.6+ selama beberapa tahun, meskipun driver Broadcom asli yang awalnya memberikan tujuan dan nama tidak pernah melihat pembaruan yang kompatibel secara resmi 2.6.
mikeserv

1

Sistem file menyediakan lebih dari sekadar tempat untuk menyimpan file. Di sinilah file executable (program), perpustakaan dan konfigurasi untuk sistem Anda tinggal. Minimal kernel linux membutuhkan sistem file untuk memungkinkannya menemukan / menjalankan proses " init " yang bertanggung jawab untuk memastikan bahwa proses lain dimulai sebagaimana mestinya untuk sistem Anda.

Mengenai semuanya adalah file yang frasa berarti bahwa sistem Linux / Unix menyediakan akses ke perangkat, sumber daya, file melalui abstraksi file. Itu berarti bahwa ada antarmuka yang konsisten (buka, tutup, baca, tulis, ...) untuk semuanya (hampir!).

Kebingungan Anda dengan driver perangkat muncul karena Anda membingungkan sumber instruksi driver perangkat dengan instruksi mesin yang sebenarnya dapat dieksekusi yang mengimplementasikan driver perangkat. Pada contoh yang Anda berikan, driver perangkat dibangun langsung ke dalam kernel dan dapat dijalankan setelah citra kernel dimasukkan ke dalam memori. Jika driver perangkat dibuat sebagai modul, maka file tersebut terdapat dalam file di sistem file dan instruksi mesin yang dapat dieksekusi dimuat dari file tersebut ke dalam memori kernel di mana mereka dieksekusi. Setelah driver perangkat dimuat dan dijalankan biasanya membuat perangkat yang dikontrolnya tersedia di / dev melalui sistem file.

Setelah kernel menjalankan proses init dan semua anak-anaknya perlu mengakses file untuk berinteraksi dengan proses lain, akses perangkat, untuk meminta memori virtual, untuk mendapatkan sumber nomor acak, untuk saling mengirim pesan. Ini untuk bagian utama yang dilakukan melalui akses sistem file. Mengirim / menerima melalui jaringan adalah satu pengecualian untuk memerlukan akses sistem file tetapi Anda mungkin akan menemukan kebutuhan untuk mengakses sistem file dengan sangat cepat.

Benar-benar mengingat kasus penggunaan Anda, Anda harus melihat menggunakan distribusi yang dapat dikonfigurasi kecil seperti OpenWrt . Dengan itu Anda dapat membangun sistem yang memiliki sekumpulan perangkat lunak minimal yang diinstal dan yang pada dasarnya berjalan dari RAM tanpa perlu menulis apa pun ke penyimpanan yang stabil. Setelah Anda menjalankannya, Anda selalu dapat menghapus komponen yang tidak dibutuhkan tetapi jangan meremehkan bantuan yang memiliki distribusi yang memiliki alat debugging dan basis pengguna aktif.


0

Sistem file adalah sarana bagi sistem operasi untuk mengatur data yang disimpan secara terus-menerus. Secara khusus, mereka memungkinkan OS untuk menyimpan dan mengambil data secara efisien. Ketika Anda mengatakan Anda telah boot dari flash drive, itu berarti bahwa flash drive ini tentu saja memiliki sistem file. Fakta bahwa kernel telah memuat driver berarti ia harus memiliki cara untuk menemukannya di suatu tempat. Ini "menemukannya di suatu tempat" dicapai oleh sistem file. Tetapi bahkan jika kernelnya monolitik dan memiliki semua yang dikompilasi, maka paling tidak boot loader harus memiliki cara untuk menemukan kernel.

Secara teori, Anda bisa melakukan itu tanpa sistem file yang canggih, cukup meletakkan segala sesuatu di beberapa lokasi tetap dan kode keras lokasi itu, tetapi tujuan apa yang akan melayani? Dan kami belum membicarakan file data Anda seperti email dan yang lainnya. Tanpa sistem file, tidak ada cara yang baik untuk menyimpan (dan kemudian menemukan) itu. Bahkan jika Anda tidak ingin menyimpan file apa pun, OS lebih dari sekadar kernel, itu termasuk berbagai layanan dan program pengguna lahan yang disimpan dalam file.

Untuk membuat cerita panjang pendek, Anda harus memiliki sistem file di suatu tempat, karena jika kernel tidak menemukan (seperti dalam contoh Anda) itu panik (seperti yang ditunjukkan oleh log Anda) - yang berarti ia menolak untuk melakukan apa pun. Tetapi jika menjalankan instalasi linux dari flash drive (dengan sistem file) sesuai dengan kebutuhan Anda, maka Anda tidak perlu sistem file pada disk atau di mana pun.


1
OS Unixy menggunakan sistem file untuk lebih dari sekedar data persisten. Ada pohon impersistent (devfs, /proc, /sys...), itu adalah tulang punggung yang paling kontrol akses, dll
Warren Muda

/ proc dan / sys hanyalah pembantu, sistem pada prinsipnya dapat bekerja dengan baik tanpa mereka. / sys adalah linux-specific, / proc dapat digantikan oleh sesuatu seperti sysctl seperti halnya FreeBSD.
countermode

0

Jika Anda ingin OS Linux berfungsi maka harus memiliki sistem file.

Tetapi tidak ada persyaratan bahwa sistem file berada di hard disk (atau SSD dll). Bahkan tidak ada persyaratan bahwa Linux ada di perangkat sama sekali.

Anda dapat menggunakan protokol BOOTP untuk memuat OS melalui jaringan. Anda memang membutuhkan sedikit RAM meskipun agar ini menjadi efektif. Boot loader adalah ROM standar pada kartu jaringan. Segala sesuatu yang lain akan ditransfer melalui jaringan dan disimpan dalam Sistem File Virtual yang dibuat dalam RAM.

Namun untuk perangkat khusus, akan lebih baik untuk menginstal memori flash dengan setara dengan disk USB Live Boot dan jalankan program Anda dari sana. Sepertinya Anda sudah mencoba melakukan hal seperti itu. Saat dijalankan dari Flash Disk atau ROM, Virtual File System juga dibuat dalam RAM, tetapi Anda membutuhkan lebih sedikit RAM jika menggunakan metode BOOTP.

Tidak seperti Ubuntu, Debian menggunakan gambar Boot Hybrid yang dapat secara langsung disalin ke USB flash disk menggunakan dd, Anda mungkin menemukan ini lebih mudah untuk bekerja dengan, terutama karena Ubuntu membutuhkan penggunaan program khusus untuk membuat USB bootable dan program itu adalah agak buggy.

Anda dapat menambahkan program Anda sendiri ke gambar OS menggunakan berbagai alat untuk memasang ISO sebagai sistem file baca / tulis. Anda dapat menggunakan rc.local untuk memulai program, tetapi berhati-hatilah bahwa rc.local dijalankan beberapa kali selama start up. Anda juga bisa membuat skrip /etc/init.d/ tapi itu lebih rumit.

Singkatnya: Program Anda tidak memerlukan sistem file, tetapi OS membutuhkannya, namun sebenarnya tidak diperlukan disk fisik / fisik.


0

Komputer sebelumnya (dan beberapa sistem tertanam modern) tidak memiliki sistem file. Apple Saya] [(dan Commodore PET sekolah) memiliki OS dalam ROM dan siap untuk bergulir sekitar 2 detik setelah boot dingin. Ingin memuat perangkat lunak? Ketik sumber secara manual, atau ketik LOAD, tekan enter, dan MAINKAN mesin kaset. Lalu kami mendapat disk drive - dan ada banyak sukacita.

Namun, inti dari linux mengasumsikan sistem file ada, dan hampir semua yang lain dibangun di atasnya. Jika Anda ingin menerapkan sistem tanpa-file-sistem yang sebenarnya, tentu saja itu mungkin, tetapi perangkat keras dan OS Anda harus dibangun berdasarkan konsep tersebut.

Metode Apple adalah untuk mentransfer OS di 16k memori terakhir, prosesor (MC6502) bawaan untuk melompat ke lokasi yang disimpan secara permanen dalam 2 byte terakhir memori.


-3

Tidak, linux tidak perlu memiliki sistem file dalam arti yang sangat ketat. Dalam kasus Anda, Anda memiliki masalah yang berbeda.

"Tidak ada sistem file yang dapat me-mount root, mencoba: jffs2" "MTD: perangkat MTD dengan nama" jffs2 "tidak ditemukan."

Dugaan saya adalah beberapa bagian dari proses pemuatan baik tidak menemukan / tempat untuk me-mount atau tidak memiliki kemampuan untuk me-mount sistem file itu.


2
Jawaban Anda mengatakan "Anda tidak memerlukan sistem file tetapi masalah Anda adalah Anda memang membutuhkan sistem file". Itu tidak masuk akal dan tidak konsisten secara internal.
Casey

Saya tidak mengerti ini ... kesalahan itu karena tidak ada sistem file untuk dipasang, karena ia tidak memiliki sistem file. Mounter berfungsi dengan baik, ia tidak memiliki fs yang valid pada flash disk-nya.
Vality
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.