Tạm thời vô hiệu hóa mở rộng hệ thống tập tin trong lần khởi động đầu tiên


13

Tôi muốn xây dựng hình ảnh Raspberry Pi trong nhà dựa trên Raspbian Lite đã được cấu hình với ngôn ngữ chính xác, múi giờ, v.v. Thật không may cho tôi, các bản phát hành hình ảnh Raspbian hiện tại tự động thay đổi kích thước hệ thống tệp, sau đó khởi động lại.

Tôi muốn tránh những rắc rối về việc thu nhỏ hệ thống tập tin bằng cách ngăn chặn việc thay đổi kích thước không bao giờ xảy ra. Làm cách nào để chỉnh sửa hình ảnh sau khi ghi như để tạm thời vô hiệu hóa thay đổi kích thước hệ thống tệp tự động?

Chỉnh sửa để làm rõ hiệu ứng nên được đảo ngược; đó là tôi sẽ muốn hình ảnh tùy chỉnh của mình mở rộng ở lần khởi động đầu tiên.


Đây có thể không phải là giải pháp lý tưởng nhưng bạn đã cân nhắc sử dụng thẻ 4gb nhỏ trong đó điều này sẽ không gây ra vấn đề như vậy.
Steve Robillard

2
Ý tưởng thú vị .. ghi vào một thẻ nhỏ, hạn chế hiệu quả thay đổi kích thước. Tôi muốn một giải pháp trực tiếp nhưng đây là một giải pháp thay thế hợp lý. Cảm ơn
patricktokeeffe

2
Điều đó khá khó chịu. Tôi rất chắc chắn rằng điều này được thực hiện thông qua một số tập lệnh khởi động tự thực hiện đơn giản theo cách raspi-configđược chạy ở lần khởi động đầu tiên và sẽ rất dễ bị vô hiệu hóa. Tôi có thể có một cái nhìn nhưng tôi sẽ phải tải xuống một hình ảnh mới, hình ảnh cuối cùng tôi có là từ tháng Năm. Kiểm tra lại sau vài giờ.
goldilocks

Câu trả lời:


13

Có một cơ chế gồm hai phần chịu trách nhiệm về vấn đề này trên Raspbian; có thể ý tưởng tốt nhất là chăm sóc cả hai phần nếu chúng được kích hoạt.

Đầu tiên là bản gốc /boot/cmdline.txtbao gồm điều này:

init=/usr/lib/raspi-config/init_resize.sh

Đề cập đến một tập lệnh có đường dẫn đó trên phân vùng gốc, sẽ được sử dụng làm tiến trình init khi khởi động. Không có bit đó, nó sẽ mặc định là một giá trị được tích hợp trong kernel /sbin/init, mà trên Raspbian là một liên kết tượng trưng đến /lib/systemd/systemd.

Bằng cách loại bỏ phần đó cmdline.txt, hệ thống sẽ khởi động bình thường.

Những gì tập lệnh thực sự làm là thay đổi kích thước phân vùng trên thẻ SD. Đây là một quá trình khác biệt với việc thay đổi kích thước hệ thống tập tin trong phân vùng, 1 là điều xảy ra tiếp theo.

Cách xảy ra là hệ thống ngay lập tức được khởi động lại bình thường (nghĩa là thông qua systemd) và một init.dtập lệnh được thiết lập để kích hoạt sớm, cần được xóa khỏi phân vùng thứ hai:

/etc/init.d/resizefs_once

Và liên kết tượng trưng cho nó, cũng nên được gỡ bỏ:

/etc/rc3.d/S01resizefs_once

Bạn có thể giữ một bản sao để sử dụng sau nếu bạn muốn, nhưng raspi-configcó thể tạo lại bản sao cho bạn (nó được nhúng trong raspi-configtập lệnh shell). Nếu nó thực sự chạy, nó sẽ tự xóa, vì vậy nó sẽ không xảy ra lần nữa.

Những gì nó cũng làm là thay đổi kích thước hệ thống tập tin trong phân vùng vừa được thay đổi kích thước.

Không có hại phải được thực hiện nếu chỉ một hoặc một phần khác xảy ra; trong trường hợp đầu tiên, bạn kết thúc với một hệ thống tệp không lấp đầy phân vùng được mở rộng, trong lần thứ hai sẽ không có gì xảy ra, vì hệ thống tệp đã lấp đầy phân vùng.

Nếu sau này bạn sử dụng raspi-configđể phóng to hệ thống tập tin, nó sẽ thay đổi kích thước phân vùng ngay lập tức, sau đó thiết lập tập lệnh init (như đã đề cập).

Chỉnh sửa cmdline.txttrên phân vùng đầu tiên là đơn giản trên bất kỳ máy tính nào vì nó là phân vùng VFAT. Xóa init.dtệp yêu cầu một hệ thống có thể truy cập và chỉnh sửa hệ thống tệp ext4.

Thay vào đó, cả hai tác vụ có thể được thực hiện đối với tệp hình ảnh trước khi ghi thẻ; để gắn kết và sửa đổi hình ảnh Raspbian trên hệ thống GNU / Linux, xem tại đây . Có một câu hỏi và trả lời song song cho Windows .

Điều này cũng có thể đảo ngược, nhưng bạn sẽ cần đặt lại cả hai phần của cơ chế như đã mô tả, vì phần đầu tiên không bao gồm tự động dàn phần thứ hai.


  1. Mặc dù một thông báo lỗi từ tập lệnh đó có thể gây nhầm lẫn cho các điều khoản đó bằng cách tuyên bố rằng nó không thể thay đổi kích thước hệ thống tập tin gốc , khi điều mà nó thực sự không làm được là thay đổi kích thước phân vùng trên với hệ thống tập tin gốc nằm trong đó. Làm cái này không tự động hoàn thành cái kia.

1
Bình luận không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được chuyển sang trò chuyện .
Ghanima

@ goldilock của vô hiệu hóa init=/usr/lib/raspi-config/init_resize.shtừ /boot/cmdline.txtcác công trình trên ubuntu giao phối quá và dường như đủ tất cả của chính nó. Tôi có một hình ảnh bạn đời 4gb ub Ubuntu được flash vào sdcard 32gb và nó giữ kích thước phân vùng ở kích thước hình ảnh gốc. Ngoài ra /etc/init.d/resizefs_once/etc/rc3.d/S01resizefs_oncekhông tồn tại sau lần khởi động đầu tiên trên ub Ubuntu mate.
Sith

Chỉ cần xác nhận, việc khôi phục cả cmdline.txtinit.drc3.dtệp và liên kết sẽ cho phép lần khởi động tiếp theo tự thay đổi kích thước hoặc tôi sẽ chạy raspi-configvà chạy thủ công?
Oxwivi

@Oxwivi Nó nên, vâng. Tôi đã làm rõ toàn bộ bài đăng này và đã nhận xét rõ ràng về điều đó ở cuối.
goldilocks

Vâng, cảm ơn. Cũng cần lưu ý, IDK kể từ phiên bản nào nhưng ít nhất là phiên bản mới nhất không mang các tham chiếu kịch bản thay đổi kích thước mà bạn đã đề cập bên ngoài cmdline.txt. Tôi đã khởi động hình ảnh Raspbian bằng cách sử dụng systemd-nspawnvà vẫn nhận được các bản ghi lỗi cố gắng thay đổi kích thước sau khi xóa cmdline.txtđiều này, tuy nhiên.
Oxwivi
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.