Sử dụng lệnh 'dd' để tạo thanh USB có thể khởi động


11

Tại sao hình ảnh ISO của một số hương vị Ubuntu có thể được đưa vào thanh USB bằng lệnh dd và khởi động thành công, trong khi các hương vị khác thì không? Hơn nữa, có vẻ như nó cũng phụ thuộc vào thanh USB cụ thể. Tôi đã thử với Ubuntu tiêu chuẩn:

$ sudo dd if=./ubuntu.iso of=/dev/sdd bs=8129

Và nó hoạt động như sự quyến rũ, ý tôi là: khởi động và cài đặt hoặc chạy Ubuntu trực tiếp. Nhưng khi tôi sử dụng một thanh USB khác được chuẩn bị theo cách tương tự, nó không khởi động được với hệ điều hành không tìm thấy lỗi BIOS.

Khi tôi dùng thử Ubuntu GNOME, đơn giản là nó không khởi động với cùng một lỗi như trong ví dụ trước, bất kể tôi sử dụng thẻ USB nào.

Tôi biết rằng có ứng dụng Startup Disk Creator trong Ubuntu, nhưng tôi đã bị thuyết phục, đó chỉ là mặt tiền GUI cho lệnh dd đơn giản và tôi luôn có thể sử dụng dd để tạo thanh USB có thể khởi động, ít nhất là cho Linux. Tôi có lầm không?


Cá nhân tôi sử dụng Unetbootin và chưa bao giờ gặp sự cố.
Tim

Câu trả lời:


5

Nếu bạn chạy Startup Disk Creator, bạn sẽ nhận thấy rằng nó thực hiện ba (bốn) điều sau:

  1. Định dạng ổ đĩa
  2. Sao chép dữ liệu từ ISO vào ổ đĩa
  3. (Thêm một tệp casper 1 bổ sung để duy trì, nếu được chọn. ddKhông cung cấp cho bạn tính kiên trì.)
  4. Cài đặt bộ tải khởi động

Nó không phải là GUI cho dd(có GUI cho dd, nhưng SDC không phải là một trong số đó). Bạn có thể nghĩ nó giống như các phương thức thủ công của Arch Linux hoặc Gentoo . Bạn có thể tạo USB có thể khởi động bằng cách sử dụng hầu hết các ISO cài đặt (phổ biến hợp lý) hiện tại. Điều này không đúng khoảng ba hoặc bốn năm trước, khi tôi nhìn vào Arch. Chỉ đến năm 2010, tất cả các ISO Arch đều có được tính năng này (nơi bạn có thể ghi nó trực tiếp vào ổ USB) - từ năm 2008 đến 2010 họ có hình ảnh USB đặc biệt.

Hơn nữa, nếu bạn ddlà một ổ đĩa trực tiếp, ổ đĩa đó chỉ đọc hiệu quả cho đến khi bạn định dạng nó hoặc sử dụng không gian còn lại bằng cách nào đó. Đĩa được tạo bởi SCD vẫn có thể sử dụng được như một ổ USB, mặc dù nội dung không thể truy cập được từ môi trường trực tiếp một cách dễ dàng. Vì vậy, nếu bạn ddcó ISO 1GB cho ổ USB 8 hoặc 16 GB, bạn sẽ từ bỏ không gian còn lại một cách hiệu quả trừ khi thực hiện thêm các bước.


1 Thông thường, hầu hết các hình ảnh trực tiếp sử dụng tệp SquashFS cho phân vùng gốc . SquashFS là chỉ đọc, vì vậy để duy trì, một casper-rwtệp được tạo trong /casper. Tôi không chắc chắn về nguồn gốc của casper. Theo những gì tôi hiểu, khi được khởi động với boot=caspertùy chọn, kernel phủ lên tệp casper (tạo một tệp nếu không tồn tại) trên đỉnh của squashfs, để nó có khả năng ghi. casperkhông phải là một tập tin, nó cũng có thể là một phân vùng .


"Tập tin casper" là gì? Vui lòng giải thích.

@ MikołajBartnicki Bản thân tôi không chắc lắm, nhưng tôi đã cập nhật câu trả lời.
muru

Casper là một con ma (mà tất cả các bạn đều biết). Giống như bạn đã nói, nó chồng lên một số thư mục trên hệ thống tập tin ro. Kiểm tra hệ thống tập tin từ một hình ảnh trực tiếp đang chạy với tính năng bền bỉ cho thấy một số thư mục 'trên' và 'dưới' tồn tại trên cả hai hệ thống chỉ đọc và ghi, nhưng xuất hiện như một trên hệ thống đang chạy, có phần giống với việc gắn kết trên một hệ thống đã chạy thư mục hiện có
oneindelijk

2

thử đầu tiên:

su -c 'mkfs.vfat /dev/sdc -I'

Để tạo đĩa USB có thể khởi động từ tệp iso bằng lệnh dd , đĩa không thể có các phân vùng như / dev / sdc1 (một trong bốn phân vùng chính có thể có của đĩa / dev / sdc ). Bạn không thể sao chép các khối tệp iso vào phân vùng chính, vì đĩa DVD hoặc đĩa cd cũng không có. Đó là lý do tại sao bạn phải tạo một hệ thống tệp chính xác trên đĩa / dev / sdc , chứ không phải trong phân vùng chính.

Ngoài ra, bạn đã mắc một vài lỗi bằng cách gõ lệnh dd .

Thử đi:

su -c 'dd if=/home/user/debian.iso of=/dev/sdc bs=4M;sync;eject /dev/sdc'

lệnh của bạn không chính xác mà không có mkfs.vfat trước. có thể nếu bạn cũng cài đặt bootloader và kích hoạt phân vùng. Các ổ USB khác không hoạt động có thể vì cổng USB của bạn có thể được chia sẻ với cổng USB khác hoặc bạn không có nguồn để làm việc với hệ điều hành usb trực tiếp, có thể là ổ hdd hoạt động và ổ đĩa USB khác cần nhiều năng lượng hơn bình thường. Hơn mức tiêu thụ năng lượng trung bình của loại thiết bị này (như đĩa hdd trong trường hợp bên ngoài với usb từ bộ chuyển đổi sata)


2

Bạn thậm chí có thể tạo một thanh USB có thể khởi động bằng cp( đối với tôi có vẻ đơn giản hơn nhiều so với ddGUI):

sudo cp path/to/ISO /dev/sdX


Hãy nhớ rằng /dev/sdXnên được thay thế bằng tên của thiết bị khối của bạn (ví dụ /dev/sdb, /dev/sdc).


1
Điều đó thực sự mới đối với tôi. Cùng với progress unix.stackexchange.com/a/301329/87264 nó cũng cho thấy sự tiến bộ
Jonas Eberle
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.