본문 바로가기

리눅스

[draft] 우분투에서 SquashFS를 사용하는 방법

728x90

우분투에서 SquashFS를 사용하는 방법

SquashFS란?

SquashFS는 리눅스 운영 체제에서 사용되는 읽기 전용 파일 시스템으로 여러 파일과 디렉토리를 단일 파일에 압축하여 저장할 수 있습니다. 이를 통해 운영 체제나 소프트웨어 배포를 위한 인스톨러 등에서 이미지 크기를 줄일 수 있습니다.

SquashFS 사용 방법

1. squashfs-tools 패키지 설치

SquashFS 이미지를 만들고 관리하기 위해서는 squashfs-tools 패키지를 설치해야 합니다.

sudo apt-get update
sudo apt-get install -y squashfs-tools
$ apt info squashfs-tools
Package: squashfs-tools
Version: 1:4.5-3build1
Priority: optional
Section: admin
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Laszlo Boszormenyi (GCS) <gcs@debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 424 kB
Depends: libc6 (>= 2.34), liblz4-1 (>= 0.0~r130), liblzma5 (>= 5.1.1alpha+20120614), liblzo2-2 (>= 2.02), libzstd1 (>= 1.4.0), zlib1g (>= 1:1.1.4)
Homepage: https://github.com/plougher/squashfs-tools
Task: server-minimal, ubuntu-desktop-minimal, ubuntu-desktop, cloud-image, ubuntu-desktop-raspi, ubuntu-wsl, server, ubuntu-server-raspi, kubuntu-desktop, xubuntu-core, xubuntu-desktop, lubuntu-desktop, ubuntustudio-desktop-core, ubuntustudio-desktop, ubuntukylin-desktop, ubuntu-mate-core, ubuntu-mate-desktop, ubuntu-budgie-desktop, ubuntu-budgie-desktop-raspi
Download-Size: 159 kB
APT-Sources: http://kr.archive.ubuntu.com/ubuntu jammy/main amd64 Packages
Description: Tool to create and append to squashfs filesystems
 Squashfs is a highly compressed read-only filesystem for Linux. It uses zlib
 compression to compress both files, inodes and directories. Inodes in the
 system are very small and all blocks are packed to minimise data overhead.
 Block sizes greater than 4K are supported up to a maximum of 64K.
 .
 Squashfs is intended for general read-only filesystem use, for archival use
 (i.e. in cases where a .tar.gz file may be used), and in constrained block
 device/memory systems (e.g. embedded systems) where low overhead is needed.

2. SquashFS 파일 생성

SquashFS 파일 시스템을 생성하려면 디렉토리의 내용을 압축하여 .squashfs 파일을 생성해야 합니다.

 

압축할 디렉토리 준비

  • 압축할 파일이나 디렉토리를 준비합니다.
mkdir mydata
echo "Hello, SquashFS!" > mydata/hello.txt

SquashFS 파일 생성

  • mksquashfs 명령어를 사용하여 디렉토리를 SquashFS 형식으로 압축합니다.
mksquashfs mydata mydata.squashfs
$ mksquashfs mydata mydata.squashfs
Parallel mksquashfs: Using 4 processors
Creating 4.0 filesystem on mydata.squashfs, block size 131072.
[======================================================================================|] 1/1 100%

Exportable Squashfs 4.0 filesystem, gzip compressed, data block size 131072
	compressed data, compressed metadata, compressed fragments,
	compressed xattrs, compressed ids
	duplicates are removed
Filesystem size 0.24 Kbytes (0.00 Mbytes)
	91.48% of uncompressed filesystem size (0.26 Kbytes)
Inode table size 41 bytes (0.04 Kbytes)
	62.12% of uncompressed inode table size (66 bytes)
Directory table size 29 bytes (0.03 Kbytes)
	93.55% of uncompressed directory table size (31 bytes)
Number of duplicate files found 0
Number of inodes 2
Number of files 1
Number of fragments 1
Number of symbolic links 0
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 1
Number of ids (unique uids + gids) 1
Number of uids 1
	root (0)
Number of gids 1
	root (0)
728x90

3. SquashFS 파일 마운트

생성된 SquashFS 파일를 마운트합니다.

 

마운트할 디렉토리 생성

  • 마운트할 빈 디렉토리를 생성합니다.
mkdir /mnt/squashfs

SquashFS 파일 마운트

  • mount 명령어를 사용하여 SquashFS 파일을 마운트합니다.
sudo mount -t squashfs -o loop mydata.squashfs /mnt/squashfs

마운트된 디렉토리의 내용을 확인합니다.

ls /mnt/squashfs
$ ls /mnt/squashfs
hello.txt

4. SquashFS 파일 시스템 해제

SquashFS 파일 시스템을 해제합니다.

sudo umount /mnt/squashfs

5. 추가 옵션

압축 수준 설정

  • SquashFS 생성 시 압축 수준을 설정할 수 있습니다. -comp 옵션을 사용하여 다양한 압축 알고리즘을 선택할 수 있습니다.
sudo umount /mnt/squashfs

파일 권한 유지

  • -all-root 옵션을 사용하여 파일의 권한을 유지할 수 있습니다.
mksquashfs mydata mydata.squashfs -all-root

 

SquashFS를 사용하여 파일 시스템을 생성하고 마운트할 수 있습니다.

 

참고URL

- Web site: www.squashfs.org

- https://www.kernel.org/doc/Documentation/filesystems/squashfs.txt

- https://github.com/plougher/squashfs-tools/blob/master/README-4.5.1

 

728x90