본문 바로가기

리눅스

우분투 SquashFS 사용 방법

728x90

우분투 SquashFS 사용 방법

SquashFS란?

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

SquashFS 사용 방법

1. squashfs-tools 패키지 설치

SquashFS 이미지를 만들고 관리하기 위해서는 squashfs-tools 패키지를 설치해야 합니다. Ubuntu에서는 다음과 같은 명령어로 설치할 수 있습니다.

squashfs-tools 패키지

sudo apt-get install -y squashfs-tools
$ apt-get info squashfs-tools
Package: squashfs-tools
Version: 1:4.5-3build1
Priority: optional
Section: admin
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Laszlo Boszormenyi (GCS) <[email protected]>
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 이미지로 포함시킬 파일들이 저장된 디렉토리를 생성해야 합니다. 이후에는 다음과 같은 명령어로 SquashFS 이미지를 생성할 수 있습니다.

sudo mksquashfs 디렉토리 경로 이미지 파일 경로

예를 들어, 현재 디렉토리의 "data" 폴더를 SquashFS 이미지로 묶어 "data.squashfs" 파일을 생성하려면 다음과 같이 입력합니다.

sudo mksquashfs data data.squashfs

이때, "sudo" 명령어는 권한을 얻기 위한 것입니다. 만약 권한이 이미 있는 경우에는 생략해도 됩니다.

3. SquashFS 이미지 마운트

생성된 SquashFS 이미지를 마운트하여 내용을 확인하거나 파일을 추출할 수 있습니다. 마운트하기 위해서는 다음과 같은 명령어를 사용합니다.

sudo mount -t squashfs 이미지 파일 경로 마운트할 디렉토리 경로

예를 들어, "data.squashfs" 파일을 "/mnt/squashfs" 폴더에 마운트하려면 다음과 같이 입력합니다.

sudo mount -t squashfs data.squashfs /mnt/squashfs

이제 "/mnt/squashfs" 폴더에 SquashFS 이미지의 내용이 마운트되었습니다. 이후에는 해당 디렉토리에서 파일을 복사하거나 읽어들일 수 있습니다.

728x90

4. SquashFS 이미지 언마운트

SquashFS 이미지를 마운트한 후에는 작업이 끝나면 반드시 언마운트해야 합니다. 다음과 같은 명령어로 SquashFS 이미지를 언마운트할 수 있습니다.

sudo umount 마운트할 디렉토리 경로

예를 들어, "/mnt/squashfs" 폴더에 마운트된 SquashFS 이미지를 언마운트하려면 다음과 같이 입력합니다.

sudo umount /mnt/squashfs

5. SquashFS 이미지 수정 및 업데이트

SquashFS 이미지를 생성한 후에는 해당 이미지를 수정하거나 업데이트해야 할 경우가 있을 수 있습니다. 이를 위해서는 다음과 같은 과정을 거칩니다.

 

  1. SquashFS 이미지를 언마운트합니다.
  2. SquashFS 이미지에 포함된 파일을 수정합니다.
  3. 수정된 파일을 다시 SquashFS 이미지로 묶어 업데이트합니다.

예를 들어, "data.squashfs" 이미지를 업데이트하려면 다음과 같은 명령어를 사용합니다.

sudo unsquashfs data.squashfs

이 명령어는 SquashFS 이미지를 언팩킹하여 "squashfs-root"라는 디렉토리에 저장합니다. 이후에는 해당 디렉토리에서 수정하고자 하는 파일을 수정하면 됩니다. 수정이 완료되면 다음과 같은 명령어로 SquashFS 이미지를 다시 묶어 업데이트합니다.

sudo mksquashfs squashfs-root data.squashfs

6. SquashFS 이미지 삭제

SquashFS 이미지를 사용하지 않을 경우에는 해당 이미지를 삭제해야 합니다. 다음과 같은 명령어로 SquashFS 이미지를 삭제할 수 있습니다.

sudo rm 이미지 파일 경로

예를 들어, "data.squashfs" 파일을 삭제하려면 다음과 같이 입력합니다.

sudo rm data.squashfs

마치며

이상으로 SquashFS 사용 방법에 대한 블로그 게시글을 작성해보았습니다. 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