[HN Gopher] A minimum complete tutorial of Linux ext4 file syste...
       ___________________________________________________________________
        
       A minimum complete tutorial of Linux ext4 file system (2017)
        
       Author : giis
       Score  : 118 points
       Date   : 2023-12-04 03:25 UTC (19 hours ago)
        
 (HTM) web link (metebalci.com)
 (TXT) w3m dump (metebalci.com)
        
       | mathiasgredal wrote:
       | Does anyone know if there exists a tool that can convert tarballs
       | to filesystems and back. I know you can make a loopback device,
       | but it can be pretty hard/impossible to do inside a container,
       | and often requires special flags and privileges.
        
         | st_goliath wrote:
         | For squashfs there is `tar2sqfs`[1] and `sqfs2tar`[2] (and now
         | also `sqfstar`[3]) that can go from tarball to filesystem and
         | back again.
         | 
         | For ext4, I recently saw a patch set on the mailing list[4].
         | 
         | Not sure about other filesystems tough.
         | 
         | [1] https://manpages.debian.org/unstable/squashfs-tools-
         | ng/tar2s...
         | 
         | [2] https://manpages.debian.org/unstable/squashfs-tools-
         | ng/sqfs2...
         | 
         | [3] https://manpages.debian.org/unstable/squashfs-
         | tools/sqfstar....
         | 
         | [4] https://lore.kernel.org/linux-
         | ext4/20230812150204.462962-2-j...
        
         | loeg wrote:
         | guestfish and libarchive are sort of in this space. Neither is
         | a canned tool for exactly this.
        
         | cedws wrote:
         | You can extract the tarball to a directory, then run mkfs.ext4
         | -d DIRECTORY FILENAME BLOCKS to create a filesystem[0]. You'll
         | need to know how many blocks your filesystem needs to be in
         | advance.
         | 
         | Unfortunately, mkfs.ext4 only works on Linux. There is no port
         | for other operating systems.
         | 
         | [0] https://github.com/cedws/concrete-
         | ubuntu/blob/0ae3f076c5a20d...
        
           | guappa wrote:
           | If you want to create read-only, use ext2. No point in using
           | ext4 if you don't want journaling.
        
         | chociej wrote:
         | 7z can list and extract from ext4 images. Respectively:
         | 
         | $ 7z l <image>
         | 
         | $ 7z x <image>
        
         | chungy wrote:
         | You can use fuse2fs to mount any ext[24] file system in user
         | space. You can even use "-o fakeroot" to get complete control
         | over UIDs and modes.
        
         | ravenstine wrote:
         | I've been doing something similar recently, though it doesn't
         | directly convert a tar to an ext4 FS. But maybe this can help
         | you get to where you want to be.
         | 
         | On Alpine Linux:
         | 
         | ```
         | 
         | apk add --no-cache coreutils e2fsprogs
         | 
         | ```
         | 
         | ```
         | 
         | #!/bin/sh
         | 
         | # Untar the tar file
         | 
         | mkdir -p /tmp/my_untarred_files_dir
         | 
         | tar -xvf my_tar_file.tar -C /tmp/my_untarred_files_dir
         | 
         | # Make an empty image file.
         | 
         | dd if=/dev/zero of="fs.raw" bs=1M count=1024
         | 
         | # Format the file as ext4 (with journaling) and copy untarred
         | files into it
         | 
         | mke2fs -t ext4 -j -d "/tmp/my_untarred_files_dir" "fs.raw"
         | 
         | ```
         | 
         | If you want to make a qcow2 image, you can then do this:
         | 
         | ```
         | 
         | apk add --no-cache qemu-img
         | 
         | qemu-img convert -O qcow2 "fs.raw" "fs.qcow2"
         | 
         | ```
        
         | torcete wrote:
         | Maybe you are looking for something like fsarchiver?
         | 
         | https://www.fsarchiver.org
        
       | sitzkrieg wrote:
       | i am baffled this article used a usb stick instead of a file
       | where it could have saved a lot of unnecessary i/o, but a good
       | writeup. i had to implement ext4 support in something back in
       | like 2017 and wish something like this existed
        
         | yjftsjthsd-h wrote:
         | Maybe they wanted to avoid having to deal with setting up the
         | loopback device?
        
       | buredoranna wrote:
       | Awhile back I put together a visualization of ext4.
       | 
       | https://buredoranna.github.io/linux/ext4/2020/01/09/ext4-viz...
        
         | tptacek wrote:
         | This is fantastic.
        
           | buredoranna wrote:
           | Thanks for saying so :)
        
         | doubloon wrote:
         | thats very cool. i feel like a long time ago we used to be able
         | to cat /dev/hda1 > /dev/video ? but maybe im imagining things.
         | i know you could do it with audio.
        
         | mixmastamyk wrote:
         | Thanks. I really do miss the disk visualizations of the DOS and
         | Norton Disk Doctor diagnostics and defragmenters from the old
         | days. The one for the original Mac was pretty incredible due to
         | high res graphics, even had color coded filetypes, etc if
         | memory serves.
         | 
         | Linux never had a good one to my knowledge. Improved
         | filesystems reduced the need and then SSDs delivered the
         | deathblow.
         | 
         | But I feel like the visualization was useful in itself to see
         | what was happening on the storage device and unfortunately
         | forgotten due to those improvements.
        
         | killjoywashere wrote:
         | #keeper
        
       | rollcat wrote:
       | It's absolutely fantastic, how gracefully ext2/3/4 stood the test
       | of time, for something designed in early 90s by people who hadn't
       | had 30+ years of kernel hacking in their pockets (yet). While I
       | generally prefer ZFS, ext4 remains a rock solid choice - I rarely
       | have a reason to pick anything else (on Linux, at least).
        
       ___________________________________________________________________
       (page generated 2023-12-04 23:00 UTC)