# No initial text-mode console [SOLVED]

## mounty1

This is a very basic question but I cannot get an initial text-mode console;  that is, when the machine boots, the screen is entirely blank until lightdm starts.  I'm concerned that if lightdm fails, the only way in is ssh, which isn't much good if I'm not at home.  Can anyone tell what is wrong with the .config to cause this?  The machine is a Lenovo W520.  There is absolutely no text during startup, and the virtual consoles on ctrl-alt-F1 etc. are blank.  Thanks.

----------

## shrike

mounty1,

Set CONFIG_FB=y. I had same problem, this solved it.

No guarantees. :)

shrike

----------

## mounty1

 *shrike wrote:*   

> No guarantees. 

 Just as welll, because that option not only does not show the boot process, but suppresses the starting-up of the lightdm session.  Thanks, but no.

----------

## NeddySeagoon

mounty1,

That looks like an Optimus graphics combo.

CONFIG_DRM_I915=m should get you a free framebuffer console, after the module loads.

You can get it earlier by making this module and its firmware both built into the kernel.  

Your kernel config looks very odd in the CONFIG_FB_* department.

EFI, SIMPLE, VESA and UVESA are all missing as options. 

The kernel help says 

```
CONFIG_FB_VESA

Depends on: HAS_IOMEM [=y] && FB [=y]=y && X86 [=y]
```

You have  HAS_IOMEM [=y], FB [=m] and X86 [=y], so the depends on is true, yet the CONFIG_FB_VESA symbol is missing from you config file.

I've not checked the Depends on for the others.

Have you been using $EDITOR on the .config?

The config file you posted is illegal. It will probably cause so odd, hard to diagnose problems.

If you have ever used a text editor ot the .config, throw it away and start again. 

It cannot be salvaged.

----------

## mounty1

 *NeddySeagoon wrote:*   

> That looks like an Optimus graphics combo.

 Indeed, and what a marathon it was to get it working.

 *NeddySeagoon wrote:*   

> CONFIG_DRM_I915=m should get you a free framebuffer console, after the module loads.

 Neddy ... that option was already set.

 *NeddySeagoon wrote:*   

> Your kernel config looks very odd in the CONFIG_FB_* department.[...]If you have ever used a text editor ot the .config, throw it away and start again. 
> 
> It cannot be salvaged.

 Nope;  I've only ever edited via make menuconfig and haven't encountered any problems with failed builds or kernel crashes or the like.

Another symptom is that when the graphical session has started, ctrl-alt-F1 seems merely to `freeze' the display and make the mouse-pointer disappear;  it does not change to a black screen (with or without text).  Then ctrl-alt-F7 resumes the graphical session.

----------

## NeddySeagoon

mounty1,

Run make oldconfig in your kernel tree.

It should appear to do nothing but if those CONFIG_FB_ symbols are back, rebuild the kernel.

It looks like something nasty has happened to your kernel config.

Illegal kernel configs don't always lead to crashes and the damage is not obvious.

The concern is what else is illegal?

----------

## mounty1

 *NeddySeagoon wrote:*   

> Run make oldconfig in your kernel tree.
> 
> It should appear to do nothing but if those CONFIG_FB_ symbols are back, rebuild the kernel.
> 
> It looks like something nasty has happened to your kernel config.

 I ran:

```
# cp .config config.suss

# make oldconfig

# diff .config config.suss
```

There was no output from the diff command.

Updated .config.

----------

## NeddySeagoon

mounty1,

It looks like the problem was my end.  Those options are in you first .config file for me now.

You have CONFIG_FB_EFI=y which is only useful if you boot in UEFI mode.

Otherwise you only get a console after the CONFIG_DRM_I915=m module loads.

# CONFIG_FB_VESA is not set would be harmless to turn on as it will live with nvidia-drivers. Well, it used to.

A pastebin of dmesg would be useful too.

----------

## mounty1

Thanks for your continued interest.

I do boot in UEFI mode, directly;  that is, the kernel is UEFI-conpatible executable which I install with efibootmgr;  no GRUB, LILO etc.

I tried CONFIG_FB_VESA but no dice. Also CONFIG_FB_VGA16.

Pastebin https://pastebin.com/Fy2WsuFZ.

----------

## NeddySeagoon

mounty1,

dmesg gooks good.

```
[   10.834585] [drm] Memory usable by graphics device = 2048M

[   10.834587] checking generic (e0000000 12c000) vs hw (e0000000 10000000)

[   10.834588] fb: switching to inteldrmfb from EFI VGA

[   10.834693] [drm] Replacing VGA console driver
```

You get the EFI framebuffer to start with then inteldrmfb once the module loads.

I suspect that the console is there, you just can't see it.

Is the console being drawn on a video output with no display connected? 

There are a few Optimus looking laptops around that can't use the Intel graphics with an external display.

Tell us about your display arrangements, what are they and how are they connected.

----------

## mounty1

According to the Windows Nvidia tool, the built-in display is connected to the Intel adaptor, and the laptop's DisplayPort adaptor, and all adaptors on the port replicator, are attached to the Nvidia adaptor.  I am booting with no external screens, and expecting to see the console on the laptop's built-in display.  It's strange therefore that apparently the Intel driver is being used as console, since it is entirely blank.

I also tried with the i915 support built-in rather than as a module.

----------

## NeddySeagoon

mounty1,

Do you have a BIOS setting for the primary graphics adapter?

Unlike Xorg, the kernel console driver does what its told and in quite happy to draw the console to a graphics adapter that does not have any display attached.

Can you boot with an external display attached, just for testing?

Regardless, the kernel switched to inteldrmfb 10 seconds after starting, so it doesn't really explain the lack of console from that point on.

----------

## mounty1

For whatever reason, it seems to be necessary to build some software into the kernel rather than load it in drivers.

I managed to achieve a blinking cursor but otherwise no output, then changed DRM and DRM_I915 from m to Y.

```
# sdiff -s .config .config.old

CONFIG_IOSF_MBI=y                                             | CONFIG_IOSF_MBI=m

CONFIG_ACPI_BUTTON=y                                          | CONFIG_ACPI_BUTTON=m

CONFIG_ACPI_VIDEO=y                                           | CONFIG_ACPI_VIDEO=m

CONFIG_I2C_ALGOBIT=y                                          | CONFIG_I2C_ALGOBIT=m

CONFIG_INTEL_GTT=y                                            | CONFIG_INTEL_GTT=m

CONFIG_DRM=y                                                  | CONFIG_DRM=m

# CONFIG_DRM_DEBUG_MM is not set                              <

CONFIG_DRM_KMS_HELPER=y                                       | CONFIG_DRM_KMS_HELPER=m

CONFIG_DRM_KMS_FB_HELPER=y                                    | # CONFIG_DRM_FBDEV_EMULATION is not set

CONFIG_DRM_FBDEV_EMULATION=y                                  <

CONFIG_DRM_FBDEV_OVERALLOC=100                                <

CONFIG_DRM_I915=y                                             | CONFIG_DRM_I915=m

CONFIG_FB_SYS_FILLRECT=y                                      | # CONFIG_FB_SYS_FILLRECT is not set

CONFIG_FB_SYS_COPYAREA=y                                      | # CONFIG_FB_SYS_COPYAREA is not set

CONFIG_FB_SYS_IMAGEBLIT=y                                     | # CONFIG_FB_SYS_IMAGEBLIT is not set

CONFIG_FB_SYS_FOPS=y                                          | # CONFIG_FB_SYS_FOPS is not set

CONFIG_FB_DEFERRED_IO=y                                       <

CONFIG_DUMMY_CONSOLE_COLUMNS=160                              | CONFIG_DUMMY_CONSOLE_COLUMNS=80

CONFIG_DUMMY_CONSOLE_ROWS=43                                  | CONFIG_DUMMY_CONSOLE_ROWS=25

CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y                   | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
```

From that lot, CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is probably irrelevant as I'd been toggling it without success previously.  Rows and Columns I changed to see if it affected the 'cursor' size.  So it must be the switch from module to builtin that did it.  Final working .config  Thanks Neddy for your patient suggestions.

----------

