MediaKit reports not enough space on device for requested operation

MediaKit reports not enough space on device for requested operation là một thông báo lỗi của Disk Utility trên macOS. Lỗi này xảy ra trên đĩa cứng GPT mà nguyên nhân là đĩa cứng của bạn không đáp ứng chính sách phân vùng của Apple.

Nguyên nhân

Tôi có một ổ cứng gắn ngoài, tôi đã tạo USB cài macOS High Sierra bằng Clover Boot Disk để cài macOS vào ổ cứng này. Nhưng tôi không thể Erase một trong những phân vùng trên đĩa cứng này để định dạng nó sang Mac OS Extended (Journaled) hoặc APFS. Disk Utility đã báo một lỗi:

MediaKit reports not enough space on device for requested operation

Unmounting disk
MediaKit reports not enough space on device for requested operation.
Operation failed...

Sau đó tôi đã làm một số thử nghiệm bằng cách cài macOS High Sierra trên máy ảo VMware Workstation và tạo ra ba phân vùng trên một đĩa cứng ảo mới bằng Disk Utility.

GUID Partition Map Disk Utility

Tôi nhận thấy các phân vùng đã được Disk Utility tạo ra theo một quy tắc đặc biệt. Nhìn vào bảng phân vùng của đĩa cứng ảo ở trên thông qua GParted, chúng ta có thể nhận thấy hai điểm:

  • Một phân vùng EFI được tự động tạo ra nằm ở vị trí bắt đầu của đĩa cứng với kích thước 200MB.
  • Sau mỗi phân vùng sẽ có 128MB không được phân bổ (unallocated, ngoại trừ phân vùng EFI ở trên).

Sau khi tìm kiếm thêm một số thông tin, giờ thì tôi đã hiểu. Ổ cứng gắn ngoài của tôi là Hitachi HGST 500GB, một số người khác cũng bị vấn đề này trên WD My Passport và USB. Nhưng thật sự hãng đĩa cứng không phải là nguyên nhân, cũng như không phụ thuộc vào bạn đang sử dụng Hackintosh hay Macintosh. Mà nguyên nhân chính ở đây là chúng ta đã tạo ra các phân vùng không phù hợp với chính sách phân vùng (Partitioning Policy) của Apple.

Cách giải quyết

Tùy vào trường hợp của bạn mà bạn nên chọn cách giải quyết phù hợp. Hoặc là xóa tất cả phân vùng trên đĩa cứng và khởi tạo lại, tất cả dữ liệu trên đĩa sẽ bị mất. Hoặc là tạo thêm phân vùng EFI có kích thước 200MB ở vị trí bắt đầu của đĩa và thay đổi kích thước của mỗi phân vùng để chừa lại 128MB không phân bổ.

Có một cách nữa là bạn chỉ cần tạo các phân vùng bằng các công cụ bên thứ ba như GParted hoặc Disk Management. Nếu bạn cần tạo phân vùng mới để cài đặt macOS High Sierra, chỉ cần tạo phân vùng Mac OS Extended (Journaled) bằng GParted, sau đó chuyển đổi sang APFS bằng Disk Utility. Nhưng bạn vẫn sẽ bị báo lỗi MediaKit reports not enough space on device for requested operation trên Disk Utility cho đến khi đĩa cứng của bạn đáp ứng được chính sách phân vùng của Apple.

Nếu bạn không muốn giữ lại dữ liệu trên đĩa cứng, cách tốt nhất là xóa tất cả các phân vùng trên đĩa và khởi tạo lại.

  1. Mở Terminal.
  2. Sử dụng lệnh diskutil list để lấy danh sách đĩa và các phân vùng:
    diskutil list
  3. Unmount tất cả phân vùng trên đĩa bằng Disk Utility hoặc sử dụng lệnh diskutil unmount:
    sudo diskutil unmount /dev/diskXsY
  4. Sử dụng lệnh dd để làm sạch 4096 byte đầu tiên của đĩa:
    sudo dd if=/dev/zero of=/dev/diskX bs=4096 count=1
  5. Bây giờ bạn có thể nhấn Erase trong Disk Utility để khởi tạo đĩa.

Ngược lại nếu bạn có nhiều dữ liệu quan trọng, chỉ cần tạo một phân vùng EFI và chừa lại 128MB không phân bổ sau mỗi phân vùng. Chính sách phân vùng của Apple chỉ áp dụng cho đĩa GPT, không áp dụng cho đĩa MBR.

Apple Partitioning Policy

Từ thông tin trên chúng ta có thể sử dụng các công cụ bên thứ ba để sửa đổi lại các phân vùng trên đĩa cứng đáp ứng các điều kiện sau:

  • Đối với đĩa Small (1 GB <= kích thước < 2 GB), chừa lại 128MB không phân bổ (unallocated) sau mỗi phân vùng mà bạn tạo ra. Không cần tạo phân vùng EFI.
  • Đối với đĩa Lớn (2GB <= kích thước), chừa lại 128MB không phân bổ (unallocated) sau mỗi phân vùng mà bạn tạo ra (ngoại trừ phân vùng EFI và cả phân vùng MSR). Cần tạo phân vùng EFI có kích thước 200MB ở vị trí bắt đầu của đĩa.

Có nhiều công cụ hỗ trợ resize và di chuyển phân vùng, ở đây tôi sử dụng GParted. Bạn có thể tải về GParted hoặc 4MParted và tích hợp vào USB với AIO Boot.

Nếu bạn không có đủ 200MB chưa phân bổ ở vị trí bắt đầu của đĩa, chỉ cần sử dụng GParted để di chuyển hoặc resize phân vùng đầu tiên. Sau đó tạo phân vùng EFI, đối với Windows, đơn giản chỉ cần sử dụng diskpart.

diskpart
list disk
select disk X
create partition efi size=200
format quick fs=fat32 label="ESP"

Đối với GParted, chỉ cần tạo một phân vùng FAT32, sau đó nhấp chuột phải vào phân vùng này và chọn Manage Flags, tích vào ô espboot.

Đối với phân vùng NTFS, bạn có thể sử dụng tính năng Shrink trong Disk Management để cắt bớt 128MB. Nó nhanh, an toàn và không mất dữ liệu.

Disk Utility 128MB unallocated

Đối với GParted, nhập ít nhất 128 MB cho mục Free space following (MiB). Nếu bạn tạo phân vùng mới, chỉ cần nhập ít nhất 128MB cho Free space preceding (MiB).

GParted unallocated

Bây giờ bạn đã có thể sử dụng Disk Utility để tạo và định dạng các phân vùng trên đĩa cứng này. Disk Utility sẽ không còn báo lỗi MediaKit reports not enough space on device for requested operation. Xin lưu ý rằng hãy chừa lại 128MB không phân bổ sau mỗi phân vùng nếu bạn tạo phân vùng mới bằng các công cụ bên thứ ba. Chúc bạn thành công!

 

Trả lời

Thư điện tử của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *