無法為 Arch linux 創建可啟動(實時)USB 快閃記憶體
我創建了一個用於安裝 Arch 的可啟動 USB。我是通過以下方式做到的:
sudo dd if=/path_to_arch_.iso of=/dev/sdX
但是當我嘗試從這個 USB 快閃記憶體啟動時,我失敗了。沒有錯誤,它只是無法從它啟動。我最近從arch linux官方網站下載了iso文件,所以它應該是最新的。以前我能夠從 USB 快閃記憶體成功安裝 mint、elementary 和 ubuntu。
它阻止我以以下方式啟動:
選擇“從 USB 啟動”後,我看到黑屏 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
上面的最後一個提示,您將獲得所有可用分區類型的列表,但您需要的是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 系統分區上,您將始終可以訪問可引導的拱形實時光碟。