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
'리눅스' 카테고리의 다른 글
레디스 클러스터를 설정하는 방법(redis cluster setup) (0) | 2022.10.27 |
---|---|
우분투에서 Redis 서버를 소스 코드로 컴파일하여 설치하는 방법(소스 컴파일) (0) | 2022.10.27 |
리눅스 소스 컴파일 중 "c++: fatal error: Killed signal terminated program cc1plus" 에러 (0) | 2022.10.24 |
소스 컴파일 중 "reason: No space left on device" 오류 (0) | 2022.10.24 |
[draft] 우분투에서 소스 코드로 MySQL 8을 설치하는 방법 (0) | 2022.10.22 |