아치 리눅스용 부팅 가능한(라이브) USB 플래시 드라이브를 생성할 수 없습니다

아치 리눅스용 부팅 가능한(라이브) USB 플래시 드라이브를 생성할 수 없습니다

Arch를 설치할 부팅 가능한 USB를 만들었습니다. 나는 다음을 통해 이 작업을 수행했습니다.

sudo dd if=/path_to_arch_.iso of=/dev/sdX

하지만 이 USB 플래시 드라이브로 부팅하려고 하면 실패합니다. 오류가 없으며 부팅할 수 없습니다. 최근 아치리눅스 공식 홈페이지에서 iso 파일을 다운로드 받았으니 최신 버전일 겁니다. 이전에는 USB 플래시 드라이브에서 mint, Elementary 및 Ubuntu를 성공적으로 설치할 수 있었습니다.

다음을 통해 시작할 수 없습니다.

"USB에서 부팅"을 선택한 후 1초 동안 검은색 화면이 나타났다가 임시 부팅 장치를 선택해야 하는 메뉴로 돌아갑니다. 다시 해보니 그 이야기가 반복되었습니다.

이유는 무엇입니까?

답변1

그래서 제가 직접 하는 것처럼 이 글을 씁니다. 방금 최신 아치 iso를 다운로드하여 설치했습니다.

du archlinux-2014.04.01-dual.iso
535M    archlinux-2014.04.01-dual.iso

mkdir -p /mnt/iso
mount ./arch*iso $_
mount: /dev/loop0 is write-protected, mounting read-only

ls $_/arch
boot  x86_64  checksum.i686.md5    pkglist.i686.txt
i686  aitab   checksum.x86_64.md5  pkglist.x86_64.txt

거기에 있는 것 중 대부분은 필요하지 않습니다. 또는 더 나은 방법은 절반만 필요할 수도 있습니다. 다음은 32비트 및 64비트 컴퓨터용 이미지 두 개입니다.

ls $_/x86_64
root-image.fs.sfs

du $_
230M    /mnt/iso/arch/x86_64

Arch를 사용한다면 이미 64비트 시스템을 보유하고 있으므로 sfs위 디렉토리에 있는 이미지 파일이 대부분의 요구 사항을 충족할 것입니다. 하지만 32비트 컴퓨터라면 686해당 파일을 x86-64지금부터 찾을 파일로 바꾸세요.

mkdir -p /mnt/img
mount /mnt/iso/EFI/archiso/efiboot.img $_
cd $_ ; ls
EFI  loader

cd EFI ; ls
archiso  boot  shellx64_v1.efi  shellx64_v2.efi

ls ./*/*
./archiso/archiso.img  ./archiso/vmlinuz.efi  
./boot/HashTool.efi  ./boot/bootx64.efi  ./boot/loader.efi

따라서 hybrid .iso이미지는 이미지 표준을 전복 iso하고 가짜 파티션과 같은 것을 생성하여 작동합니다. 이에 대해 잘 모르지만 UEFI 시스템이 있는 경우 필요한 커널 및 initramfs 이미지가 이 efiboot.img파일에 있습니다. 사실 여기에서 필요한 것을 꺼내고 나면 제가 지적한 다른 파일들 외에는 거의 아무것도 필요하지 않을 것입니다. 이제 gdisk대상 efi 시스템 파티션 준비를 시작하겠습니다. 그것은 약간 케이크 산책과 같습니다.

글쎄요, 제겐 썸드라이브가 없어서 이렇게 하려고 합니다:

fallocate --l $((650*1024*1024)) /tmp/bootimage
losetup -f --show -P $_
/dev/loop2

을 사용하고 싶지 않거나 fallocate전체 losetup공개에 관심이 있다는 것을 보여주는 것뿐입니다. 하지만 그 외에 내가 하고 있는 일은 당신이 해야 할 일이다. 예를 들어, 해당 디스크의 일부 초기 블록을 덮어썼을 수 있으므로 해당 블록을 지워야 합니다.

dd ibs=4M count=1 if=/dev/zero of=/dev/loop2

이제 USB 디스크의 모든 장치 파일을 내 것으로 교체해 보겠습니다 gdisk./dev/.../dev/loop2

gdisk /dev/loop2
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present
Creating new GPT entries.Command (? for help): ?

열면 gdisk위와 같은 내용이 나오는데, ?메뉴를 클릭하세요.

b       back up GPT data to a file
c       change a partition's name
d       delete a partition
i       show detailed information on a partition
l       list known partition types
n       add a new partition
o       create a new empty GUID partition table (GPT)
p       print the partition table
q       quit without saving changes
r       recovery and transformation options (experts only)
s       sort partitions
t       change a partition's type code
v       verify disk
w       write table to disk and exit
x       extra functionality (experts only)
?       print this menu
Command (? for help): o

새로운 빈 파티션 테이블이 필요합니다. 그건 o.

여기에 동의해야 합니다.

This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): y

다음으로 파티션이 필요합니다. 아래 프롬프트에서는 입력된 키를 볼 수 없습니다. 이는 방금 ENTER기본값에 동의하기 위해 클릭했기 때문입니다.

Command (? for help): n
Partition number (1-128, default 1):
First sector (34-1331166, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-1331166, default = 1331166) or {+-}size{KMGTP}: 500M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): ef00

위의 마지막 프롬프트를 클릭하면 L사용 가능한 모든 파티션 유형 목록이 표시되지만 ef00필요한 유형은 efi 시스템 파티션입니다. 거의 완료되었습니다.

새 파티션을 살펴보고 p이를 따라가면( w원하는 경우) 보류 중인 변경 사항이 기록됩니다.

Command (? for help): p
Disk /dev/loop2: 1331200 sectors, 650.0 MiB
Logical sector size: 512 bytes
Disk identifier (GUID): E5D5A761-6AFA-48C6-9BA5-CED0DA2F62CA
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 1331166
Partitions will be aligned on 2048-sector boundaries
Total free space is 309180 sectors (151.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         1024000   499.0 MiB   EF00  EFI System

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/loop2.
The operation has completed successfully.

저는 여러분에게 부트로더가 있다고 가정하고 있지만 USB 디스크에 부트로더를 넣을 수도 있습니다. 이는 매우 간단합니다. 사실, 저는 그것을 설정하는 방법을 보여드릴 것입니다. rEFInd이것은 실제로 오래된 프로젝트의 부활이며 에 의해 작성되었습니다 gdisk.

refind.bin.*.zip당신이 찾을 것을 얻으십시오여기디스크에 추출하고 아치 이미지를 복사하면 완료되었습니다.

사실 먼저 파일 시스템이 꼭 필요합니다. 내가 이 글을 쓰는 동안 실제로 이 일을 하고 있어서 기쁘다. 이것을 놓치면 확실히 거래 중단이 될 것이다.

mkfs.vfat -n ESP /dev/loop2
mkfs.fat 3.0.26 (2014-03-07)
Loop device does not match a floppy size, using default hd params

다시 말하지만, 이를 무시 loop하고 자신의 장치를 사용하십시오. -n파티션의 이름을 지정하십시오. 나는 를 사용하는 것을 좋아합니다 ESP.

알겠습니다. 이제 rEFInd:

mkdir /tmp/refind
unzip ~/Downloads/refind-bin-0.7.9.zip -d $_  
...
$_/ref*/install.sh --usedefault /dev/loop2
Not running as root; attempting to elevate privileges via sudo....
Installing rEFInd on Linux....
UnmountEsp = 1
Copied rEFInd binary files
Copying sample configuration file as refind.conf; edit this file to configure
rEFInd.
Installation has completed successfully.
Unmounting install dir

mkdir -p /mnt/bootdisk
mount /dev/loop2 $_

mkdir /mnt/bootdisk/EFI/arch_linux
cp /mnt/img/EFI/archiso/* -t $_
cp -R /mnt/iso/arch/*64* $_
cp -R /mnt/iso/arch/aitab $_
ls -lR $_
/mnt/bootdisk/EFI/arch_linux:
total 23328
drwxr-xr-x 2 root root     4096 Apr 22 02:09 x86_64
-rwxr-xr-x 1 root root      228 Apr 22 02:09 aitab
-rwxr-xr-x 1 root root 19882780 Apr 22 02:08 archiso.img
-rwxr-xr-x 1 root root       99 Apr 22 02:09 checksum.x86_64.md5
-rwxr-xr-x 1 root root     5142 Apr 22 02:09 pkglist.x86_64.txt
-rwxr-xr-x 1 root root  3979248 Apr 22 02:08 vmlinuz.efi

/mnt/bootdisk/EFI/arch_linux/x86_64:
total 234812
-rwxr-xr-x 1 root root 240447488 Apr 22 02:09 root-image.fs.sfs

거의 그 정도입니다. 설정을 좀 하셔야 합니다 rEFInd...

echo '"ArchISO" "archisolabel=ESP archisobasedir=/EFI/arch_linux \
    copytoram rootwait initrd=EFI\arch_linux\archiso.img"'\
    >$_/refind_linux.conf

그러면 부팅 가능한 시스템이 제공됩니다. 주요 refind.conf내용을 주의 깊게 읽어 보십시오 ../BOOT. 매우 잘 검토되었으며 잘 문서화되어 있습니다. 너도 가고 싶구나Rodsbooks.com거기에 있는 문서를 읽어보세요.

마지막 요점. 시스템 하드 드라이브의 EFI 시스템 파티션에 동일한 콘텐츠를 배치하면 항상 부팅 가능한 Arch Live 디스크에 액세스할 수 있습니다.

답변2

올바른 방법은 (위에서 언급했듯이아치 리눅스 위키)

# dd bs=4M if=/path_to_arch_.iso of=/dev/sdX && sync

사용 GNU dd.

답변3

아치 리눅스를 사용하여 라이브 USB를 만드는 방법을 알아내는 데 시간이 걸렸습니다. 해결책은 간단합니다. 방금 썼습니다 :

$ dd if=/adress/of/iso-file of=/adress/of/usb-stick/sda/not/sdaY/don't/write/the/partition/number

나는 gnome 디스크 유틸리티와 gparted를 정기적으로 사용합니다. USB 플래시 드라이브의 파티션 테이블을 지우면 됩니다.

흥미로운 사실이 중요합니다. dd가 100-400개의 파일로만 끝나면 뭔가 잘못된 것입니다. 때로는 시간이 더 걸릴 때도 있지만 그렇게 오래 기다리고 싶지 않아서 포기합니다. 그러다가 끝날 때까지 한 번만 했어요. 약 20분 정도 걸렸을 거라 확신하는데 갑자기 dd에서 약 10000개의 파일이 올바르게 전송되었음을 표시했습니다. 나는 스틱을 시작했고 모든 것이 잘 작동했습니다. 파일 개수는 모르겠지만, 저처럼 하시고(보시다시피 저는 bs=part를 사용하지 않았습니다) 30분 정도 기다리시면 모든 게 괜찮을 것 같아요.

USB 3.0 메모리 스틱이 정말 도움이 될 수 있습니다.

관련 정보