Không thể tạo flash USB có thể khởi động (trực tiếp) cho arch linux


7

Tôi đã tạo một usb có thể khởi động từ đó tôi sẽ cài đặt Arch. Tôi đã làm điều này theo cách sau:

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

Nhưng khi tôi cố gắng khởi động từ flash USB này, tôi đã thất bại. Không có lỗi, nó không thể khởi động từ nó. Tôi đã tải xuống tệp iso từ trang web arch linux chính thức gần đây để nó được cập nhật. Trước đây tôi đã có thể cài đặt mint, sơ cấp và ubfox từ usb flash thành công.

Nó ngăn tôi khởi động theo cách sau:

Sau khi chọn "boot from usb", tôi thấy một màn hình đen trong 1 giây và đưa trở lại menu nơi tôi phải chọn một thiết bị khởi động tạm thời. Khi tôi làm điều đó một lần nữa câu chuyện lặp lại.

Điều gì có thể là nguyên nhân?


Đôi khi, cấu hình Uefi hoặc tương tự không khởi động được đèn flash. Thay vào đó, hãy thử sử dụng các công cụ hỗ trợ uefi và bios, như liveusb-creator (nó tồn tại trên fedora, archlinux aur repo, windows ( fedorahosted.org/liveusb-creator )).
IBr

@IBr, tôi cần một công cụ như vậy cho linux (công cụ tôi có thể khởi chạy trên linux).
ア レ ッ ク

@IBr, sudo aptitude cài đặt liveusb-creator không hoạt động, nó không thể tìm thấy nó.
ア レ ッ ク

2
Bạn có thể vui lòng làm rõ hơn một chút. Bạn đã ngăn chặn việc khởi động ổ đĩa theo cách nào? Nó không phải là một tùy chọn trong menu khởi động của bạn? Có phải nó ở đó, nhưng chọn nó chỉ dẫn đến một màn hình đen? Vv
HalosGhost

2
Đừng sử dụng người tạo liveusb. Nếu bạn đang cố gắng khởi động trên UEFI, tất cả những gì bạn cần làm là định dạng đĩa chính xác! Sử dụng gdiskvà các mantrang của bạn !
mikeerv

Câu trả lời:


4

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 sfstệ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 686tệp cho x86-64mụ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 .isohình ảnh hoạt động bằng cách phá vỡ isotiê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.imgtệ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 gdiskvà 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 fallocatehoặc losetuptô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ở, gdiskbạ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 Lvà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 ef00cho 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 psau đó theo dõi wnế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ó rEFIndthự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.*.zipbạ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ề loopvà 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 rEFIndmộ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.conftrong ../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.


cảm ơn. lưu ý rằng tôi đã có không gian chưa được phân bổ, tôi đã thực hiện nó bằng cách gparted trước đó.
ア レ ッ ク

@Alex - tốt, không có gì đảm bảo rồi. Tôi thực sự không thích gpartedcá nhân. gdiskrất dễ dàng - và nó hoạt động mọi lúc, trái ngược vớigparted...
mikeerv

1
OP chỉ muốn tạo một đĩa cài đặt: không cần điều này ...
jasonwryan

@jasonwryan Đó là đĩa cài đặt. Và hơn nữa, một đĩa riêng biệt hoàn toàn không cần thiết. Mặc dù tôi thực tế chỉ sao chép những gì cần thiết - không bao gồm rEFInd, đó là.
mikeerv

@mikeerv Archiso chỉ cần được dd'ed; cho tôi biết tại sao bất kỳ điều này là cần thiết hoặc mong muốn.
jasonwryan

4

Cách thích hợp để làm như vậy là (như được mô tả trên Arch Linux Wiki )

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

sử dụng GNU dd.


Tôi đã viết một số. Ít nhất là của tôi không đáng tin cậy. Tôi đã xóa bình luận của tôi nào. Trong mọi trường hợp, bạn chắc chắn không cần cả hai tập tin hình ảnh. Và tại sao sử dụng một hệ thống tập tin không tương thích như hybrid iso khi bạn không phải. Tôi muốn có một bảng phân vùng thực sự.
mikeerv

GNU dd gì? Tôi đã không sử dụng nó? Có gì khác với mã của tôi?
ア レ ッ

Bạn đang sử dụng GNU dd. Sự khác biệt là bs=4Msynclệnh. linux.die.net/man/2/sync
enedil

điều đó cũng không làm việc cho tôi. Có lẽ tôi nên sử dụng CD thay vì flash USB?
ア レ ッ

Bạn có thể thử, máng lệnh đã làm việc cho tôi.
enedil

0

Tôi phải mất một thời gian để hiểu cách tạo một usb trực tiếp với arch linux. Giải pháp rất đơn giản. Tôi vừa viết:

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

Tôi đã làm việc rất nhiều với tiện ích đĩa gnome và gparted. Bạn có thể xóa bảng phân vùng của USB-Stick.

Một sự thật thú vị là quan trọng. Nếu dd kết thúc chỉ với 100-400 tệp, thì đã xảy ra lỗi. Đôi khi phải mất nhiều thời gian hơn nhưng tôi đã hủy bỏ vì tôi không muốn chờ đợi quá lâu. Sau đó, tôi đã làm một lần cho đến khi nó hoàn thành. Tôi chắc rằng mất khoảng 20 phút thời gian đó và dd hoàn toàn xuất hiện với khoảng 10000 tệp được truyền chính xác. Tôi khởi động cây gậy và mọi thứ hoạt động tốt. Tôi không biết về số lượng tệp và tôi nghĩ nếu bạn làm theo cách tôi đã làm (như bạn thấy tôi đã không sử dụng bs = part) và đợi khoảng 30 phút, mọi thứ sẽ ổn.

Một thanh USB 3.0 thực sự có thể giúp bạn.


1
(1) Làm thế nào là những gì bạn đã làm khác với những gì OP đã làm? (2) Bạn đang nói gì với dd truyền tập tin? Tất cả các câu trả lời đều giống nhau (cùng một lỗi chính tả) với câu trả lời này trên Super User (bởi cùng một người dùng mới).
G-Man nói 'Phục hồi Monica'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.