LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware - Installation (https://www.linuxquestions.org/questions/slackware-installation-40/)
-   -   Slackware64-current(>14.2): bug with UEFI install onto DELL Inspiron 14-3452 laptop ( eMMC 32GB drive ) from usb-stick image (https://www.linuxquestions.org/questions/slackware-installation-40/slackware64-current-14-2-bug-with-uefi-install-onto-dell-inspiron-14-3452-laptop-emmc-32gb-drive-from-usb-stick-image-4175587811/)

ckrzen 08-23-2016 06:05 PM

Slackware64-current(>14.2): bug with UEFI install onto DELL Inspiron 14-3452 laptop ( eMMC 32GB drive ) from usb-stick image
 
BUG-REPORT:


Laptop:

DELL Inspiron 14-3452
UEFI/BIOS rev 4.0.9(latest)
eMMC (embedded MultiMediaCard) One embedded MultiMediaCard as main hard drive(32-GB)

Info:

http://www.dell.com/us/p/inspiron-14-3452-laptop/pd

http://www.dell.com/support/home/us/...laptop/manuals



CHALLENGE:

Installer initrd.img loads modules(mmc_core,mmc_block,sdhci,sdhci_acpi) needed for drive discovery, partitioning & selection in TARGET of install. However, the "eliloconfig" script does _not_ see the EFI partition(/dev/mmcblk0p1) during boot loader installation and silently fails through to the next setup step.


CAUSE:

Perhaps the drive sensing logic of the eliloconfig script does not include the eMMC sections in its evaluation of the /dev/ directory?

Line #10 of the
Code:

/usr/lib/setup/SeTEFI
script only probes for drives
Code:

sda..sdp
The partitions needing detection, in my case, are:

Code:

/dev/mmcblk0p1 = EFI(512-MB VFAT ESP)

/dev/mmcblk0p2 = LINUX-SWAP(4-GB SWAP)

/dev/mmcblk0p3 = LINUX(24.6-GB EXT4 /)


SOLUTION:

1. Rebuild the vmlinuz-huge kernel to include:

Code:

CONFIG_MMC=y
CONFIG_MMC_BLOCK=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_PCI=y
CONFIG_MMC_SDHCI_ACPI=y

2. Replace the pre-existing huge.s file on the root of the usb-stick with the new vmlinuz-huge.

3. Rebuild the SeTEFI script to also probe /dev/mmcblk0...mmcblk16.

4. Add the 'rootwait' kernel parameter to the elilo.conf append line for eMMC installs.

5. Install and enjoy(not tested).


OR


4. Chroot into TARGET after install, but _before_ rebooting and build an initrd.gz with the needed modules for the eMMC drive and adjust the elilo.conf, accordingly. NOTE: 'rootwait' is _not_ needed if using the vmlinuz-generic with an initrd.gz.

5. Install and enjoy(not tested).


OR


4. If you choose _not_ to rebuild the probing function in the SeTEFI script, then -- after install, but _before_ reboot:

a.
Code:

#mkdir -p /mnt/boot/efi/EFI/Slackware
b. Populate /mnt/boot/efi/EFI/Slackware with elilo boot files
Code:

elilo.conf*  elilo.efi*  vmlinuz*(<-- this is your rebuilt vmlinuz-huge copied into this folder and referenced in your elilo.conf)
c. Change elilo.conf to include 'rootwait', i.e.
Code:

append="root=/dev/mmcblk0p3 rootwait"
d. Edit /etc/fstab and add just below the '/' mount entry:
Code:

/dev/mmcblk0p1    /boot/efi    vfat    defaults    1  0
5. Reboot and enjoy(tested).

ckrzen 08-25-2016 11:09 AM

UPDATE:

1. Just to clarify, the SeTEFI script will prolly need to probe for something more like this " /dev/mmcblk{0..16}p " in order to match the logic of the " /dev/sd{a..p} ". [ IANAP ;-) ]


2. I have now tested the ' chroot ' before reboot idea and it works well. However, it is *important* to first mount your EFI(ESP) partition onto /boot/efi _before_ you create the subdirectories it needs(i.e. ' # mkdir -p /boot/efi/EFI/Slackware/).


And then,

Code:

# /usr/share/mkinitrd/mkinitrd_command_generator.sh

# { insert output of previous cmd here }

# cp vmlinuz-generic initrd.gz /boot/efi/EFI/Slackware/

# vi /boot/efi/EFI/Slackware/elilo.conf


lka 11-12-2016 11:12 AM

I ran into this problem installing on my HP Stream 13 netbook (13-c110nr) which has a similar mmcblk0 device though I'm still having some issues. Getting the system to boot after install was complicated, because I wasn't sure if I had done something wrong with my ELILO installation (true, since the installer fails to check the mmcblk0 device for an EFI partition it never attempts to configure it) or if the kernel couldn't read the root disk upon reboot (this was true also). After a lot of muddling I managed to manually configure ELILO and to get the system to boot by compiling a new huge kernel using the existing huge config plus the following changes as suggested above:

CONFIG_MMC=y
CONFIG_MMC_BLOCK=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_PCI=y
CONFIG_MMC_SDHCI_ACPI=y

However, despite many attempts I haven't been able to make a generic kernel + initrd see the root device and boot successfully on this machine. Here is what mkinitrd_command_generator.sh puts out once booted under the newly-compiled huge kernel, but this combination of modules doesn't work:

mkinitrd -c -k 4.4.29 -f ext4 -r /dev/mmcblk0p3 -m mmc_core:iosf_mbi:sdhci:sdhci-acpi:xhci-pci:ohci-pci:ehci-pci:xhci-hcd:uhci-hcd:ehci-hcd:hid:usbhid:i2c-hid:hid_generic:hid-cherry:hid-logitech:hid-logitech-dj:hid-logitech-hidpp:hid-lenovo:hid-microsoft:hid_multitouch:jbd2:mbcache:ext4 -u -o /boot/initrd.gz

I've also tried recompiling a generic kernel with the above config options (e.g. built into the kernel as opposed to modules) and that didn't boot either though I don't know why. How do I track down which modules or config options I actually need to include to access the root device?

dmesg output: pastebin.com/raw/anhD9W8S

lka 11-19-2016 03:21 PM

Update:
After a lot more experimentation I was able to make a generic kernel work on my device (HP Stream 13) by:
1) Upgrading to kernel 4.8.7
2) In addition to the above kernel config options, setting CONFIG_PINCTRL_BAYTRAIL=y in config

Chuck56 11-27-2016 08:24 AM

Quote:

Originally Posted by lka (Post 5629792)
...
mkinitrd -c -k 4.4.29 -f ext4 -r /dev/mmcblk0p3 -m mmc_core:iosf_mbi:sdhci:sdhci-acpi:xhci-pci:ohci-pci:ehci-pci:xhci-hcd:uhci-hcd:ehci-hcd:hid:usbhid:i2c-hid:hid_generic:hid-cherry:hid-logitech:hid-logitech-dj:hid-logitech-hidpp:hid-lenovo:hid-microsoft:hid_multitouch:jbd2:mbcache:ext4 -u -o /boot/initrd.gz

I run into this same shortcoming on my Kangaroo PC with eMMC drives. In your mkinitrd command either add mmc_block or change the mmc_core to mmc_block (mmc_core loads auto-magically from mmc_block).


All times are GMT -5. The time now is 06:13 PM.