it-swarm-ja.com

自己構築カーネル:/ devのマウントに失敗しました:そのようなデバイスはありません

Linuxカーネル(3.8.1)をソースからFedoraディストリビューションにインストールしようとしています。カーネルはバニラのものです。私はカーネルのビルド手順に厳密に従います。

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

/bootのすべてが問題ないようです。新しくコンパイルされたカーネルのSystem.mapinitramfsvmlinuzを確認できます。 vmlinuzリンクはvmlinuz-3.8.1を指します。 Ubuntuカーネルを含め、他にも複数のカーネルがインストールされています。 grub2はそれらすべてを認識し、それぞれを起動できます。

再起動すると、すべてのカーネルがメニューエントリとして表示され、3.8.1を選択します。

次に、次のメッセージが表示されます。

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

解決:

投稿された3つの応答すべてがソリューションを提供します。 CONFIG_DEVTMPFSが実際に問題の原因でした。作業中のカーネルの/ boot/config-…を.configとしてソースツリーのルートにコピーし、上記のカーネルを構築するための標準コマンドを実行しました。

7
mfrank.23

機能するカーネル構成を取得する最も簡単な方法は、Fedoraの.configをコピーしてから、make oldconfigを実行して構成することです。構成は/boot/config-*にあります

4
vonbrand

これらのオプション sでカーネルを設定する必要があります:

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
6
sciurus

同様の問題 systemdを実行しているカスタムシステムで見ると、カーネル構成で「CONFIG_DEVTMPFS」が選択されていないことが原因である可能性があります(これが最初にあることに注意してください sciurusのリスト = systemdを実行するためのカーネル要件の)。

これを修正する方法を理解するには、make menuconfigを起動し、検索機能(/を押す)を使用して「DEVTMPFS」を探します。最初のヒットは:

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

低く見よ、Device Drivers-> Generic Driver Optionsにそのようなオプションがあります。

フォンブランドが言うように、あなたは今持っているものと一致する設定から始めるのが一番です。これはおそらく/proc/config.gzとしてgzip圧縮されて見つかります。それをgunzip -c config.gz > .configにコピーし、そのファイルをソースツリーの予備の.configとして使用します(詳細は ステップ#2はこちら )。

3
goldilocks