A maneira mais fácil de obter uma configuração do kernel em funcionamento é apenas copiar .config
do Fedora e depois fazer um make oldconfig
para configurá-lo. A configuração é encontrada em /boot/config-*
Estou tentando instalar um kernel Linux (3.8.1) a partir do código-fonte em uma distribuição Fedora. O kernel é um baunilha. Eu sigo as instruções de compilação do kernel de perto, isto é:
make menuconfig
make
sudo make modules_install install
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Tudo em /boot
parece bem.
Eu posso ver System.map
, initramfs
e vmlinuz
para o kernel recém-compilado.
O link vmlinuz
aponta para vmlinuz-3.8.1
.
Existem vários outros kernels instalados, incluindo um Ubuntu.
O grub2 reconhece todos eles e eu posso inicializar em cada um deles.
Quando eu reinicio, vejo todos os kernels como entradas de menu e escolho 3.8.1.
Então vejo esta mensagem:
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
Solução:
Todas as três respostas postadas fornecem a solução. CONFIG_DEVTMPFS estava de fato causando o problema. Eu copiei um kernel de trabalho / boot / config-… para a raiz da árvore de código-fonte como .config e executei os comandos padrão para construir o kernel também mostrado acima.
Você precisa configurar seu kernel com essas opções 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
Analisando um problema similar em um sistema personalizado rodando systemd, parece que isso pode porque "CONFIG_DEVTMPFS" não está selecionado na configuração do kernel (note que esta é a primeira coisa na lista do sciurus dos requisitos do kernel para executar o systemd).
Para descobrir agora como corrigir isso, inicie make menuconfig
e use o recurso de pesquisa (pressione /
) para procurar por "DEVTMPFS". O primeiro hit é:
Symbol: DEVTMPFS [=y]
Type : boolean
Prompt: Maintain a devtmpfs filesystem to mount at /dev
Location:
-> Device Drivers
(1) -> Generic Driver Options
Abaixo, e eis que existe essa opção em Drivers de dispositivos - > Opções genéricas de driver .
Como vonbrand diz, é melhor começar com uma configuração que corresponda ao que você tem agora. Isso provavelmente pode ser encontrado gzipped como /proc/config.gz
. Copie isso e gunzip -c config.gz > .config
e use esse arquivo como o .config
preliminar em sua árvore de origem (mais detalhes em passo # 2 aqui ).