Vì vậy, tôi đang viết điều này khi tôi làm điều đó bản thân mình. Tôi vừa tải về iso vòm mới nhất và gắn nó:
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
Bạn không cần hầu hết những thứ đó. Hoặc, tốt hơn là nói bạn có thể chỉ cần một nửa số đó. Có hai hình ảnh ở đây - mỗi hình cho máy 32 và 64 bit:
ls $_/x86_64
root-image.fs.sfs
du $_
230M /mnt/iso/arch/x86_64
Tôi sẵn sàng cá rằng bạn đã có một máy 64 bit nếu bạn đang sử dụng Arch và vì vậy sfs
tệp hình ảnh trong thư mục trên tạo ra phần lớn những gì bạn cần. Tuy nhiên, nếu đó là một máy 32 bit, hãy làm theo nhưng từ đây trở đi, thay thế các 686
tệp cho x86-64
mục tiêu tôi sẽ nhắm mục tiêu.
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
Vì vậy, hybrid .iso
hình ảnh hoạt động bằng cách phá vỡ iso
tiêu chuẩn hình ảnh và tạo ra một cái gì đó như phân vùng giả hoặc một cái gì đó. Tôi thực sự không biết quá nhiều về điều đó nhưng nếu bạn có hệ thống UEFI, hình ảnh kernel và initramfs bạn sẽ cần có trong efiboot.img
tệp. Trong thực tế, một khi bạn lấy những gì bạn cần ra khỏi đây, bạn cần ít hơn những tập tin khác mà tôi đã chỉ ra. Vì vậy, bây giờ tôi sẽ tham gia gdisk
và chúng tôi sẽ chuẩn bị phân vùng hệ thống efi mục tiêu của chúng tôi. Đó là một loại bánh đi bộ.
OK, tôi đoán tôi không có ổ ngón tay cái tiện dụng nên tôi sẽ làm như thế này:
fallocate --l $((650*1024*1024)) /tmp/bootimage
losetup -f --show -P $_
/dev/loop2
Bạn không muốn sử dụng fallocate
hoặc losetup
tôi chỉ cho bạn thấy rằng tôi quan tâm đến việc tiết lộ đầy đủ. Nhưng, nếu không, những gì tôi đang làm là những gì bạn cần làm. Chẳng hạn, vì bạn có thể đã viết qua một số khối rất sớm trên đĩa đó, chúng tôi cần xóa chúng:
dd ibs=4M count=1 if=/dev/zero of=/dev/loop2
Bây giờ chúng tôi nhận được vào gdisk
. Thay thế bất cứ /dev/...
tập tin thiết bị nào mà đĩa usb của bạn được bật cho tôi /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): ?
Khi bạn mở, gdisk
bạn sẽ thấy một cái gì đó giống như ở trên và tiếp tục nhấn ?
vào 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
Chúng ta cần một bảng phân vùng trống mới. Đó là o
.
Bạn sẽ cần phải đồng ý ở đây:
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): y
Tiếp theo chúng ta cần một phân vùng. Trong các lời nhắc bên dưới, nơi bạn không thấy khóa được nhập vì tôi chỉ cần nhấn ENTER
để đồng ý với mặc định:
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
Nếu bạn nhấn L
vào dấu nhắc cuối cùng ở trên, bạn sẽ nhận được một danh sách tất cả các loại phân vùng có sẵn nhưng những gì bạn cần là loại ef00
cho phân vùng hệ thống efi. Và bạn sắp hoàn thành.
Hãy xem phân vùng mới của bạn p
sau đó theo dõi w
nếu bạn muốn nó thay đổi để viết ra các thay đổi đang chờ xử lý của bạn:
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.
Tôi giả sử bạn có bộ tải khởi động nhưng bạn cũng có thể đặt một cái vào đĩa USB của mình và điều này thực sự dễ dàng. Trên thực tế, tôi sẽ chỉ cho bạn cách thiết lập nó rEFInd
thực sự là sự hồi sinh của một dự án cũ hơn và được viết và duy trì bởi cùng một người đã viết gdisk
.
Nhận được refind.bin.*.zip
bạn sẽ tìm thấy ở đây và chúng tôi sẽ giải nén nó vào đĩa của chúng tôi sau đó sao chép hình ảnh vòm và chúng tôi đã hoàn thành.
Trên thực tế, chúng tôi chắc chắn sẽ cần một hệ thống tập tin đầu tiên. Rất vui vì tôi thực sự đang làm điều này khi tôi viết nó - thiếu điều đó chắc chắn sẽ là một công cụ giải quyết.
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
Một lần nữa, bỏ qua những thứ về loop
và sử dụng thiết bị của riêng bạn. -n
đặt tên cho phân vùng Tôi thích sử dụng ESP
.
Ok, vậy bây giờ cho 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
Đó chỉ là về nó. Bạn sẽ cần thiết lập rEFInd
một chút ...
echo '"ArchISO" "archisolabel=ESP archisobasedir=/EFI/arch_linux \
copytoram rootwait initrd=EFI\arch_linux\archiso.img"'\
>$_/refind_linux.conf
Điều đó sẽ cung cấp cho bạn một hệ thống khởi động. Hãy xem xét thông qua các chính refind.conf
trong ../BOOT
- nó rất tốt nhận xét và khá nhiều tài liệu riêng của mình. Bạn cũng sẽ muốn đi đến Rodbooks.com và đọc các tài liệu ở đó.
Một lưu ý cuối cùng mặc dù. Nếu bạn đặt cùng một thứ vào đĩa cứng hệ thống của bạn trên phân vùng hệ thống EFI, bạn luôn có quyền truy cập vào đĩa trực tiếp vòm có thể khởi động.