
Clonezilla Live 및 GParted Live와 같은 기본 복구 도구가 지원하지 않는 특수 커널 및 커널 모듈이 필요한 특수 하드웨어가 있는 랩탑용 작은 복구 파티션(다른 모든 시스템 및 스토리지 파티션 다음에 ~800MB의 여유 공간)을 생성하려고 합니다. 잘 작동하지 않습니다. 파티션이 너무 작아서 구축하려는 항목에 필요한 모듈과 소프트웨어를 포함할 수 없으므로 런타임 시 시스템의 대부분을 압축하여 RAM에 로드해야 합니다. 또한 에 의존하는 대신 시스템을 완전히 추출하는 것을 선호하며 squashfs
파티션이 허용하는 한 시스템에 대한 변경 사항을 저장할 수 있는 기능을 원합니다. Ubuntu 20.04를 기본 시스템으로 사용하여 이를 위해 다음 구성표를 고안했습니다.
- 에서 초기 시스템을 구축한 후 런타임에 압축이 풀린 시스템 및 사용자 파일을 보관할 마운트 지점으로
chroot
폴더를 만들고 비우고 모든 시스템 및 사용자 파일 폴더( , , , , ,/ram
tmpfs
home
usr
var
opt
etc
등.)를 에 넣고/ram
각각을 에 대한 심볼릭 링크로 바꿉니다/ram/$dir
./ram
as로 압축/ram.tar.gz
하고 특수 마운트 지점(dev
,sys
,run
,tmp
및proc
)을 그대로boot
둡니다rootfs
. 삭제 하고 파티션에/ram/*
씁니다 .rootfs
- 부팅 시 커널이
initrd
로드된 후 premountrootfs
, mounttmpfs
on 을 수행/ram
한 다음 의 내용/ram.tar.gz
을/ram
. 이는 루트로rootfs
교체하기 전에 발생해야 합니다. 그렇지 않으면 압축된 아카이브에서 마운트하고 추출하는 데 필요한 유틸리티에 액세스할 수 없기 때문입니다.initramfs
rootfs
/ram
- 마운트
rootfs
하고 부팅을 진행합니다. - 종료 시 백업
/ram.tar.gz
한/ram.tar.gz.bak
후 수정된/ram
파일을/ram.tar.gz
. 이는 를 사용하여 달성할 수 있습니다systemd
.
분명히 4단계에서 문제가 발생할 수 있으므로 2단계에서는 백업의 무결성을 포함 /ram.tar.gz
하고 실패할 경우 백업을 로드해야 합니다. 그러나 이는 스크립트에 포함할 몇 가지 추가 명령일 뿐이며 initramfs-tools
내 질문의 범위를 벗어납니다. :
를 변경하지 않고 2단계를 수행하기 위해 /usr/share/initramfs-tools/init
에서 스크립트를 어떻게 생성합니까 ? /etc/initramfs-tools/scripts
명령은 다음과 같이 충분히 쉬워야 합니다.
mount -t tmpfs -o $OPTIONS none /ram
tar xvzf ram.tar.gz
PREREQ
그러나 스크립트(init? local? top? Bottom? premount?)를 포함할 폴더와 스크립트 자체에서 헤더를 사용하여 작업하는 방법에 대해서는 약간 혼란스럽습니다 .
답변1
그것은 매우 간단하다는 것이 밝혀졌습니다. 만들다:
/etc/initramfs-tools/scripts/local-bottom/ramfiles
#!/bin/sh
set -e
PREREQ=""
prereqs()
{
echo "${PREREQ}"
}
case "${1}" in
prereqs)
prereqs
exit 0
;;
esac
mount -t tmpfs -o size=100% none ${rootmnt}/ram
tar xvzf ${rootmnt}/ram.tar.gz -C ${rootmnt}
그 다음에
sudo chmod +x /etc/initramfs-tools/scripts/local-bottom/ramfiles
sudo update-initramfs -u