Hạt nhân tự xây dựng: không thể mount / dev: Không có thiết bị như vậy


7

Tôi đang cố gắng cài đặt kernel Linux (3.8.1) từ nguồn trong bản phân phối Fedora. Nhân là một vani. Tôi theo sát hướng dẫn xây dựng của kernel đó là:

make menuconfig
make
sudo make modules_install install
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Mọi thứ trong /bootcó vẻ tốt. Tôi có thể thấy System.map, initramfsvmlinuzcho kernel mới được biên dịch. Các vmlinuzliên kết trỏ đến vmlinuz-3.8.1. Có nhiều nhân khác được cài đặt bao gồm một Ubuntu. grub2 nhận ra tất cả chúng và tôi có thể khởi động cho từng người trong số họ.

Khi tôi khởi động lại, tôi thấy tất cả các hạt nhân là các mục menu và chọn 3.8.1.

Sau đó tôi thấy tin nhắn này:

early console in decompress_kernel
decompressing Linux... parsing ELF ... done
Booting the kernel.
[1.687084] systemd [1]:failed to mount /dev:no such device
[1.687524] systemd [1]:failed to mount /dev:no such device

Giải pháp:

Tất cả ba phản hồi được đăng cung cấp giải pháp. CONFIG_DEVTMPFS trên thực tế đã gây ra sự cố. Tôi đã sao chép kernel / boot / config- của kernel vào gốc của cây nguồn dưới dạng .config và thực thi các lệnh tiêu chuẩn để xây dựng kernel cũng được hiển thị ở trên.


1
Tại sao bạn xây dựng một hạt nhân cũ như vậy, BTW?
vonbrand

Nó phụ thuộc vào định nghĩa cũ của một người. Tôi, ví dụ, sẽ xem xét v2.6 cũ :-). Tôi đang làm một số thử nghiệm về cấu trúc dữ liệu kernel cho mục đích nghiên cứu. Phiên bản này nằm trong tầm tay của tôi, nhưng nhiều phiên bản khác sẽ hoạt động tốt.
mfrank.23

Câu trả lời:


4

Cách dễ nhất để có được cấu hình kernel hoạt động là chỉ cần sao chép của Fedora .configvà sau đó thực hiện make oldconfigcấu hình nó. Cấu hình được tìm thấy tại/boot/config-*


6

Bạn cần cấu hình kernel của mình với các tùy chọn sau:

Linux kernel >= 3.0
CONFIG_DEVTMPFS
CONFIG_CGROUPS (it's OK to disable all controllers)
CONFIG_INOTIFY_USER
CONFIG_SIGNALFD
CONFIG_TIMERFD
CONFIG_EPOLL
CONFIG_NET
CONFIG_SYSFS
CONFIG_PROC_FS
CONFIG_FHANDLE (libudev, mount and bind mount handling)

Linux kernel >= 3.8 for Smack support

Udev will fail to work with the legacy layout:
CONFIG_SYSFS_DEPRECATED=n

Legacy hotplug slows down the system and confuses udev:
CONFIG_UEVENT_HELPER_PATH=""

Userspace firmware loading is deprecated, will go away, and
sometimes causes problems:
CONFIG_FW_LOADER_USER_HELPER=n

Some udev rules and virtualization detection relies on it:
CONFIG_DMIID

Support for some SCSI devices serial number retrieval, to
create additional symlinks in /dev/disk/ and /dev/tape:
CONFIG_BLK_DEV_BSG

Optional but strongly recommended:
CONFIG_IPV6
CONFIG_AUTOFS4_FS
CONFIG_TMPFS_POSIX_ACL
CONFIG_TMPFS_XATTR
CONFIG_SECCOMP

For systemd-bootchart, several proc debug interfaces are required:
CONFIG_SCHEDSTATS
CONFIG_SCHED_DEBUG

For UEFI systems:
CONFIG_EFI_VARS
CONFIG_EFI_PARTITION

Note that kernel auditing is broken when used with systemd's
container code. When using systemd in conjunction with
containers, please make sure to either turn off auditing at
runtime using the kernel command line option "audit=0", or
turn it off at kernel compile time using:
CONFIG_AUDIT=n

3

Nhìn vào một vấn đề tương tự trên một hệ thống tùy chỉnh đang chạy systemd, có vẻ như điều này có thể là do "CONFIG_DEVTMPFS" không được chọn trong cấu hình kernel (lưu ý đây là điều đầu tiên trong danh sách các yêu cầu kernel của sciurus khi chạy systemd).

Để tìm ra cách sửa lỗi này, hãy bắt đầu make menuconfigvà sử dụng tính năng tìm kiếm (nhấn /) để tìm "DEVTMPFS". Cú đánh đầu tiên là:

Symbol: DEVTMPFS [=y]  
Type  : boolean  
Prompt: Maintain a devtmpfs filesystem to mount at /dev                                                  
  Location:                                            
    -> Device Drivers
(1)   -> Generic Driver Options   

Thấp và kìa, có một tùy chọn như vậy trong Trình điều khiển thiết bị-> Tùy chọn trình điều khiển chung .

Như vonbrand nói, tốt nhất bạn nên bắt đầu với một cấu hình phù hợp với những gì bạn có bây giờ. Điều này có thể được tìm thấy gzipped như /proc/config.gz. Sao chép gunzip -c config.gz > .configtệp đó ra và sử dụng tệp đó làm sơ bộ .configtrong cây nguồn của bạn (chi tiết hơn trong bước # 2 tại đây ).

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.