Làm cách nào để thay đổi kích thước phân vùng hệ thống EFI?


4

Tôi muốn tăng kích thước của Phân vùng hệ thống EFI lên 750MiB vì vậy tôi có thể cài đặt Arch Linux cùng với Windows 10 vì Phân vùng hệ thống EFI Windows cho tôi chỉ có 100MiB là quá nhỏ. Arch Linux khuyên bạn nên gắn kết ESP tại /bootthay vì /boot/efivà 100MiB là quá nhỏ /boot. Tôi không muốn chạm vào Phân vùng phục hồi.


Chính xác thì bạn đã cố gắng tạo ra chiếc ESP mới như thế nào?
fpmurphy

Tại sao bạn cần ESP lớn như vậy? Nói chung, nó chỉ chứa hình ảnh khởi động nên sẽ không chiếm nhiều dung lượng đĩa. Hạt nhân và những thứ khác phải được đưa vào/boot
phuclv

Đề nghị của Arch Linux nghe có vẻ kém chất lượng đối với tôi. Tôi sẽ khuyên không nên đặt / khởi động trên phân vùng EFI. Tôi chưa bao giờ làm điều này và không bao giờ có vấn đề. Ngoài ra, trong khi phân vùng EFI sử dụng hệ thống tệp FAT32 và có thể gắn kết như vậy ... thường không nên làm như vậy vì có một số dữ liệu meta nhất định trên phân vùng không phải là một phần của thông số FAT32 tiêu chuẩn. Cuối cùng, phân vùng EFI là một hệ thống tập tin FAT32 ... không còn lý tưởng cho việc sử dụng Linux, ngay cả đối với / boot. Và phân vùng EFI là FAT32 là một phần của thông số EFI ... không phải Windows ... vì vậy không có sự cải tổ nào thành ext4fs.
Cliff Armstrong

@Cliff_Armstrong, tôi nghĩ rằng một bo mạch chủ uefi nên hỗ trợ FAT32, điều đó không có nghĩa là nó không thể hỗ trợ các hệ thống tập tin bổ sung.
jiggunjer

Câu trả lời:


6

Cộng đồng Arch đã đưa Thông số kỹ thuật bộ tải khởi động Freedesktop.org vào trung tâm. AFAIK, Arch và các dẫn xuất của nó là các bản phân phối duy nhất để làm điều này và ngay cả trong Arch, nó không bắt buộc. Đặc tả bộ tải khởi động khuyên bạn nên sử dụng phân vùng FAT được chia sẻ, chẳng hạn như ESP, là vị trí để lưu trữ các hạt nhân Linux, cùng với một hệ thống để cách ly các hạt nhân phân phối với một phân vùng khác trên phân vùng này và để quản lý cấu hình bộ tải khởi động cho các hạt nhân.

Đặc tả bộ tải khởi động là một nỗ lực để giải quyết một số vấn đề thực sự với sự tồn tại phân phối Linux trên các máy tính đa khởi động; tuy nhiên, vì nó chỉ được chấp nhận bởi một phân phối chính, thậm chí sau vài năm tồn tại, nó không mang lại bất kỳ lợi ích thiết thực nào. Hơn nữa, Đặc tả bộ tải khởi động được liên kết chặt chẽ với trình quản lý khởi động systemd-boot, khá phổ biến ngoại trừ trong cộng đồng Arch. Mặc dù systemd-boot có một số lợi thế, trừ khi bạn đủ quen thuộc với lĩnh vực này để hiểu những lợi thế đó và biết rằng bạn cần chúng, bạn có thể không muốn bắt đầu thiết lập mọi thứ theo những cách kỳ lạ (như gắn ESP tại /boot) chỉ để bật sử dụng hệ thống khởi động. Hơn nữa, systemd-boot có một cái rất lớnNhược điểm: Nó chỉ có thể khởi chạy các chương trình khởi động tiếp theo (bao gồm cả nhân Linux) từ phân vùng mà nó được khởi chạy. Đến lượt điều này có nghĩa là, nếu bạn sử dụng systemd-boot, bạn sẽ cam kết lưu trữ systemd-boot, nhân Linux và bộ tải khởi động cho các HĐH khác (như Windows) trên một phân vùng - ESP. Điều này phù hợp với tầm nhìn Đặc tả bộ tải khởi động, nhưng nó tạo ra các vấn đề riêng của nó.

Điều đó nói rằng, nếu bạn muốn phóng to một ESP, bạn có thể làm như vậy với các công cụ khác nhau; tuy nhiên, điều này có nghĩa là bạn sẽ cần thu nhỏ phân vùng sau từ điểm bắt đầu. Điều này là rủi ro và tốn thời gian hơn so với thu hẹp một phân vùng từ cuối của nó, vì vậy tôi mạnh mẽkhuyên bạn nên sao lưu phân vùng sau. Ngoài ra, trên máy tính Windows, phân vùng theo ESP có thể là phân vùng dành riêng của Microsoft, về cơ bản chỉ là phân vùng trống mà Windows sử dụng cho không gian đầu. Nó thường không có hệ thống tập tin, vì vậy hầu hết các công cụ phân vùng sẽ không cho phép bạn thu nhỏ nó - và Windows thích nó có kích thước cụ thể (100 MiB hoặc 128 MiB, IIRC). Thay vào đó, bạn có thể cần thu nhỏ phân vùng theo phân vùng Microsoft Reserved, xóa Phân vùng dành riêng của Microsoft và tạo một phân vùng mới. Đây là tất cả một rắc rối lớn và làm tăng đáng kể rủi ro trong việc cài đặt một hệ điều hành mới.

Thay vào đó, bạn có thể muốn tạo một ESP mới ở nơi khác trên đĩa. Sau khi bạn tạo không gian cho Arch Linux, bạn có thể tạo một ESP mới và (các) phân vùng khác cho Arch Linux. Tùy thuộc vào trình quản lý khởi động bạn sử dụng, bạn chỉ cần có các Arch và Windows ESP riêng biệt; hoặc bạn có thể di chuyển các tập tin tải khởi động Windows sang ESP mới và xóa hoặc tái sử dụng mục đích ban đầu của ESP. Lưu ý rằng vì systemd-boot không thể khởi chạy các bộ tải khởi động nằm trên các phân vùng khác ngoài phân vùng của nó, nếu lý do để gắn ESP là/bootlà bạn muốn sử dụng systemd-boot, bạn sẽ phải di chuyển bộ tải khởi động Windows sang ESP mới nếu bạn muốn khởi chạy nó từ systemd-boot. Ngoài ra, lần cuối cùng tôi kiểm tra (đó là với Windows 7, vì vậy điều này có thể không còn đúng nữa), trình cài đặt Windows trở nên rất bối rối và gặp trục trặc nếu nhìn thấy hai ESP trên một đĩa, khiến cho việc cài đặt Windows trên một đĩa như vậy là không thể . Do đó, nếu bạn thiết lập mọi thứ với hai ESP, bạn có thể gặp vấn đề. Những vấn đề như vậy có thể dễ dàng khắc phục bằng cách tạm thời thay đổi mã loại phân vùng của máy không chạy Windows, nhưng bạn phải biết cách giải quyết này.

Tóm lại, mặc dù tôi nhận ra rằng cộng đồng Arch thích gắn kết ESP /bootvà sử dụng nó để lưu trữ các nhân Linux (thường) được khởi chạy thông qua systemd-boot, cách tiếp cận này tạo ra các biến chứng và ít hoặc không có lợi ích đáng kể. Nhìn chung, có lẽ bạn nên sử dụng GRUB 2 hoặc rEFInd của riêng tôi , cả hai đều phù hợp với ESP nhỏ của bạn và khởi chạy các hạt nhân được lưu trữ ở nơi khác. Trang EFI Boot Loaders cho Linux của tôi mô tả các tùy chọn trình tải khởi động và trình quản lý khởi động Linux chi tiết hơn.


1
Một lý do chính đáng để gắn ESP /bootvà đặt hạt nhân trên ESP là sử dụng hạt nhân EFISTUB, do đó cho phép phần sụn bo mạch chủ khởi động trực tiếp vào nhân Linux. Điều này giúp đơn giản hóa rất nhiều cấu hình khởi động, vì hiện tại không cần phải cấu hình bộ tải khởi động hoặc /bootphân vùng Linux riêng biệt .
Vladimir Panteleev

3

Câu hỏi này là một trong những kết quả hàng đầu trên Google về "Cách thay đổi kích thước phân vùng hệ thống EFI" (không ngạc nhiên, với tiêu đề câu hỏi), tuy nhiên các câu trả lời hiện tại ở đây, mặc dù có lời khuyên tốt cho tình huống của OP và thông tin hữu ích nói chung, không thực sự cố gắng trả lời câu hỏi đó như đã nêu. Nỗ lực khá ngắn gọn trước đây của tôi (hiện đã bị xóa) để trả lời câu hỏi đó đã bị hạ cấp, vì vậy đây là một câu hỏi kỹ lưỡng hơn.

Có một cơ hội tốt khi bạn đọc nó bởi vì bạn đã thử điều hiển nhiên (sử dụng gparted) và gặp lỗi "GNU Parted không thể thay đổi kích thước phân vùng này thành kích thước này. Chúng tôi đang làm việc với nó!". Bạn cũng có thể đã thử thực hiện nó từ bên trong Windows (sử dụng Quản lý đĩa), chỉ để phát hiện ra rằng Windows từ chối thực hiện bất kỳ hoạt động nào với ESP.

Chà, điều tốt nhất tiếp theo để thực sự thay đổi kích thước phân vùng là tạo lại nó. Dưới đây là các bước chi tiết để làm điều này:

  1. Nếu bạn đang thay đổi kích thước ESP của đĩa bạn đang khởi động, hãy đảm bảo bạn có sẵn một số phương tiện cứu hộ có thể khởi động để bạn có thể sử dụng để sửa chữa hệ thống của mình trong trường hợp xảy ra sự cố. Có một bản sao lưu dữ liệu của bạn trước khi thực hiện bất kỳ hoạt động phân vùng đĩa là một ý tưởng tốt nói chung.

  2. Nếu bạn đang mở rộng ESP, hãy tạo khoảng trống bằng cách di chuyển hoặc thay đổi kích thước bất kỳ phân vùng nào theo sau nó, sử dụng công cụ phân vùng yêu thích của bạn (ví dụ: gparted).

  3. Gắn kết ESP, nếu nó chưa được gắn kết:

    # mount /dev/sdx1 /mnt # replace sdx1 with ESP
    
  4. Tạo một bản sao lưu nội dung của nó:

    # mkdir ~/esp
    # rsync -av /mnt/ ~/esp/
    
  5. Ngắt kết nối ESP:

    # umount /mnt
    
  6. Xóa và tạo lại ESP:

    # gdisk /dev/sdx # replace sdx with disk containing ESP
    p (list partitions)
    (ensure the ESP is the first partition)
    d (delete partition)
    1 (select first partition)
    n (create partition)
    Enter (use default partition number, should be 1)
    Enter (use default first sector, should be 2048)
    Enter (use default last sector, should be all available space)
    EF00 (hex code for EFI system partition)
    w (write changes to disk and exit)
    
  7. Định dạng ESP:

    # partprobe /dev/sdx
    # mkfs.fat -F32 /dev/sdx1
    
  8. Khôi phục nội dung của ESP:

    # mount /dev/sdx1 /mnt
    # rsync -av ~/esp/ /mnt
    

Đó nên là tất cả. Tôi đã sử dụng thành công quy trình trên để thay đổi kích thước ESP cho cài đặt Windows có ESP quá nhỏ (50 MB) để cho phép Windows nâng cấp lên Cập nhật của người tạo (trước khi thay đổi kích thước ESP, Windows Update không thành công với lỗi 0x8E5E03FB và Cập nhật Trợ lý có lỗi 0xc1900200).


nó hoạt động, trong trường hợp của tôi, tôi cũng cần cập nhật UUID của phân vùng khởi động trên / etc / fstab
osdamv

0

Có một chút liên quan đến hệ điều hành khởi động kép.

Điều đầu tiên tôi có thể đề nghị là không sử dụng phân vùng hệ thống EFI hiện có. Đó là để khởi động windows. Đừng lộn xộn với điều đó.

Thay vào đó, hãy mở quản lý đĩa và thu nhỏ phân vùng windows (cái chính của bạn) một lượng (tuy nhiên bạn muốn sử dụng nhiều với Arch Linux). Luôn luôn có một giới hạn được thiết lập là bạn có thể thu nhỏ bao nhiêu, ngay cả khi có vẻ như có nhiều không gian trên đĩa. "Vấn đề" này được giải quyết ở nơi khác nên tôi sẽ không giải thích nó ở đây. Chỉ cần nhớ cái nào là cái nào. Ví dụ. cửa sổ lớn, không gian nhỏ trống rỗng, v.v.

Đừng quên vô hiệu hóa khởi động nhanh trong windows - điều này về cơ bản là ngủ đông PC của bạn thay vì tắt nó đi, để đạt được "khởi động nhanh". Thay vào đó, nếu bạn khởi động vào Linux, bạn có nguy cơ mất dữ liệu trong hệ thống windows.

Khởi động vào môi trường cài đặt Linux (từ USB hoặc không có gì) và sau đó thiết lập không gian trống mà bạn đã tạo trong windows và đặt nó vào phân vùng hệ thống linux của bạn. Chỉ cần nhớ phân vùng nào. Ví dụ. không vô tình định dạng lại phân vùng cửa sổ - sử dụng kích thước phân vùng bạn đã ghi ở trên để kiểm tra lại.


Tôi đã quên đề cập đến Khởi động nhanh trong câu trả lời của riêng tôi và đây là một điểm quan trọng! Tính năng đó gây ra nhiều vấn đề hơn tôi quan tâm.
Rod Smith

Tôi không thể quên nó bây giờ. Tôi đã khởi động hai bản phân phối linux khác nhau cho rất nhiều người và hầu hết trong số họ gặp vấn đề với khởi động nhanh, do đó, việc trở thành bản chất thứ hai để nhấp vào hộp kiểm đó haha
technotron101
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.