Não é possível criar um flash USB inicializável (ao vivo) para arch linux

6

Eu criei um usb inicializável a partir do qual eu iria instalar o Arch. Eu fiz isso da seguinte maneira:

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

Mas quando eu tentei arrancar a partir deste flash USB, eu falhei. Não houve erro, apenas não pôde arrancar a partir dele. Eu baixei o arquivo iso do site arch linux oficial recentemente, então ele deve estar atualizado. Anteriormente consegui instalar o mint, elementary e o ubuntu a partir do flash usb com sucesso.

Isso me impede de inicializar da seguinte maneira:

Depois de selecionar "boot from usb", fui mostrada uma tela preta por 1 segundo e retornei ao menu onde devo escolher um dispositivo de inicialização temporário. Quando fiz isso de novo, a história se repetiu.

Qual pode ser a causa?

    
por アレックス 22.04.2014 / 06:17

3 respostas

4

Então, estou escrevendo isso como faço sozinho. Acabei de baixar o iso mais recente do arco e montá-lo:

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

Você não precisa mais disso lá em cima. Ou é melhor dizer que você provavelmente só precisa de metade disso. Há duas imagens aqui - uma para cada uma das máquinas de 32 e 64 bits:

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

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

Estou disposto a apostar que você tem uma máquina de 64 bits se estiver usando o Arch e, portanto, o arquivo de imagem sfs no diretório acima faz com que a maior parte do que você precisa. Ainda assim, se for uma máquina de 32 bits, basta seguir adiante, mas, a partir de agora, substitua os arquivos 686 do x86-64 que será segmentação.

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

Portanto, a imagem hybrid .iso funciona subvertendo o padrão de imagem iso e criando algo como uma partição falsa ou algo assim. Eu realmente não sei muito sobre isso, mas se você tem um sistema UEFI, o kernel e a imagem initramfs que você precisa estão no arquivo efiboot.img . De fato, uma vez que você extraia o que você precisa daqui, você precisa de pouco mais do que o outro arquivo que eu já mostrei. Então, agora eu vou entrar em gdisk e nós vamos preparar nossa partição de sistema de efi alvo. É uma espécie de caminhada de bolo.

OK, eu acho que não tenho um pen drive à mão, então vou fazer assim:

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

Você não quer usar fallocate ou losetup . Só estou mostrando que sou do interesse da divulgação completa. Mas, do contrário, o que estou fazendo é o que você precisa fazer. Por exemplo, como você provavelmente escreveu alguns blocos iniciais desse disco, precisamos excluí-los:

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

Agora entramos em gdisk . Substitua qualquer arquivo de dispositivo /dev/... em que seu disco usb esteja em meu /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): ?

Quando você abrir gdisk , verá algo parecido com o acima, vá em frente e clique em ? no menu:

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

Precisamos de uma nova tabela de partições vazia. Isso é o .

Você precisará concordar aqui:

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

Em seguida, precisamos de uma partição. Nos prompts abaixo, em que você não vê a chave digitada, é porque acabei de acessar ENTER para concordar com o padrão:

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

Se você pressionar L no último prompt acima, você obterá uma lista de todos os tipos de partição disponíveis, mas o que você precisa é digitar ef00 para a partição do sistema efi. E você está quase terminando.

Dê uma olhada na sua nova partição com p e, em seguida, siga com w , se você gostar do que aparenta para escrever suas alterações pendentes:

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.

Eu suponho que você tenha um gerenciador de inicialização, mas você pode também colocar um no seu disco USB também, e isso é realmente fácil. Na verdade, mostrarei como configurá-lo com rEFInd , que foi na verdade uma revitalização de um projeto antigo e escrito e mantido pelo mesmo cara que escreveu gdisk .

Obtenha o refind.bin.*.zip para encontrar aqui e vamos descompactá-lo com o nosso disco, em seguida, copie a imagem do arco e estamos a fazer.

Na verdade, definitivamente precisamos de um sistema de arquivos primeiro. Fico feliz que eu esteja realmente fazendo isso enquanto escrevo - faltando que teria sido um problema, com certeza.

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

Novamente, ignore o material sobre loop e use seu próprio dispositivo. -n nomeia a partição. Eu gosto de usar ESP .

Ok, agora para 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

Isso quase faz isso. Você precisará configurar rEFInd um pouco ...

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

Isso deve fornecer um sistema inicializável. Por favor, olhe através do principal refind.conf in ../BOOT - é muito bem comentado e praticamente se documenta. Você também vai querer ir para rodsbooks.com e ler os documentos lá.

Uma última nota embora. Se você tivesse que colocar as mesmas coisas no disco rígido do seu sistema na partição do sistema EFI, você sempre teria acesso ao disco de boot do live arch.

    
por 22.04.2014 / 10:02
3

A maneira correta de fazer isso é (como descrito em Wiki do Arch Linux )

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

usando GNU dd .

    
por 22.04.2014 / 11:33
0

Demorei um pouco para entender como criar um live-usb com o arch linux. A solução é simples. Eu acabei de escrever:

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

Eu trabalhei muito com o utilitário de disco gnome e gparted. Não há problema em limpar a tabela de partições do dispositivo USB.

Um fato interessante é importante. Se dd termina com apenas 100-400 arquivos, então algo deu errado. Às vezes levava mais tempo, mas abortei porque não queria esperar tanto. Então eu fiz uma vez até terminar. Tenho certeza que demorou cerca de 20 minutos e, de repente, dd aparece com cerca de 10000 arquivos corretamente transmitidos. Eu inicializei o bastão e tudo funciona bem. Eu não sabia da quantidade de arquivos e acho que se você fizer da maneira que eu fiz (como você pode ver eu não usei o bs = part) e esperar 30 minutos, tudo ficará bem.

Um stick USB 3.0 realmente pode ajudar você.

    
por 22.06.2015 / 04:16