无法为 arch linux 创建可启动(实时)USB 闪存

无法为 arch linux 创建可启动(实时)USB 闪存

我创建了一个可启动 USB,我将从中安装 Arch。我通过以下方式做到了这一点:

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

但是当我尝试从这个 USB 闪存启动时,我失败了。没有错误,只是无法从中启动。我最近从 arch linux 官方网站下载了 iso 文件,所以它应该是最新的。以前我能够从 USB 闪存成功安装 mint、elementary 和 ubuntu。

它阻止我通过以下方式启动:

选择“从 USB 启动”后,我看到黑屏 1 秒钟,然后返回到菜单,我必须在其中选择临时启动设备。当我再次这样做时,故事又重演了。

可能是什么原因?

答案1

所以我写这篇文章就像我自己做的一样。我刚刚下载了最新的 arch 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

现在我们进入gdisk.将/dev/...您的 USB 磁盘上的任何设备文件替换为我的/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上面的最后一个提示,您将获得所有可用分区类型的列表,但您需要的是ef00efi 系统分区的类型。你快完成了。

查看您的新分区,然后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

正确的方法是(如上所述Arch Linux 维基

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

使用GNU dd

答案3

我花了一段时间才了解如何使用 arch linux 创建 live-usb。解决方案很简单。我刚刚写道:

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

我经常使用 gnome 磁盘实用程序和 gparted。清除U盘的分区表就可以了。

一个有趣的事实很重要。如果 dd 仅以 100-400 个文件结束,则表示出现问题。有时需要更多时间,但我放弃了,因为我不想等那么久。然后我就做了一次,直到完成。我确定大约花了 20 分钟,然后 dd 突然显示大约 10000 个文件已正确传输。我启动了棒子,一切正常。我不知道文件的数量,我想如果你按照我的方式做(如你所见,我没有使用 bs=part)并等待大约 30 分钟,一切都应该没问题。

USB 3.0 记忆棒确实可以帮助您。

相关内容