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?
dd
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?
dd
Câu trả lời:
Đầ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
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à:
gắn tập tin hình ảnh với nhiều thiết bị phân vùng vòng lặp. Ở đây chúng tôi đã sử dụng kpartx
, nhưng có các phương pháp khác: Làm cách nào tôi có thể gắn phân vùng từ hình ảnh do dd tạo của thiết bị khối (ví dụ: ổ cứng) trong Linux?
tạo phân vùng không tương tác. Ở đây chúng tôi chỉ cần đường ống vào fdisk
như đã đề cập tại: Tạo và định dạng phân vùng bằng tập lệnh bash