= Disks and File systems = == File system types == HelenOS currently supports the following file systems: || '''File system''' || '''`/srv` executable''' || '''Can be initrd FS''' || '''Has `mk*fs` utility''' || '''Status''' || || [wiki:Fs/Tmpfs TMPFS] || `tmpfs` || yes || no || Stable || || [wiki:Fs/Fat FAT] || `fat` || yes || yes || Stable || || [wiki:Fs/Locfs locfs] || `locfs` || no || no || Stable || || [wiki:Fs/Ext2fs Ext2fs/Ext3fs/Ext4fs] || `ext4fs` || yes || no || Stable || || [wiki:Fs/ExFat exFAT] || `exfat` || no || yes || Testing || || [wiki:Fs/Cdfs CDFS] || `cdfs` || no || no || Testing || || [wiki:Fs/Mfs MFS] || `mfs` || no || yes || Stable || || [wiki:Fs/UDF UDF] || `udf` || no || no || Read-only testing || == Directory structure == The file system of a running HelenOS system is roughly laid out as follows: || /app || end-user applications (see the [wiki:CommandReference Command Reference]) || || /cfg || system-wide configuration || || /data || application data (e.g. the web root served by websrv) || || /drv || device drivers || || /inc || header files || || /lib || libraries || || /loc || location service nodes (rough analogy of /dev in UNIX) || || /src || source files || || /srv || server applications (services, e.g. console, networking - see the [wiki:CommandReference Command Reference]) || || /tmp || temporary files || This layout is not fixed in any way and may change in the future. == Block device drivers == Non-DDF: || file_bd || File-backed block device || || part || Disk label/partition driver - provides block devices for individual partitions || || rd || Initial ramdisk || || sata_bf || AHCI SATA || DDF-based: || ata_bd || ATA/ATAPI || || usbmast || USB mass storage || || ddisk || msim disk driver || == Working with disk labels and file systems == You can use the interactive {{{fdisk}}} utility to create and manage disk labels. BIOS/MBR and UEFI/GPT labels are supported. When you create a partition with {{{fdisk}}}, you are also prompted for file system type (The file system will be initialized as part of creating the partition). If you'd like to create a file system on a raw disk, you need to do it by manually invoking a {{{mk*fs}}} utility. == Mounting file systems == In order to make use of a file system it needs to be mounted into the filesystem namespace using the {{{mount}}} command. Typing just {{{mount}}} prints out a list of mounted file systems. Te basic syntax to mount a file system is: {{{ # mount }}} {{{fstype}}} is the type of the file system (e.g. {{{ext4}}}, {{{mfs}}}), {{{service-name}}} is the service name of the block device (typically of a partition) and {{{directory}}} is the directory path to mount on top of. You can find the list of available partition block devices in your system by typing: {{{ # loc show-cat partition }}} Unlabeled disks will be represented by one 'fake' partition spanning the entire disk.