Làm thế nào để bạn tạo và phân vùng một hình ảnh đĩa thô?


7

Tôi cần tạo một hình ảnh đĩa thô để sử dụng trong một máy ảo, nhưng tôi cần tạo các phân vùng trước khi tạo hệ thống tệp hoặc cài đặt hệ điều hành.

Bất cứ ai có thể mô tả một quá trình để làm điều này?


Bạn đang sử dụng công nghệ máy ảo nào? Bởi vì họ có các định dạng đĩa khác nhau (.vhd (x) cho Microsoft, .vmdk cho VMware, v.v.)? Tôi nghĩ bạn nên tạo một VM loại bạn muốn với Linux LiveCD .iso được gắn và đĩa ảo sẽ được phân vùng. Có rất nhiều hướng dẫn về cách sử dụng LiveCD để phân vùng đĩa (vì có rất nhiều biến thể của LiveCD xung quanh bạn phải tìm một hướng dẫn phù hợp cho LiveCD bạn chọn sử dụng).
mprill

Chỉ là một hình ảnh đĩa thô, như khi bạn đổ đĩa bằng công cụ sao chép khối như dd
Aethylred

Câu trả lời:


4

Đầu tiên tạo một hình ảnh đĩa thô (25GB trong trường hợp này):

    # dd if=/dev/zero of=disk.img bs=1024k seek=25600 count=0
    0+0 records in
    0+0 records out
    0 bytes (0 B) copied, 2.7301e-05 s, 0.0 kB/s
    # ls -lh
    total 2.0G
    -rw-r--r-- 1 root root  25G Dec 13 11:13 disk.img

Cung cấp cho nó một bảng phân vùng:

    # parted disk.img mklabel msdos

Gắn kết nó như một thiết bị loopback (cách đơn giản nhất để xác định hình trụ, đầu và cung):

    # losetup -f disk.img
    # losetup -a
    /dev/loop0: [0801]:12059103 (/path/to/disk.img)

Kiểm tra xem nó có vẻ là một thiết bị khối hợp lệ:

    # fdisk /dev/loop0

    WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
     switch off the mode (command 'c') and change display units to
     sectors (command 'u').

    Command (m for help): p

    Disk /dev/loop0: 26.8 GB, 26843545600 bytes
    255 heads, 63 sectors/track, 3263 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x000db005

    Device Boot      Start         End      Blocks   Id  System

Sau đó sử dụng fdisk để phân vùng nó như bạn muốn:

    # fdisk /dev/loop0

Khi bạn hoàn tất, bạn cần hủy kết nối thiết bị (trước tiên sẽ cần hủy ánh xạ và ngắt kết nối):

# losetup -d /dev/loop0

2

Thủ tục hoàn toàn tự động

Tạo một my.img hình ảnh với một phân vùng ext4 duy nhất:

sudo apt-get install kpartx
img='my.img'
dd if=/dev/zero of="$img" bs=512 count=131072
printf 'o\nn\np\n1\n\n\nw\n' | fdisk "$img"
sudo kpartx -av "$img"
sudo mke2fs -t ext4 /dev/mapper/loop0p1
mkdir d
sudo mount /dev/mapper/loop0p1 d
# Do something to the ext partition.
sudo touch a
sudo umount d
sudo kpartx -dv "$img"

Đã thử nghiệm trên Ubuntu 14.04.

Các phần "cứng" là:

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.