Được rồi, tôi gặp sự cố với Fedora 34. Cụ thể hơn, tôi gặp sự cố với hình ảnh được xây dựng tùy chỉnh đó là một phần của các dịch vụ mà chúng tôi cung cấp.
Vấn đề
Vấn đề phải làm với initramfs. Hãy xem, chúng tôi đã sử dụng ban đầu cho đến bây giờ, nhưng số lượng gói và tệp nhị phân đã tăng lên kể từ lần nâng cấp cuối cùng của chúng tôi từ Fedora 32 lên Fedora 34. Không cần thêm các gói mới theo cách thủ công, các gói cơ sở, bản phát hành và gói phụ thuộc hiện đã tăng lên đến mức mà initrd đã có kích thước hơn 500 MB.
Kích thước của initrd này làm cho hình ảnh này rất không ổn định: chẳng hạn như PXE kế thừa không hoạt động vì hình ảnh này quá lớn đối với TFTP và sẽ đóng băng trên hầu hết các mạng. Tuy nhiên, vấn đề lớn nhất, quan trọng nhất mà chúng tôi gặp phải là GRUB2 không cho phép initrd này khởi động nữa, chủ yếu trên máy tính xách tay HP. Bất cứ khi nào chúng tôi quay lại Fedora 32, hình ảnh có vẻ ổn định hơn. Chúng tôi nghĩ rằng đó là do initrd nhỏ hơn ở đây. Các hình ảnh Fedora Workstation (34) mặc định cũng hoạt động trên các hệ thống mà hình ảnh tùy chỉnh của chúng tôi đang bị hoảng loạn nhân.
Hình ảnh của chúng tôi sử dụng một /vmlinuz
và /initrd
để khởi động vào RAMDisk bằng USB (GRUB2) hoặc PXE (iPXE). Điều này là do thiết kế: Ứng dụng của chúng tôi là một trình duyệt web kiosk tích hợp, dựa trên Chromium, chạy trên Fedora (34). Nó được cho là dễ bay hơi và không trạng thái.
initramfs
tôi đã xem xét initramfs như một sự thay thế cho ban đầu, vì nó mới hơn, nhẹ hơn nhiều và kích thước của tệp này có thể không gây ra bất kỳ lỗi nào trong GRUB2. Có lẽ điều này cũng sẽ cho phép chúng tôi sử dụng các triển khai PXE kế thừa như PXELINUX và Dịch vụ triển khai Windows. Tôi hình dung tôi có thể dễ dàng thay thế việc sử dụng CPIO + XZ với bản nháp. Nhưng tôi đã bị mắc kẹt trong một vấn đề mà tôi thực sự không thể hiểu nổi...
Nghịch lý
Thay thế initrd bằng initramfs trong GRUB2 không khó lắm. Nếu tôi sử dụng cùng một tên cho cả hai tệp (không phải cùng một lúc), nó sẽ tìm tên tệp trong cấu hình và tìm tệp. Dễ dàng, phải không? Nhưng sau đó, các thông báo hạt nhân bật lên và nó không khởi động được khi đọc nội dung như: Chuyển đổi gốc không thành công: Đường dẫn gốc chuyển đổi được chỉ định /sysroot dường như không phải là cây hệ điều hành. tập tin phát hành os bị thiếu.
Không cần phải nói, tôi đã kiểm tra nội dung của /sysroot
: trống rỗng. nên có một phát hành hệ điều hành
trong tập tin /vân vân
. Đọc trên "Sysroot", nó được cho là gắn kết cấu trúc thư mục HĐH, đó có thể là lý do tại sao nó cho tôi biết rằng nó thiếu một số tệp.
Sysroot
Đây là nơi tôi bị lạc: Cấu trúc thư mục bên trong initramfs, phải không? Nhưng để chạy initramfs thông qua GRUB2, tôi cần gắn cấu trúc thư mục vào Sysroot. Điều đó có nghĩa là tôi chỉ có thể đạt được /sysroot
từ bên trong initramfs. Nhưng tôi không thể gắn initramfs, vì tôi cần tệp phát hành hệ điều hành trong /sysroot
. Tôi cũng không thể gắn các thư mục bên trong initramfs, vì đó là tệp hình ảnh. Bạn có thể thấy nghịch lý của tôi? Làm thế nào tôi có nghĩa vụ phải gắn kết để /sysroot
, khi điều này yêu cầu một cái gì đó bên trong initramfs
chính nó? Tôi đã thử gốc=
tham số hạt nhân với một THAM GIA hoặc NHÃN MÁC, nhưng tôi không thể sử dụng UUID vì đó là vFAT trên UEFI.
Tôi đã bỏ lỡ một cái gì đó ở đây? Tôi thậm chí có nên sử dụng initramfs khi sử dụng USB RAMDisks có thể khởi động không? Nếu không, tôi có nên xem xét việc tách initrd thành nhiều tệp không? Làm thế nào để tôi thậm chí làm điều này?
GHI CHÚ: Chúng tôi đã sử dụng mức nén cao nhất có thể (XZ cấp 9). Tôi đã thử tách initrd trước đây, nhưng tôi không thể thực hiện đúng cách.
Cá nhân tôi không thích yêu cầu trợ giúp, nhưng khi tất cả các kết quả tìm kiếm của Google đều có màu tím, tôi có thể cần một hướng đi đúng đắn. Rất nhiều hệ thống không hoạt động sau khi chúng tôi nâng cấp lên F:34 và tôi thực sự muốn sửa lỗi này. Có ai biết làm thế nào để sử dụng Dracut đúng cách? Bất kỳ ai có kinh nghiệm tạo hình ảnh initramfs? Tại sao là của tôi /sysroot
chưa được gắn kết?
Trợ giúp được đánh giá cao, cảm ơn bạn.