# Kernel 4.14.8-r1 Initramfs No AT Keyboard

## lillypad

Hello Gentoo People,

I've been having some difficulty with initramfs recognizing my standard usb keyboard / all usb devices.

Everything works just fine in grub but when I get to initramfs everything is gone and unable to type in the luks passphrase.

If I revert back to the 4.9.49-r1 even on a fresh install the keyboard works.

I've noticed the make_firmware make target was removed in the newer kernel versions and am unsure if this has anything to do with it.

This is the process I use to compile the kernel

```

zcat /proc/config.gz > /usr/src/linux/.config

cd /usr/src/linux/

make menuconfig

make

make firmware_install # if available

make modules_install

make install

genkernel --lvm --luks --install initramfs

grub-install --modules="linux crypto search_fs_uuid luks lvm" --recheck /dev/sda

grub-mkconfig -o /boot/grub/grub.cfg

```

Here is my grub lines for encrypted root:

```

GRUB_PRELOAD_MODULES="lvm luks cryptsetup"

GRUB_CRYPTODISK_ENABLE=y

GRUB_DEVICE=/dev/ram0

GRUB_CMDLINE_LINUX="real_root=/dev/mapper/vg0-root rootfstype=ext4 crypt_root=/dev/sda2 dolvm"

```

For whatever reason it appears that if i have the make_firmware target available in the kernel version it works however without it does not.

I've also tried installing linux-firmware without success.

Any ideas when this may be fixed or perhaps I'm doing something wrong?

ThanksLast edited by lillypad on Wed Dec 27, 2017 12:32 pm; edited 2 times in total

----------

## khayyam

 *lillypad wrote:*   

> 
> 
> ```
> zcat /proc/config/gz > /usr/src/linux/.config
> ```
> ...

 

lillypad ... that typo, if it is in fact the command used, may be enough to cause the kernel to be built without some necessary support, as the resulting .config would be empty.

best ... khay

----------

## lillypad

 *khayyam wrote:*   

>  *lillypad wrote:*   
> 
> ```
> zcat /proc/config/gz > /usr/src/linux/.config
> ```
> ...

 

Hey khayyam,

I didn't make the typo when doing on my machine however i have when typing out the post and I apologize.

The same issue still remains I'm having to revert to 4.9.49-r1 for USB to work at all.

Cheers

----------

## NeddySeagoon

lillypad,

```
$ grep USB_PCI /usr/src/linux/.config

CONFIG_USB_PCI=y
```

That's a newish option intended to remove the PCI USB drivers on embedded systems that don't have PCI.

On a PC, it must be =y or you don't get any USB support.  I think its defaults to =n, which is a very bad thing for most users.

----------

## khayyam

 *lillypad wrote:*   

> I didn't make the typo when doing on my machine however i have when typing out the post and I apologize.

 

lillypad ... no problem.

 *lillypad wrote:*   

> The same issue still remains I'm having to revert to 4.9.49-r1 for USB to work at all.

 

Well, you should probably pastebin the .config. Also, I'm not sure it matters but I generally use 'oldconfig' when re-using a .config from a prior kernel.

```
# eselect kernel list

# eselect kernel set {n}

# zcat /proc/config.gz > /usr/src/linux/.config

# cd /usr/src/linux

# make oldconfig

# awk '!/^#/&&/USB/' .config # the necessary driver(s) should be =y, and not =m

# make clean && make && make modules_install

.... etc ... etc

# if [[ -e /usr/bin/wgetpaste ]] ; then wgetpaste .config ; else emerge --ask app-text/wgetpaste && wgetpaste .config ; fi
```

HTH & best ... khay

----------

## lillypad

 *NeddySeagoon wrote:*   

> lillypad,
> 
> ```
> $ grep USB_PCI /usr/src/linux/.config
> 
> ...

 

I've observed the following:

```

zcat /proc/config.gz | grep -i usb | grep -i pci

CONFIG_USB_PCI=y

CONFIG_USB_XHCI_PCI=m

CONFIG_USB_EHCI_PCI=m

CONFIG_USB_OHCI_HCD_PCI=m

```

I do the following to generate the config in the src directory.

```

zcat /proc/config.gz > /usr/src/linux/.config

```

This means that this option is enabled however seems to still be not functional.

Which is really odd.

Looking into it more right now.

----------

## NeddySeagoon

lillypad,

Lets not work through a keyhole.  Make friends with wgetpaste and share the entire kernel .config.

Post the output of 

```
lspci
```

too, so we can see your USB root hubs to check the .config.

```
CONFIG_USB_XHCI_PCI=m

CONFIG_USB_EHCI_PCI=m

CONFIG_USB_OHCI_HCD_PCI=m 
```

tells that you need an initrd to have USB support before root is mounted.

Once root is mounted, the modules should auto load.

If you have an initrd how do you build and load it?

XHCI is USB 3.  EHCI is USB2. OHCI is non Intel and VIA USB1.

if the autoloading is broken for whatever reason, adding the module names to /etc/conf.d/modules may let you investigate further.

----------

## lillypad

 *NeddySeagoon wrote:*   

> lillypad,
> 
> Lets not work through a keyhole.  Make friends with wgetpaste and share the entire kernel .config.
> 
> Post the output of 
> ...

 

I build initrd as follows:

```

genkernel --lvm --luks --install initramfs

```

Output of lspci:

[code]

00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD9x0/RX980 Host Bridge (rev 02)

00:02.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GFX port 0)

00:04.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 0)

00:05.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 1)

00:06.0 PCI bridge: Advanced Mic[code]ro Devices, Inc. [AMD/ATI] RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 2)

00:07.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 3)

00:09.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 4)

00:0a.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 5)

00:0b.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890/RD990 PCI to PCI bridge (PCI Express GFX2 port 0)

00:0c.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890/RD990 PCI to PCI bridge (PCI Express GFX2 port 1)

00:0d.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP2 Port 0)

00:11.0 SATA controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] (rev 40)

00:12.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller

00:12.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller

00:13.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller

00:13.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller

00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 SMBus Controller (rev 42)

00:14.2 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 Azalia (Intel HDA) (rev 40)

00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 LPC host controller (rev 40)

00:14.4 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 PCI to PCI Bridge (rev 40)

00:14.5 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI2 Controller

00:16.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller

00:16.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller

00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor HyperTransport Configuration

00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Address Map

00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor DRAM Controller

00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Miscellaneous Control

00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Link Control

01:00.0 VGA compatible controller: NVIDIA Corporation GP104 [GeForce GTX 1070] (rev a1)

01:00.1 Audio device: NVIDIA Corporation GP104 High Definition Audio Controller (rev a1)

02:00.0 SATA controller: ASMedia Technology Inc. ASM1062 Serial ATA Controller (rev 01)

03:00.0 Ethernet controller: Intel Corporation 82583V Gigabit Network Connection

04:00.0 USB controller: ASMedia Technology Inc. ASM1042A USB 3.0 Host Controller

05:00.0 USB controller: ASMedia Technology Inc. ASM1042A USB 3.0 Host Controller

06:00.0 USB controller: ASMedia Technology Inc. ASM1042A USB 3.0 Host Controller

07:00.0 SATA controller: ASMedia Technology Inc. ASM1062 Serial ATA Controller (rev 01)

09:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 630] (rev a1)

09:00.1 Audio device: NVIDIA Corporation GF108 High Definition Audio Controller (rev a1)

[/code]

Kernel Config: https://pastebin.com/raw/GRzaPKKV

Hope this helps outLast edited by lillypad on Wed Dec 27, 2017 4:10 pm; edited 1 time in total

----------

## NeddySeagoon

lillypad,

Your lspci is useful but the kernel .config is too big for a post, hence the request to use wgetpaste.

----------

## lillypad

 *NeddySeagoon wrote:*   

> lillypad,
> 
> Your lspci is useful but the kernel .config is too big for a post, hence the request to use wgetpaste.

 

Here is it in pastebin: https://pastebin.com/raw/GRzaPKKV

----------

## NeddySeagoon

lillypad,

I have

```
[AMD/ATI] SB7x0/SB8x0/SB9x0
```

 USB 1 and USB 2 ports with a uPD720200 USB 3.0 Host Controller plug in card for USB 3.

My USB stuff is configured as =y rather than =m.  I don't see any other differences.

See for yourself https://paste.pound-python.org/show/kC18H4Va578WKSLg4dUf/

I do recall that in the early days of USB2 that module load order mattered.

I had a script in /etc/local.d/ that removed the modules then loaded them in the right order.

I've not seen that for a long time.

Try configuring your USB support as built in.

----------

## lillypad

 *NeddySeagoon wrote:*   

> lillypad,
> 
> I have
> 
> ```
> ...

 

I've started building this with USB 2.0 and USB 3.0 built in as y instead of m.

I'm thinking it will work but not too sure.

I also tried putting modules="hidusb" into /etc/conf.d/modules without success.

I'll post back with the results when usb 2.0 and 3.0 are built in if that doesn't work might have to change the order the modules are loaded again which does seem like going backwards.

I'm going to try a diff on my configuration and yours and see what stands out.

UPDATE:

Here is the diff of your config and mine after removing comments as well as sorting.

http://termbin.com/jp1q

Here is the side by side comparison:

http://termbin.com/snqj

Also in the file /usr/share/genkernel/arch/x86_64/modules_load it appears all the modules that genkernel uses during creation of initramfs are infact there:

http://termbin.com/zor2

I just recompiled everything as well included usb 2.0 and 3.0 support into the kernel and usb is still dead on boot.

I just also tried a ps2 keyboard and it also doesn't work which makes it even more interesting.

I'm thinking this is probably a bug.

Cheers and thank you for the help so far

----------

## lillypad

Hello,

I'd like to confirm the solution is to do the following:

```

emerge -C sys-kernel/genkernel

emerge -v sys-kernel/genkernel-next

genkernel --luks --lvm --install initramfs

```

This fixes the issues thus I've concluded this appears to be an issue with the main fork of genkernel.

Hopefully the issues surrounding genkernel fix this i did end up unmasking the unstable version but without success.

Perhaps we should consider merging genkernel-next into genkernel and call it a day lol.

Thanks for the help.

----------

