Làm cách nào để thay đổi kích thước phân vùng / (root) của tôi?


171

Mặc dù thẻ SD của tôi là 16 GB, nhưng hình ảnh tôi flash trên đó chỉ là 2 GB và bây giờ tôi chỉ có thể thấy 2 GB dung lượng lưu trữ trên đĩa.

Làm cách nào để thay đổi kích thước hình ảnh để tôi có nhiều không gian hơn trên phân vùng gốc?


Cảm ơn .. đã làm việc rất tốt cho tôi và đã không làm hỏng hệ thống của tôi..tuy nhiên có IRC và máy chủ web apache và dung lượng 8gb đầy đủ của tôi

1
Tại sao thay đổi kích thước phân vùng gốc khi bạn có thể tạo phân vùng mới tại không gian thẻ SD miễn phí còn lại và sau đó gắn nó vào phân vùng gốc /mnt/storagechẳng hạn. Điều này có hiệu quả cách ly hệ thống và dữ liệu và giúp dễ dàng bảo trì và sao lưu.
mbaitoff

2
@mbaitoff - vì hình ảnh hệ thống mặc định chỉ có dung lượng trống 68MiB, không còn nhiều chỗ để thêm phần mềm bổ sung.
Jules

@Jules - Tôi không hỏi tại sao người ta muốn thay đổi kích thước phân vùng. A đã hỏi tại sao một người sẽ thay đổi kích thước phân vùng hệ thống thay vì gắn thêm bộ lưu trữ tại điểm gắn kết phân vùng hệ thống để cách ly hệ thống và phần mềm / dữ liệu một cách hiệu quả? Nếu bạn muốn lưu trữ, hãy gắn SD spcae còn lại tại /mnt/storage, nếu bạn muốn chương trình - mount tại /opt/software/.
mbaitoff

@mbaitoff hầu hết các chương trình cài đặt trong / usr, không phải / opt / phần mềm. Các hình ảnh dựng sẵn có nội dung của / usr trong phân vùng gốc. Do đó, có vẻ cần thiết để tăng kích thước của phân vùng gốc nếu bạn muốn cài đặt bất kỳ phần mềm không mặc định nào.
Jules

Câu trả lời:


158

Giả sử bạn đang sử dụng Debian.

Phiên bản ngắn:

  1. Sao lưu hệ thống của bạn
  2. Xóa phân vùng chính và trao đổi (để riêng phân vùng khởi động)
  3. Tái tạo phân vùng chính để sử dụng không gian đĩa còn lại (không bao gồm phần khởi động). Đảm bảo sử dụng lại cùng một khu vực bắt đầu như phân vùng gốc.
  4. khởi động lại hệ thống
  5. thay đổi kích thước phân vùng gốc khởi động mới để sử dụng kích thước phân vùng đầy đủ.

Hướng dẫn từng bước một

Trước tiên, hãy tạo một bản sao lưu của Thẻ SD của bạn bằng cách sử dụng các hướng dẫn được tìm thấy ở đây trong trường hợp có sự cố.

Từ dòng lệnh hoặc cửa sổ đầu cuối, nhập thông tin sau

sudo fdisk /dev/mmcblk0

sau đó gõ pđể liệt kê bảng phân vùng

bạn sẽ thấy ba phân vùng. Nếu bạn nhìn vào cột cuối cùng có nhãn Hệ thống, bạn nên có

  1. W95 FAT32
  2. Linux
  3. Trao đổi Linux

ghi lại số bắt đầu cho partiton 2, bạn sẽ cần cái này sau. mặc dù nó có thể vẫn sẽ xuất hiện trên màn hình (chỉ trong trường hợp).

loại tiếp theo dđể xóa một phân vùng.

Sau đó, bạn sẽ được nhắc về số lượng phân vùng bạn muốn xóa. Trong trường hợp trên, bạn muốn xóa cả phân vùng trao đổi Linux và Linux.

Vì vậy, gõ 2

sau đó gõ dlại và sau đó gõ 3để xóa phân vùng trao đổi.

Bây giờ bạn có thể thay đổi kích thước phân vùng chính.

nđể tạo một phân vùng mới.

Phân vùng mới này cần phải là một phân vùng chính để gõ p.

Tiếp theo nhập 2khi được nhắc cho một số phân vùng.

Bây giờ bạn sẽ được nhắc cho khu vực đầu tiên cho phân vùng mới. Nhập số bắt đầu từ bước trước đó (phân vùng Linux)

Tiếp theo, bạn sẽ được nhắc cho khu vực cuối cùng mà bạn có thể nhấn enter để chấp nhận mặc định sẽ sử dụng không gian đĩa còn lại.

Nhập wđể lưu các thay đổi bạn đã thực hiện.

Tiếp theo khởi động lại hệ thống bằng lệnh sau:

sudo reboot

Khi hệ thống khởi động lại và bạn quay lại dòng lệnh, hãy nhập lệnh sau:

sudo resize2fs /dev/mmcblk0p2

Lưu ý: việc này có thể mất nhiều thời gian (tùy thuộc vào kích thước và tốc độ thẻ), hãy kiên nhẫn và để nó kết thúc để bạn không làm rối hệ thống tệp và phải bắt đầu lại từ đầu.

Khi hoàn tất, khởi động lại hệ thống bằng lệnh sau:

sudo reboot

Bây giờ bạn có thể xác minh rằng hệ thống đang sử dụng toàn bộ dung lượng của Thẻ SD bằng cách nhập lệnh sau:

df -h

Tại sao điều này hoạt động:

Điều kỳ diệu thực sự ở đây là bạn xóa các phân vùng gốc và trao đổi, sau đó chỉ tạo lại phân vùng gốc (sử dụng cung cấp ban đầu) trước khi ghi dữ liệu vào đĩa . Kết quả là bạn không xóa dữ liệu hiện có khỏi phân vùng gốc.

Bằng cách xóa phân vùng trao đổi, bạn cho phép phòng phân vùng gốc phát triển vượt quá kích thước hiện tại của nó và lấp đầy phần không sử dụng của đĩa (do vị trí của các phân vùng - phân vùng gốc bị kẹp giữa các phân vùng khởi động và trao đổi - không thể chỉ đơn giản là thay đổi kích thước để lại phân vùng trao đổi một mình).

Sau đó, bạn thay đổi kích thước (an toàn để chạy trên đĩa được gắn) hệ thống tệp để sử dụng tất cả không gian trong phân vùng gốc mới.

tham chiếu:


1
@Jivings nếu được thực hiện chính xác, bạn sẽ không mất một thứ, nhưng đó là lý do tôi thực hiện sao lưu bước một.
Steve Robillard

2
Từ các ý kiến ​​có vẻ như bạn cũng nên ghi lại lý do tại sao điều này hoạt động, không chỉ là làm thế nào.
Jivings

1
@Jivings hy vọng điều này giải quyết mối quan tâm của bạn.
Steve Robillard

9
Có vẻ rất sai khi bạn phải xóa một phân vùng để thay đổi kích thước nó.
Alex Chamberlain

5
@AwgieUser Bạn không làm điều đó trên mac, bạn làm điều đó trên chính pi. Ngoài ra, nếu bạn đang chạy raspbian, bạn có thể khởi động pi và từ dòng lệnh phát ra lệnh sau sudo raspi-config và chọn tùy chọn thay đổi kích thước phân vùng gốc.
Steve Robillard

102

Sử dụng hình ảnh Debian-Wheezy Beta, có một tiện ích cấu hình được tích hợp sẵn giúp việc này trở nên dễ dàng:

Có một tiện ích gọi là raspi-config. Điều này chạy trong lần khởi động đầu tiên nếu bạn kết nối trực tiếp với RPi. Nếu bạn qua SSH, bạn có thể chạy thủ công bằng cách sử dụng $ sudo raspi-config. (Tôi nghĩ bạn có thể chạy lại công cụ thủ công bất cứ lúc nào).

Tùy chọn thứ hai trên hộp thoại màu xanh theo sau có tiêu đề expand_rootfs, với mô tả "Mở rộng phân vùng gốc để điền vào thẻ SD".

Chọn mục này sẽ khiến phân vùng gốc của bạn bị thay đổi kích thước để điền vào thẻ vào lần tiếp theo bạn khởi động RPi.

Cập nhật cho năm 2015!

Tôi quay trở lại câu trả lời này với một lưu ý thận trọng: Tôi đã sử dụng một loạt thẻ SD 16 GB và tôi đã bị bắt gặp bởi maxxing phân vùng của tôi để điền vào thẻ tôi đang sử dụng. Làm như vậy gây ra một loạt vấn đề khi chuyển sang thẻ mới (mặc dù được ghi là 16 GB) nhỏ hơn khoảng 200 MB so với thẻ cũ.

Điều này xuất hiện khi tôi chuyển một vài RPis từ v1 sang mẫu v2 mới, sử dụng thẻ Micro SD.

Bây giờ tôi để lại khoảng 1GB miễn phí để đảm bảo chắc chắn rằng hình ảnh của tôi có thể được chuyển đổi giữa các thẻ SD mà không gặp sự cố.


Quá trình này mất khoảng 10 phút với thẻ 16 GB trên Pi của tôi.
Der Hochstapler

5
Điều này là rất đơn giản hơn nhiều so với câu trả lời hàng đầu. Đây là giải pháp để sử dụng.
James Skuration

@JamesSkuration: Đây là giải pháp sử dụng cho hình ảnh Beta-Wheezy Beta. Không cho người khác.
SF.

Điều này không hoạt động đối với Raspbian khi được cài đặt từ NOOBS trên SDCard mà họ đang vận chuyển với bộ dụng cụ RPi. Khi bạn cố chạy tùy chọn mở rộng, nó nói rằng nó không được hỗ trợ bởi cấu hình này, nhưng vì bạn đang chạy nên nó có thể sử dụng tất cả dung lượng dù sao ... vấn đề là tôi đang cố gắng phản chiếu hình ảnh 8GB lên Thẻ 32 GB
Eoin Campbell

Raspi-config không biết cách thay đổi kích thước gốc của Raspbian Wheezy. mở rộng_rootfs như bạn đề xuất gây ra vấn đề. Câu trả lời ở trên của bạn hoạt động giống như một cơ duyên trong hệ thống trực tiếp và không cần phải "để lại khoảng 1 GB".
GTodorov

28

Nếu bạn không thoải mái khi làm việc trên dòng lệnh, như trong câu trả lời xuất sắc của Steve Robillards, có một số ứng dụng GUI có sẵn. Đặc biệt gparted hoạt động rất tốt.

Tôi nghĩ rằng nó được cài đặt theo mặc định trên Ubuntu LiveCD nhưng không phải trên hệ thống đã cài đặt. Tất nhiên có một sửa chữa dễ dàng cho việc này : apt-get install gparted. Bạn không thể làm điều này trên Pi thực tế, vì để thay đổi kích thước các phân vùng, chúng cần được ngắt kết nối.

Hình dưới đây là tiếng Hà Lan, nhưng đừng để điều đó làm hỏng cuộc vui. Nó rất dễ sử dụng. Đây là bố cục của hình ảnh debian mặc định trên sdcard 8gb.

GParted

Nhấp chuột phải vào các phần để ngắt kết nối chúng và sau đó nhấp chuột phải để thay đổi kích thước hoặc di chuyển phân vùng. Bạn cũng có thể tạo các phân vùng mới và định dạng những cái hiện có. Trong hình bên dưới, tôi đã xóa phân vùng trao đổi và bây giờ tôi có thể thay đổi kích thước phân vùng gốc thành toàn bộ không gian bên phải của nó. Đừng điền hoàn toàn, bởi vì bạn vẫn phải thêm phân vùng trao đổi.

Thay đổi kích thước

Bạn có thể chơi với bố cục phân vùng, các thay đổi chỉ được viết nếu bạn áp dụng các thay đổi (phím 'return' màu xám trong hình ảnh đầu tiên).

Rất dễ dàng để di chuyển các phân vùng nhưng giống như trong câu trả lời của Steve, tôi khuyên bạn nên xóa hoàn toàn phân vùng trao đổi, sau đó thay đổi kích thước gốc và sau đó tạo lại một trao đổi. Di chuyển một phân vùng có thể mất một thời gian rất dài và trao đổi không chứa dữ liệu bạn cần giữ.


1
Tôi đã sử dụng phương pháp này; hoạt động như một lá bùa.
Alex Chamberlain

Tôi đồng ý. Tôi đã sử dụng gparted để thực hiện chính xác điều này và nó rất dễ dàng
JayDev

Nếu bạn đang kết nối qua VNC, hãy chạysudo -E gparted
forzagreen

Cũng có thể cần chạy lệnh sau gpartednếu bạn đang chạy trong Wayland (không chắc những vấn đề này đã được giải quyết):xhost +SI:localuser:root
John Manko

11

Nếu bạn sử dụng hình ảnh Wheezy Debian mới hơn: http://www.raspberrypi.org/archives/1435 Kịch bản thời gian khởi động cho phép bạn thay đổi kích thước để tự động điền vào thẻ sdcard.


1
Tôi đang sử dụng Arch Linux.
Jivings

2
Làm thế nào sẽ làm một điều như vậy mặc dù?

2
Đây là cách dễ nhất để thay đổi kích thước các phân vùng cho bất kỳ hình ảnh khò khè cập nhật nào.
Yuval Adam

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.