지속성을 가진 데비안 라이브 USB 드라이브를 만드는 방법은 다음과 같습니다. 누락 된 패키지를 설치하여 지속성을 사용하여 모든 라이브 부팅에서 사용할 수 있습니다. 읽기 쓰기 가능 파일 시스템에서 라이브 ISO 이미지 파일 시스템 내용을 재생성하므로 부트 로더 구성을 변경하여 지속성을 활성화하고 부팅시 키보드 레이아웃을 설정할 수 있습니다.
여기에 설명 된 단계는 데비안 스트레치 라이브 이미지를 만들기 위해 데비안 스트레치 및 버스터에서 작동하도록 테스트되었습니다.
많은 단계가 관련되어 있지만이 방법은 여전히 매우 효율적인 것으로 보입니다.
면책 조항 : 대상 USB 드라이브의 데이터가 손실되고 아래 명령을 엉망으로 만들면 나중에 미안하다고 느낄 수 있습니다. 나는 당신의 행동에 책임이 없습니다.
운이 좋은 느낌
오늘 운이 좋으면 프로세스를 자동화 하는 bash 스크립트를 사용해보십시오 . ISO 이미지 경로를 첫 번째 매개 변수로, USB 드라이브 블록 장치 이름을 두 번째 매개 변수로 지정하십시오. 이 스크립트는 매우 위험 하므로 먼저 읽고 이해하지 않고 실행하면 안됩니다.
TL; DR
데비안 라이브 ISO 이미지를 가져온 후 다음을 수행하십시오.
umount /dev/sdX*
parted /dev/sdX --script mktable gpt
parted /dev/sdX --script mkpart EFI fat16 1MiB 10MiB
parted /dev/sdX --script mkpart live fat16 10MiB 3GiB
parted /dev/sdX --script mkpart persistence ext4 3GiB 100%
parted /dev/sdX --script set 1 msftdata on
parted /dev/sdX --script set 2 legacy_boot on
parted /dev/sdX --script set 2 msftdata on
mkfs.vfat -n EFI /dev/sdX1
mkfs.vfat -n LIVE /dev/sdX2
mkfs.ext4 -F -L persistence /dev/sdX3
mkdir /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso
mount /dev/sdX1 /tmp/usb-efi
mount /dev/sdX2 /tmp/usb-live
mount /dev/sdX3 /tmp/usb-persistence
mount -oro live.iso /tmp/live-iso
cp -ar /tmp/live-iso/* /tmp/usb-live
echo "/ union" > /tmp/usb-persistence/persistence.conf
grub-install --no-uefi-secure-boot --removable --target=x86_64-efi --boot-directory=/tmp/usb-live/boot/ --efi-directory=/tmp/usb-efi /dev/sdX
dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/mbr/gptmbr.bin of=/dev/sdX
syslinux --install /dev/sdX2
mv /tmp/usb-live/isolinux /tmp/usb-live/syslinux
mv /tmp/usb-live/syslinux/isolinux.bin /tmp/usb-live/syslinux/syslinux.bin
mv /tmp/usb-live/syslinux/isolinux.cfg /tmp/usb-live/syslinux/syslinux.cfg
sed --in-place 's#isolinux/splash#syslinux/splash#' /tmp/usb-live/boot/grub/grub.cfg
sed --in-place '0,/boot=live/{s/\(boot=live .*\)$/\1 persistence/}' /tmp/usb-live/boot/grub/grub.cfg /tmp/usb-live/syslinux/menu.cfg
sed --in-place '0,/boot=live/{s/\(boot=live .*\)$/\1 keyboard-layouts=de locales=en_US.UTF-8,de_DE.UTF-8/}' /tmp/usb-live/boot/grub/grub.cfg /tmp/usb-live/syslinux/menu.cfg
umount /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso
rmdir /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso
상세하고 약간의 설명과 함께
sudo
대부분의 GNU / Linux 시스템에서 높은 권한으로 다음 명령을 대부분 실행해야 합니다.
다운로드
선택한 창 관리자와 함께 데비안 라이브 ISO 이미지를 다운로드하십시오.
https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/
다운로드 한 ISO 이미지를 간단히 "live.iso"라고합니다.
대상 드라이브 결정
을 사용하여 USB 드라이브 인 장치를 찾으십시오 lsblk
. 우리는 그것을 전화 할 것입니다 /dev/sdX
.
마운트 해제
다음을 사용하여 드라이브에서 기존 파티션 마운트 해제 umount /dev/sdX*
파티션 생성
UEFI PC를 USB 드라이브에서 부팅하려면 EFI 부팅 파티션이 필요합니다. 그런 다음 원본 라이브 ISO 파일 시스템 이미지 내용을 담을 수있는 충분히 큰 파티션이 필요합니다. 해당 파티션에는 legacy_boot
플래그가 설정되어 있어야합니다 . 그런 다음 USB 드라이브의 나머지 공간을 모두 사용하여 지속성 파티션을 추가합니다. GPT 가능 파티셔닝 도구를 사용하여이를 수행 할 수 있습니다 ( legacy_boot
플래그에주의). 다음은 다음을 사용하는 예입니다 parted
.
parted /dev/sdX --script mktable gpt
parted /dev/sdX --script mkpart EFI fat16 1MiB 10MiB
parted /dev/sdX --script mkpart live fat16 10MiB 3GiB
parted /dev/sdX --script mkpart persistence ext4 3GiB 100%
parted /dev/sdX --script set 1 msftdata on
parted /dev/sdX --script set 2 legacy_boot on
parted /dev/sdX --script set 2 msftdata on
GPT 파티션 테이블과 보호 MBR 파티션 테이블이 생성됩니다.
파일 시스템 생성
EFI와 라이브 파티션에서 FAT를 원 ext4
하고 지속성 분할 persistence
을 원하며 지속성 기능이 작동 하려면 레이블이 필요합니다 .
mkfs.vfat -n EFI /dev/sdX1
mkfs.vfat -n LIVE /dev/sdX2
mkfs.ext4 -F -L persistence /dev/sdX3
리소스 장착
소스 ISO 및 대상 파티션을 임시 마운트 지점에 마운트해야합니다.
mkdir /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso
mount /dev/sdX1 /tmp/usb-efi
mount /dev/sdX2 /tmp/usb-live
mount /dev/sdX3 /tmp/usb-persistence
mount -oro live.iso /tmp/live-iso
라이브 시스템 설치
라이브 ISO 파일 시스템 컨텐츠를 라이브 파티션에 복사하십시오.
cp -ar /tmp/live-iso/* /tmp/usb-live
persistence.conf
필수 구성 파일을 사용하여 지속성 파일 시스템을 준비하십시오. 이 파일이 없으면 지속성 기능이 작동하지 않습니다.
echo "/ union" > /tmp/usb-persistence/persistence.conf
UEFI 지원을위한 Grub
UEFI 부팅 지원을 위해 grub2를 설치하십시오 ( grub-efi-amd64-bin
데비안 패키지 가 필요합니다 ). 우리는 강제 grub-install
할 수 없습니다 UEFI에게 분명히으로 일을하지 않는 보안 부팅 사용 --removable
옵션을 선택합니다.
grub-install --no-uefi-secure-boot --removable --target=x86_64-efi --boot-directory=/tmp/usb-live/boot/ --efi-directory=/tmp/usb-efi /dev/sdX
레거시 BIOS 지원을위한 Syslinux
gptmbr.bin
드라이브에 syslinux 부트 로더를 설치하십시오 (syslinux 다운로드 또는 패키지 설치 syslinux-common
). 그런 다음 syslinux를 라이브 파티션에 설치하십시오.
dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/mbr/gptmbr.bin of=/dev/sdX
syslinux --install /dev/sdX2
이소 리눅스 수정
syslinux와 함께 작동하려면 원래 라이브 ISO의 isolinux 구성을 재사용하십시오.
mv /tmp/usb-live/isolinux /tmp/usb-live/syslinux
mv /tmp/usb-live/syslinux/isolinux.bin /tmp/usb-live/syslinux/syslinux.bin
mv /tmp/usb-live/syslinux/isolinux.cfg /tmp/usb-live/syslinux/syslinux.cfg
커널 매개 변수
라이브 시스템 파일을 실제 읽기-쓰기 파일 시스템으로 복사 했으므로 grub 및 syslinux 구성을 조작 할 수 있습니다.
지속성 커널 매개 변수를 menu.cfg
및에 추가하십시오 grub.cfg
. 두 파일 모두 persistence
에서 첫 번째 줄 끝에 키워드 를 추가하십시오 boot=live
.
sed --in-place '0,/boot=live/{s/\(boot=live .*\)$/\1 persistence/}' /tmp/usb-live/boot/grub/grub.cfg /tmp/usb-live/syslinux/menu.cfg
키보드 레이아웃 커널 매개 변수를 설정하십시오. 두 파일 모두에서 첫 번째 줄 끝에 키워드를 추가하십시오 boot=live
.
sed --in-place '0,/boot=live/{s/\(boot=live .*\)$/\1 keyboard-layouts=de locales=en_US.UTF-8,de_DE.UTF-8/}' /tmp/usb-live/boot/grub/grub.cfg /tmp/usb-live/syslinux/menu.cfg
그럽 스플래시
grub 시작 이미지를 수정합니다 (선택 사항 : 다른 디렉토리로 이동).
sed --in-place 's#isolinux/splash#syslinux/splash#' /tmp/usb-live/boot/grub/grub.cfg
마운트 해제 및 정리
umount /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso
rmdir /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso
이것이 UEFI와 BIOS 모두에서 작동해야하는 이유
UEFI 모드에서 시작할 때 PC는 GPT 파티션 테이블에 정의한 FAT 파티션을 스캔합니다. 첫 번째 FAT 파티션에는 UEFI grub 부트 로더가 있으며,이 드라이브는 이동식 드라이브를 위해 UEFI에서 지정한 경로에 있습니다 (이 작업을 수행 한 --removable
스위치 grub-install
). UEFI 부팅 항목이 필요하지 않으므로 PC를 USB 드라이브에서 부팅하려고하면됩니다. 해당 grub은 grub.cfg를로드하고 메뉴를 표시하는 등의 작업을 수행하도록 구성되어 있습니다.
BIOS 모드에서 시작하고 USB 드라이브에서 부팅하도록 선택하면 PC는 USB 드라이브 gptmbr.bin
의 보호 MBR에 기록한 부트 로더 코드 를 실행합니다 . 해당 부트 로더는 legacy_boot
해당 파티션에서 플래그와 chainload syslinux 로 표시된 GPT 파티션을 찾습니다 . 그런 다음 Syslinux가 대신합니다 (load menu.cfg, 메뉴 표시 등).
암호화 된 지속성
지속성 파티션에서 일반 ext4를 사용하는 대신 먼저 LUKS로 지속성 파티션을 암호화 cryptsetup
한 다음 (을 사용하여 ) ext4를 사용하여 지속성 파티션 을 포맷 할 수 있습니다 (적절한 레이블 사용). 그러나 설명서에 나와 있듯이 라이브 시스템에는 cryptsetup
패키지 가 포함되어 있어야 합니다. 그렇지 않으면 라이브 시스템에서 암호화 된 파티션을 해독 할 수 없습니다. 즉, 사용자 정의 라이브 ISO를 먼저 구축해야합니다. 그러나 이것은이 답변의 범위를 벗어납니다.
역사
이 --no-uefi-secure-boot
옵션은 이전에 대한 호출의 일부가 아니 었습니다 grub-install
. 스틱은 나에게 잘 작동했지만 보안 부팅이 여전히 내 컴퓨터에서 비활성화되어 있어도 데비안 버스터와 함께 중지되었습니다.