64GB 멀티부팅 USB 드라이브를 만들고 싶습니다.
Windows에서 파일에 액세스하는 데 사용할 수 있도록 첫 번째 파티션을 32GB fat32 파티션으로 만들고 싶습니다. (Windows에서는 이동식 드라이브의 첫 번째 파티션만 표시됩니다.)
그런 다음 후면 파티션에 몇 개(또는 가능하다면 그 이상)의 Linux 배포판을 배치하고 싶습니다.
나는 작은 부팅 파티션(바람직하게는 syslinux)이 필요하다고 가정합니다. 하지만 첫 번째 파티션이 될 수는 없습니다.
어떻게 설정하는 것이 가장 좋나요?
멀티부팅 USB(Linux 및 Windows)를 만들기 위해 살펴본 유틸리티 중 파티션 테이블 시작 부분에 추가 파티션을 추가하는 옵션을 제공하는 유틸리티는 없습니다.
답변1
다음에서는 BIOS를 사용하여 컴퓨터를 부팅하거나 "레거시" 부팅 모드를 지원해야 합니다(호환성 지원 모듈) - 적어도 내 생각에는 EFI 시스템에 대한 경험이 없습니다.
부팅 가능한 USB 스틱 만들기시스템리눅스너:
- 파티션 생성
- 파티션에서 파일 시스템 초기화
- 파티션에 syslinux를 설치하십시오.
- syslinux 파티션을 활성으로 표시
- syslinux 설치'하드 디스크암호
이 단계를 완료한 후에는 USB 드라이브에서 부팅할 수 있어야 하며, USB 드라이브에서 부팅할 때 syslinux 부팅 프롬프트가 표시됩니다. 여기서 명령을 실행하여 더 많은 코드를 로드하고 부팅 프로세스를 계속할 수 있습니다.
시작할 때마다 긴 명령줄을 입력할 필요가 없도록 파일을 만들 수 있습니다.systemlinux.cfg명령줄을 저장하세요. 여러 개가 있을 수 있습니다.
보통도 설치됨시스템 리눅스 모듈해당 *.c32 파일을 파티션의 syslinux 디렉토리에 복사하면 이러한 모듈의 예는 다음과 같습니다.메뉴.c32,체인.c32.
샘플 이미지
사용 가능한 USB 스틱이 없었기 때문에 다음 명령을 사용하여 예시로 2GB 이미지를 만들었습니다.
dd if=/dev/zero of=example.img bs=1k count=2M
그런 다음 다음을 실행하여 루프 장치에 연결했습니다.
losetup --find --show example.img
이 명령에는 매개변수가 필요합니다.가장 큰 부분~의반지모듈은 최소한 이미지 파일의 파티션 수만큼 큰 숫자로 설정되어야 합니다.
rmmod loop
modprobe loop max_part=10
루프 모듈이 커널에 내장된 경우 다음을 지정할 수 있습니다.가장 큰 부분커널의 부팅 매개변수:
loop.max_part=10
또는 다음을 사용하여 루프 장치를 설정할 수 있습니다 kpartx
.
kpartx -av example.img
파티션의 장치 노드는 아래에서 찾을 수 있습니다./개발자/매퍼/. kpartx
예제를 사용 하고 따르려면 다음을 설정해야 합니다.개발 부분적절하게 가변적입니다.
변하기 쉬운
예를 들어 다음 변수를 설정했습니다.
# device node
dev=$(losetup --find --show example.img)
# set to e.g. /dev/mapper/loop0 when using kpartx
dev_part=${dev}
# loop devices use the letter 'p' to denote partitions (e.g. /dev/loop0p1)
# drives normally do not (e.g. /dev/sda1)
part_divider=p
# path to syslinux modules and mbr
libpath=/usr/lib/syslinux
# Path to mount point; used when e.g. files need editing
mount_point=/mnt
# The number of the partition that you use to share files with windows
files_part_nr=1
# The number of the boot partition
boot_part_nr=2
# The number of the partition that holds a linux distribution CD's content
dist_part_nr=3
예제 배포판으로 내가 선택한마이크로코어리눅스:
# Download Tiny Core's iso and set variable "isofile" to its destination
# filename
isofile=$(curl -# -OJ -w '%{filename_effective}\n' "http://tinycorelinux.net/6.x/x86/release/TinyCore-current.iso")
이것곱슬이 명령은 다음을 수행합니다.
-#
터미널에 막대로 진행률 표시-O
URL에서 파생된 이름으로 파일 쓰기-J
URL 대신 "Content-Disposition" 헤더에서 이름 파생-w
표준 출력에 파일 이름을 씁니다("isofile" 변수에 저장됩니다).
파티션 생성
막 생물 반응기
# Create an empty msdos style partition table
parted -s "${dev}" mktable msdos
# Create two primary partitions (i.e. sdb1, sdb2)
# one holding your files and one for syslinux
parted -s "${dev}" mkpart primary fat32 0MB 800MB
parted -s "${dev}" mkpart primary ext2 800MB 900MB
GPT
# Create an empty gpt partition table
parted -s "${dev}" mktable gpt
# Create two primary partitions (i.e. sdb1, sdb2)
# one holding your files and one for syslinux
parted -s "${dev}" mkpart files fat32 0MB 800MB
parted -s "${dev}" mkpart boot ext2 800MB 900MB
파일 시스템 초기화
# DATA
mkfs.vfat "${dev_part}${part_divider}${files_part_nr}"
# BOOT
mkfs.ext2 "${dev_part}${part_divider}${boot_part_nr}"
파티션에 syslinux(extlinux)를 설치합니다.
부팅 파티션을 마운트하고 다음을 실행합니다 extlinux
.
mount "${dev_part}${part_divider}${boot_part_nr}" "${mount_point}"
mkdir "${mount_point}/syslinux"
extlinux -i "${mount_point}/syslinux"
umount "${mount_point}"
syslinux용 파일을 저장하기 위해 파티션의 다른 디렉토리를 선택할 수 있습니다. 파일을 루트 디렉토리에 배치하십시오. extlinux -i "${mount_point}"
;/시작하다: extlinux -i "${mount_point}/boot"
.
그리고시스템리눅스명령은 다음과 같습니다.아니요부팅 파티션 설치):
syslinux -i -d /syslinux "${dev_part}${part_divider}${boot_part_nr}"
syslinux 파티션을 활성으로 표시
기본 syslinux MBR 부트로더 코드는 활성으로 표시된 파티션을 검색하여 제어권을 전달합니다.볼륨 부트 레코드짐.
막 생물 반응기
# Mark boot partition as active (MBR)
parted "${dev}" set "${boot_part_nr}" boot on
GPT
# Mark boot partition as active (GPT)
parted "${dev}" set "${boot_part_nr}" legacy_boot on
당신이 사용하는 경우gdiskx
드라이브를 분할하려면 해당 드라이브를 클릭하여 "속성 설정"( ) 을 활성화하여 "추가 기능"을 활성화해야 합니다 a
.
syslinux MBR 코드 설치
dd conv=notrunc bs=440 count=1 if="${libpath}/mbr/mbr.bin" of="${dev}"
GPT 파티션 드라이브의 경우 다음을 사용합니다.gptmbr 파일바꾸다부팅 파일 저장소.
대체 로더도 있습니다대체 파일 저장소활성으로 표시된 파티션을 검색하는 대신 다음과 같이 지정된 파티션을 사용합니다.
print '\x2' | cat ${libpath}/mbr/altmbr.bin - | dd conv=notrunc bs=440 count=1 iflag=fullblock of=${dev}
전원 켜짐
이것을 추가하면 장치에서 부팅하고 syslinux 부팅 프롬프트를 받을 수 있습니다.
qemu-system-i386 -drive file="${dev}",format=raw
syslinux는 동일한 파티션에서만 파일을 로드할 수 있으므로 아직 운영 체제의 부팅 프로세스를 계속할 수 없습니다.
체인 로딩을 통해 Linux 배포판 로딩
파티션 생성
다른 파티션을 생성합니다(MBR 유형 파티션의 경우).
parted "${dev}" mkpart primary ext2 900MB 100%
또는 (GPT의 경우) 다음을 사용하십시오.
parted "${dev}" mkpart distribution ext2 900MB 95%
그런 다음 파일 시스템을 초기화합니다.
mkfs.ext2 "${dev_part}${part_divider}${dist_part_nr}"
체인 로딩
시스템리눅스'체인.c32모듈을 사용하면 체인 로드를 할 수 있습니다.볼륨 부트 레코드로드된 파티션의 파일만 로드할 수 있는 syslinux 제한을 해결하는 데 사용할 수 있는 또 다른 파티션입니다. 이 방법을 사용하면 ISO 이미지에 포함된 syslinux/isolinux 구성 파일을 재사용할 수도 있습니다.
사용할 수 있도록체인.c32해당 모듈과 해당 종속 항목을 복사해야 합니다(libcom32.c32그리고libutil.c32) 부팅 파티션의 syslinux 디렉터리로 이동합니다.
mount "${dev_part}${part_divider}${boot_part_nr}" ${mount_point}
cp "${libpath}/modules/bios/libcom32.c32" ${mount_point}syslinux/
cp "${libpath}/modules/bios/chain.c32" ${mount_point}/syslinux
cp "${libpath}/modules/bios/libutil.c32" ${mount_point}/syslinux
umount ${mount_point}
다음으로 ISO 이미지의 압축을 풀고 이름을 바꿉니다.isolinux.cfgsyslinux가 예상하는 이름으로:systemlinux.cfg
mount "${dev_part}${part_divider}${dist_part_nr}" "${mount_point}"
7z x -o"${mount_point}" "${isofile}"
mv "${mount_point}/boot/isolinux/isolinux.cfg" "${mount_point}/boot/isolinux/syslinux.cfg"
청소기에서 이름을 바꾸는 것도 가능하다는 것을 알았습니다isolinux/폴더시스템리눅스/, 꼭 필요한 것은 아니지만 몇 가지 불필요한 파일도 삭제했습니다.
mv "${mount_point}/boot/isolinux" "${mount_point}/boot/syslinux"
rm "${mount_point}/boot/syslinux/isolinux.bin"
rm -r "${mount_point}/[BOOT]"
TinyCore의 iso가 누락된 것 같습니다.libutil.c32(필요메뉴.c32):
cp ${libpath}/modules/bios/libutil.c32 "${mount_point}/boot/syslinux"
파티션에 부트로더를 설치하고 제거합니다.
extlinux -i ${mount_point}/boot/syslinux
umount ${mount_point}
전원 켜짐
지금 이미지를 부팅하면
qemu-system-i386 -drive file=${dev},format=raw
그리고 syslinux 부팅 프롬프트에 다음을 입력하십시오:
chain.c32 hd0 3
당신은 자격이마이크로코어리눅스시스리눅스 메뉴.
구성
부팅 파티션을 마운트하고 생성systemlinux.cfg문서:
mount ${dev_part}${part_divider}${boot_part_nr} ${mount_point}
cat >${mount_point}/syslinux/syslinux.cfg <<EOF
LABEL tc
MENU LABEL Boot TinyCore
COM32 chain.c32
APPEND hd0 3
umount ${mount_point}
GPT 형식을 사용하여 파티션된 디스크에서는 파티션의 GUID 또는 해당 레이블을 사용 하여 guid=
또는label=
체인.c32:
APPEND label=<LABEL>
또는
APPEND guid=<GUID>
blkid
다음을 사용하여 둘 다 찾을 수 있습니다 .상표그리고가이드.
GRUB2
GPT
GPT의 경우 grub2에는 일부 부팅 코드를 저장하기 위한 추가 파티션이 필요합니다. parted
다음 명령을 사용하여 만들 수 있습니다 .
parted ${dev} grub_boot 95% 100%
parted ${dev} set bios_grub on
gdisk
당신의 선택 으로EF02파티션 유형.
그럽에 따르면정보문서의 최소 크기는 31KiB여야 합니다.
그럽 설치
mount ${dev_part}${part_divider}${boot_part_nr} ${mount_point}
# use --modules="part_gpt" for a gpt partition drive
grub-install -d ${mount_point} --modules="part_msdos ext2"
umount ${mount_point}
그것이 절대적으로 필요한지는 모르겠습니다 --modules
. 적어도 루프 장치를 사용하면 grub은 그것 없이는 파일에 액세스할 수 없습니다.
체인 로딩
grub 부팅 프롬프트에 다음을 입력하세요.
insmod chain
set root=(hd0,3)
chainloader +1
boot
넌 봐야 해마이크로코어리눅스syslinux 메뉴로 다시 들어갑니다.
구성
~을 위한마이크로코어리눅스예에서는 부팅 파티션의 /grub/grub.cfg에 다음 내용을 넣습니다.
menuentry "Tiny Core Linux" {
insmod chain
set root=(hd0,3)
chainloader +1
}
드라이브가 나열되는 순서에 관계없이 UUID를 사용하여 루트를 설정할 수 있습니다. . . 교체 set root
:
search --set root --fs-uuid <UUID>
UUID를 얻는 데 사용됩니다 blkid
.
ISO 시작
일부 배포판의 라이브 CD는 grub의 loop
기능과 결합된 ISO 이미지에서 파일 시스템을 마운트할 수 있습니다. 예를 들어 다음을 사용합니다.아치리눅스) 라이브 CD):
isofile=archlinux-2015.11.01-dual.iso
mount ${dev_part}${part_divider}${dist_part_nr} ${mount_point}
cp ${isofile} ${mount_point}
umount ${mount_point}
그런 다음 다음을 사용하십시오.그럽 구성 파일:
menuentry "Archlinux LiveCD" {
insmod loopback
set isofile="archlinux-2015.11.01-dual.iso"
search --set isodrive --file /$isofile
probe --fs-uuid --set uuid $isodrive
loopback loop ($isodrive)/$isofile
set root=loop
echo "Loading kernel vmlinuz"
linux /arch/boot/i686/vmlinuz img_loop=$isofile img_dev=/dev/disk/by-uuid/$uuid
echo "Loading initial ramdisk archiso.img"
initrd /arch/boot/i686/archiso.img
}
Archlinux ISO에 필요한 부팅 매개변수를 찾았습니다.아키소 자식 트리.
답변2
나는 당신이 찾고 있는 도구가 다음과 같다고 믿습니다.유미. 64G USB 드라이브의 설정은 귀하가 언급한 것과 거의 동일합니다. 라이브 릴리스로 할지 전체 설치로 할지 지정하지 않았지만 이것은 내 개인 설정입니다.
YUMI가 지정하는 형식을 사용하여 포맷된 64G USB 플래시 드라이브(잊었지만 Fat32라고 생각합니다. 하지만 "즉시" 작동하기 때문에 중요하지 않습니다.) YUMI에서는 여러 Linux ISO를 선택할 수 있으며, 이를 통해 부팅 시 선택한 ISO에서 라이브 부팅을 할 수 있습니다.
그러나 한 가지 주의할 점은 USB 드라이브가 현재 YUMI가 좋아하는 형식이 아닌 경우~ 할 것이다이에 따라 드라이브를 다시 포맷해야 하므로 첫 번째 Linux 배포판을 설치하기 위해 드라이브를 다시 포맷하기 전에 현재 드라이브에 중요한 파일이 저장되어 있지 않은지 확인하세요.
multiboot
YUMI는 YUMI와 관련된 모든 것과 Linux 배포판을 실행하는 데 필요한 모든 것을 포함하는 USB 드라이브의 루트에 있는 YUMI라는 디렉터리에 이러한 각 배포판을 자동으로 저장합니다 . 이 USB 드라이브의 나머지 부분을 사용하여 원하는 것을 저장할 수 있습니다.
개인적으로 저는 중요한 도구와 휴대용 응용 프로그램이 포함된 win, osx 및 nix 폴더를 동일한 USB 드라이브의 멀티부트 디렉터리 옆에 위치해 있습니다. OS를 정상적으로 부팅한 다음 이 USB 드라이브를 연결하면 모든 파일이 작동합니다.
그러나 Windows 시스템을 사용하는 경우 해당 USB 플래시 드라이브에서 YUMI 부트로더(GRUB의 사용자 정의 형식이라고 생각함)로 직접 부팅할 수 있으며 Distros를 설치한 모든 라이브 부트로더 중에서 선택할 수 있습니다. 멀티부트 디렉터리에 있습니다. Windows를 정상적으로 부팅하는 옵션도 제공하는 것 같습니다. 아니면 그냥 종료 옵션일 뿐이고 재부팅한 다음 내부 드라이브에서 Windows를 정상적으로 부팅할 수도 있습니다.
재부팅 후에도 파일을 유지하고 전체 설치처럼 Linux를 실행하려면 YUMI가 드라이브에 별도의 정적 파티션을 생성할 수 있는 옵션이 있다고 생각하지만 제한적이라고 주장합니다.오직우분투로. 데비안에서도 작동할 수 있지만 저는 이 접근 방식을 시도해 본 적이 없습니다. 그렇다면 이 특정 기능과 여기에 포함된 기능을 완전히 혼동했을 수도 있습니다.UNet 런처, 내가 마지막으로 사용한 것은 YUMI가 지원하는 모든 다중 부팅 옵션을 지원하지 않습니다. 개인적으로 유미는훨씬 낫다UNetbootin보다.
그러나 YUMI를 사용할 때 한 가지 단점이 발생했다는 사실을 알아야 합니다.
한때 YUMI를 통해 Backtrack, Knoppix, Crunchbang 및 Linux Mint의 라이브 버전을 설치했습니다. 몇 달 후 저는 이 USB를 YUMI에 로드하고 Backtrack을 제거하고 Kali Linux로 교체하고 싶었지만 YUMI는 부트로더를 업그레이드했기 때문에 다른 배포판을 설치하려면 다시 포맷해야 한다고 말했습니다. 드라이브를 고정하고 처음부터 다시 시작합니다. 새 부트로더를 사용한 설치는 이전 부트로더를 사용하여 설치한 이전 배포판과 호환되지 않았습니다.
이것은 큰 문제는 아니지만 tar
일반 파일의 내용에 간섭을 일으키고 해당 파일을 USB에서 옮긴 다음 YUMI를 통해 유지하려는 다른 모든 Live ISO를 다시 마운트하게 됩니다. 그러나 재부팅 후 파일을 저장하기 위해 별도의 파티션을 갖고 싶다면(내가 말했듯이 YUMI가 아니라 UNetbootin의 기능을 혼동했을 수도 있음) 이는 큰 문제가 될 가능성이 높습니다.
즉, 귀하의 구체적인 질문으로 볼 때 YUMI는 귀하가 달성하려는 목표에 충분히 유익해야 한다고 생각합니다. 이것은 과거에 나에게 도움이 되었던 훌륭한 도구입니다.
답변3
처음에 추가 부팅 파티션을 생성하는 도구는 Windows에서 첫 번째 파티션만 표시하므로 Windows에 문제를 일으킬 수 있습니다. 그러나 syslinux 파일을 FAT32 파티션의 루트 디렉터리에 배치해도 괜찮다면 거기에 syslinux를 설치하면 됩니다.
이것이 내가하려는 일입니다.
- 필요에 따라 드라이브를 분할합니다. 첫 번째 파티션은 32GB FAT32입니다.
- syslinux를 사용하여 즐겨 사용하는 Linux 배포판을 하나씩 설치하세요.
- 각 배포판을 설치한 후 syslinux 구성 파일을 어딘가에 백업하십시오.
완료되면 배포를 시작하기 전에 올바른 구성 파일을 설치하여 마지막 배포를 쉽게 시작할 수 있습니다. 그럼 당신은 만들어야합니다시스템 리눅스 메뉴프로필 및 체인 백업 구성에 설치한 각 배포를 시작합니다.
답변4
최신 하드웨어(2007 이상)에서 USB 플래시 드라이브는 특별한 것이 아닙니다(다른 하드 드라이브일 뿐입니다). 따라서 Windows 설치 디스크를 사용하여 일반 "소형 하드 드라이브(MBR)"로 포맷할 수 있습니다. 첫 번째 32GB 기본 파티션에 Windows를 설치할 수 있습니다(지방이 실제로 해당 크기에 맞지 않으므로 NTFS를 사용할 수 있음). 그런 다음 확장 파티션을 추가하고 12GB 청크로 분할한 다음 평소처럼 Linux를 설치할 수 있습니다. 모든 배포판에서 공유되고 마운트 가능한 /home 파티션을 사용할 수 있으며 동일한 UID/GUID를 재활용하여 홈 디렉터리를 이식 가능하게 만들 수 있습니다. Windows와 Linux 모두에서 모든 SSD 최적화가 활성화되어 있고 썸 드라이브가 완전히 채워지지 않았는지 확인하세요.