# kernel compilation fails:  Cannot open '/usr/share/v86d/init

## ExecutorElassus

I realize v86d has been pulled from the tree. Previously, I was using an ebuild someone posted to the forums that still worked, but now I can't find it any more. But nevermind that. I have a few issues:

1) kernel compilation fails:

```
  ./scripts/gen_initramfs_list.sh: Cannot open '/usr/share/v86d/initramfs'

make[1]: *** [usr/Makefile:57: usr/initramfs_data.cpio.gz] Error 1

make: *** [Makefile:1024: usr] Error 2

make: *** Waiting for unfinished jobs....

```

2) my /boot/grub/grub.cfg file is written manually:

```
default 0

timeout 7

#splashimage=(hd0,0)/boot/grub/splash.xpm.gz

menuentry 'Gentoo' {

root=hd0,1

linux /boot/vmlinuz-4.14.4-gentoo root=UUID=74d54c6f-6a2d-47a6-acf3-5a902d13899f

# Use simpleFB 

video=simplefb

# Set resolution and color depth 

gfxmode=1600x1200x32

# Keep resolution when loading the kernel 

gfxpayload=keep

splash=verbose,theme:natural_gentoo console=tty1

initrd /boot/initrd.cpio.gz

}

menuentry 'Gentoo-prevkernel' {

root=hd0,1

linux /boot/vmlinuz-4.14.1-gentoo root=UUID=74d54c6f-6a2d-47a6-acf3-5a902d13899f video=uvesafb:1920x1200-32,mtrr:3,ywrap splash$

initrd /boot/initrd.cpio.gz

}

```

How do I modify this to set grub to have a high-resolution console? Which options do I pass to the kernel to get it to keep that high resolution? Presently, the options I have here don't do that, and it defaults to the low-res console when booting. 

Thanks for the help!

EE

----------

## NeddySeagoon

ExecutorElassus,

```
video=uvesafb:1920x1200-32,mtrr:3,ywrap
```

tells the kernel to use uvesafb as you have specified.

However, uvesafb needs an initrd to contain v86d.  With v86d gone, uvesafb is broken.

In the kernel, turn off uvesa, turn on vesa and change your grub entry to match.

Don't forget to do the kernel rebuild and install dance.

----------

## ExecutorElassus

Hi Neddy,

the first option is the one I'm using to boot, which uses 

```

video=simplefb
```

to set video. It still doesn't work. 

In kernel config, I've turned off uvesa, and both vesa and simplefb are set on (though this change was just now, so I don't know if it will work).

I'll report back in a sec.

Cheers,

EE

----------

## NeddySeagoon

ExecutorElassus,

simplefb does not have any adjustments in the kernel.  If you want to use that, it needs to be set up in grub.

The kernel only draws on the provided framebuffer. 

Check dmesg to see which framebuffer is in use.

```
$ dmesg | grep fb

...

[    1.527731] vesafb: mode is 1024x768x16, linelength=2048, pages=29

[    1.527734] vesafb: scrolling: redraw

[    1.527736] vesafb: Truecolor: size=0:5:6:5, shift=0:11:5:0

[    1.527747] vesafb: framebuffer at 0xd0000000, mapped to 0xffffc90000400000, using 3072k, total 49152k

[    1.529403] fb0: VESA VGA frame buffer device

[    1.552828] fb: switching to amdgpudrmfb from VESA VGA

[    2.373159] [drm] fb mappable at 0xD03F2000

[    2.373167] [drm] fb depth is 24

[    2.373190] fbcon: amdgpudrmfb (fb0) is primary device

[    2.436098] amdgpu 0000:01:00.0: fb0: amdgpudrmfb frame buffer device

...
```

notice the switch from vesa to amdgpu, vesa is on the kernel command line but amdgpu is preferred, so the kernel switches.

----------

## ExecutorElassus

Hi Neddy,

So rebooting with a new kernel didn't result in using a high-res framebuffer. In fact, dmesg doesn't list any messages containing "fb" at all. That seems … not right. 

So if I'm using simplefb, how do I set it up in the kernel and in GRUB? I'm editing the grub.cfg file manually, so I don't use /etc/default/grub at all. 

Something's obviously gone wrong here  :Sad: 

Thanks for the help,

EE

----------

## NeddySeagoon

ExecutorElassus,

What dose the time/date in 

```
uname -a
```

show?

That's the build time of the running kernel, so it should be about nowish fof you.

If dmesg says nothing about framebuffers, you aren't using one.

----------

## ExecutorElassus

Hi Neddy,

build time was this morning, so I'm definitely using the kernel I just built (4.14.5, fwiw). 

All right, so how do I set up GRUB/the kernel to use a framebuffer, in light of the fact that 1) I'm using nvidia-drivers, 2) on a grub.cfg file I edit by hand, per above, and 3) so far as I can tell I'm still using BIOS (and not UEFI or whatever)?

Thanks,

EE

----------

## NeddySeagoon

ExecutorElassus,

Please pastebin dmesg and the kernel .config.

There is a kernel config issue if dmesg does not say anything about framebuffers.

I'm not a grub2 user, but I know you can set the screen resolution there somehow.

I you use grub legacy, its fixed at 640x480

----------

## ExecutorElassus

dmesg here.

.config here.

Thanks for the help,

EE

----------

## NeddySeagoon

ExecutorElassus,

It looks good but as you say, no sign of a framebuffer in dmesg.

I've not seen 

```
# CONFIG_DRM is not set
```

ever.

I wonder if you need that menu item and things in it to get a framebuffor at all.

# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set, I have on.

I was about to ask about seeing Tux logos at startup but even if you had a working framebuffer # CONFIG_LOGO is not set, means you won't.

There is another way with the VGA console 

```
[    0.000000] Console: colour VGA+ 80x25
```

You can pass vga=<mode> on the kernel command line, e.g.  vga=0x317

Also, vga=ask gets you a list at boot.

Its not a framebuffer console and its not 80x25 text either.

----------

## ExecutorElassus

I set the former now to [*], which seems to have automatically set the latter as well.

vga=ask is apparently unsupported. I read here that I can use hwinfo to find supported video modes; on my system it returns this:

```
# hwinfo --framebuffer

02: None 00.0: 11001 VESA Framebuffer                           

  [Created at bios.459]

  Unique ID: rdCR.HnChbtpZ4fE

  Hardware Class: framebuffer

  Model: "NVIDIA GF110 Board - 1080gd57"

  Vendor: "NVIDIA Corporation"

  Device: "GF110 Board - 1080gd57"

  SubVendor: "NVIDIA"

  SubDevice: 

  Revision: "Chip Rev"

  Memory Size: 14 MB

  Memory Range: 0xf9000000-0xf9dfffff (rw)

  Mode 0x0300: 640x400 (+640), 8 bits

  Mode 0x0301: 640x480 (+640), 8 bits

  Mode 0x0303: 800x600 (+800), 8 bits

  Mode 0x030e: 320x200 (+640), 16 bits

  Mode 0x030f: 320x200 (+1280), 24 bits

  Mode 0x0311: 640x480 (+1280), 16 bits

  Mode 0x0312: 640x480 (+2560), 24 bits

  Mode 0x0314: 800x600 (+1600), 16 bits

  Mode 0x0315: 800x600 (+3200), 24 bits

  Mode 0x0330: 320x200 (+320), 8 bits

  Mode 0x0331: 320x400 (+320), 8 bits

  Mode 0x0332: 320x400 (+640), 16 bits

  Mode 0x0333: 320x400 (+1280), 24 bits

  Mode 0x0334: 320x240 (+320), 8 bits

  Mode 0x0335: 320x240 (+640), 16 bits

  Mode 0x0336: 320x240 (+1280), 24 bits

  Mode 0x033d: 640x400 (+1280), 16 bits

  Mode 0x033e: 640x400 (+2560), 24 bits

  Config Status: cfg=new, avail=yes, need=no, active=unknown

```

How do I translate that into kernel parameters (or statements for grub itself) that can set the video mode?

Thanks,

EE

----------

## NeddySeagoon

ExecutorElassus,

Pass the mode number you would like on the kernel command line.

e.g. one of my systems has  vga=0x317, which is 1024x600. (Not in your list)

```
Mode 0x0315: 800x600 (+3200), 24 bits 
```

is the best there s there and that's not high res.

What does dmesg say about framebuffers now?

----------

## ExecutorElassus

Hi Neddy, 

when I use the GRUB console to query vesa modes, I get a lot more than what hwinfo returns. I'm not sure how to set them, though.

dmesg still returns nothing about the framebuffer. 

I suspect something is still wonky  :Sad: 

Cheers,

EE

----------

