Điểm:0

Một số lệnh (ví dụ: modprobe hoặc usermod) không thành công do các lệnh muộn trong cài đặt tự động Ubuntu

lá cờ pt

Tôi đang cố gắng thiết lập chứa cho kubernetes xuyên qua Cơ chế tự động cài đặt của Ubuntu (dành cho Ubuntu 20.04).

Một số lệnh khi sử dụng trong lệnh muộn dường như thất bại mà không có lý do rõ ràng. (Thoát > 0 mà không có đầu ra mô tả.) Đoạn mã bị lỗi từ lệnh muộn giống như:

  lệnh muộn:
    - printf 'overlay\nbr_netfilter\n' > /target/etc/modules-load.d/containerd.conf
    - lớp phủ trong mục tiêu curtin --target=/target -- /usr/sbin/modprobe
    - curtin trong mục tiêu --target=/target -- /usr/sbin/modprobe br_netfilter

Lỗi trình cài đặt cho thấy rằng modprobe thoát cuộc gọi 1.

nhập mô tả hình ảnh ở đây

Tôi khởi động lại VM, đăng nhập với tên Ubuntu, và trở thành nguồn gốc. Lúc đó tôi có thể chạy lớp phủ modprobe thành công (thoát 0). tôi cũng không thể nhìn thấy /var/sụp đổ/16238... (xem ở trên) vì nó dường như không tồn tại trên mục tiêu. (Tôi đoán nó tồn tại trong môi trường trình cài đặt.) /var/log/trình cài đặt không chứa gì hữu ích cả.

Với những điều trên, những gì nó có thể làm cho modprobe thất bại như một lệnh muộn? Dường như không liên quan, tôi cũng đã thử một thay đổi -d 0 cuộc gọi không thành công với thông báo lỗi bằng không. Có một số lời giải thích tại sao một số lệnh có thể không tồn tại hoặc không hoạt động đúng trong môi trường đích ở giai đoạn đó không?


Chỉnh sửa 1: liên quan đến lỗi usermod, tôi đoán câu trả lời này gợi ý rằng người dùng ubuntu không được tạo tại thời điểm đó trong quá trình cài đặt.

Chỉnh sửa 2: Tôi đã thêm một lỗi-lệnh có vẻ hữu ích để gỡ lỗi:

  lỗi-lệnh:
    - /usr/bin/tail -n 250 /var/log/syslog

Điều này bây giờ cho thấy Không tìm thấy lớp phủ mô-đun trong /lib/modules/...:

nhập mô tả hình ảnh ở đây

waltinator avatar
lá cờ it
Đọc tệp `/var/crash/` được đề cập ở dòng cuối cùng trong ảnh của bạn. Đó là một tệp văn bản, vì vậy bạn có thể sử dụng `less`.
Brad Solomon avatar
lá cờ pt
Tệp không tồn tại như được quảng cáo trên mục tiêu, như được nêu trong câu hỏi của tôi. Tôi tin rằng nó nằm trong môi trường trình cài đặt mà tôi không thể truy cập.
Điểm:0
lá cờ pt

Nguyên nhân sâu xa của vấn đề này là do modprobe đã tìm sai vị trí do kernel được cập nhật trước khi khởi động lại.

Trong quá trình cài đặt, bạn có thể sử dụng CTRL+Z để vào Bash shell với tư cách là người dùng root trong trình cài đặt. Trong môi trường này, /Ổ đĩa CD là ISO được gắn (iso9660) và /Mục tiêu là gốc của hệ thống tập tin đích. Đây là một cách tuyệt vời để gỡ lỗi curtin trong mục tiêu các lệnh, mà bên trong về cơ bản là một chroot/mục tiêu cuộc gọi.

Trong trường hợp modprobe, đầu ra hiển thị:

modprobe: FATAL: không tìm thấy mô-đun lớp phủ trong thư mục /lib/modules/5.4.0-65-generic

Trong khi thư mục này tồn tại trên trình cài đặt, trên mục tiêu những gì thực sự tồn tại là:

/target/lib/modules/5.4.0-80-generic

Lưu ý một chút thay đổi trong phiên bản kernel mà modprobe chưa phát hiện ra. Tôi tin rằng điều này là do cập nhật kernel trong quá trình cài đặt.

Để sửa lỗi cho lệnh cụ thể này, modprobe cho phép bạn đặt phiên bản:

curtin -v trong mục tiêu --target=/mục tiêu \
    -- /usr/sbin/modprobe --set-version 5.4.0-80-lớp phủ chung

Với --set-phiên bản lệnh sẽ chạy thành công và thoát 0.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.