4

Questions

Here are my questions: is it possible to disable the fglrx Linux driver or do anything to suppress functionality (e.g. 3D acceleration) that is not cross-hardware compatible via a grub configuration? If so, how would this be done?

Specifically, I set up my preferred software dev environment on an SSD that I use in multiple machines, only some of which have discrete Radeon GPUs -- the others have Intel's iGPUs. On the machines with Radeon GPUs, gmd needs the fglrx drivers to run smoothly (3D acceleration is particularly janky without them). I need to be able to create/select boot options in grub that allow me to boot on an Intel device using the iGPU or an AMD device with Radeon GPUs.

All information I have found about modifying grub's boot menu is outdated, so I have turned to SU for clarification.

Background

I have a dual boot set up on my PC: Windows 7 on one SSD and Ubuntu Gnome 14.04 on another (I use Ubuntu mostly for software development). I recently upgraded my PC from a couple of Radeon HD 7700s to an AMD R9 280, at which point the radeon drivers stopped working for 3D acceleration, causing everything to stutter. I then switched to fglrx, and all of the issues ceased. All was well in the electronic microcosm of my desktop.

The only issue is that I transfer this Ubuntu SSD from machine to machine as I hop between offices, houses, and cities. Not all machines have Radeon GPUs, which can cause issues with the fglrx drivers. Just today, for example, I went into an office and put my SSD in the computer I have been given there; it has an Intel CPU and has no discrete GPU. Grub would show my boot options as normal, but my attempts to start Ubuntu (even in "failsafe" graphics mode) would fail. I was fortunate enough to have a live USB stick with me, so booted the live distro, mounted/chrooted into the SSD, removed/purged fglrx, then rebooted.

This is not really an optimal solution. The ideal solution is to create a grub menu option to boot without fglrx-specific 3D acceleration.

Some More Specifics

root@toor:/$ grub-install --version
grub-install (GRUB) 2.02~beta2-9ubuntu1.3
root@toor:/$ uname -orvp
3.16.0-50-generic #67~14.04.1-Ubuntu SMP Fri Oct 2 22:07:51 UTC 2015 x86_64 GNU/Linux

While the fglrx drivers are installed, booting on an Intel machine results in a rather annoying phenomenon: the screen will have green lettering saying something like "Starting web server apache...", which will then return constantly no matter what virtual terminal is selected. It took about 5 minutes to log in and sudo reboot because the screen with green text kept taking over every 2-10 seconds (wildly varying and unpredictable timing). Hitting ctrl+alt+del would occasionally not cause the machine to reboot, or sometimes it would just lag for half a minute or so before responding. However, when it did respond, the gdm splash screen would very briefly appear before it rebooted.

6

You should use the nomodeset parameter:

nomodeset

The newest kernels have moved the video mode setting into the kernel. So all the programming of the hardware specific clock rates and registers on the video card happen in the kernel rather than in the X driver when the X server starts.. This makes it possible to have high resolution nice looking splash (boot) screens and flicker free transitions from boot splash to login screen. Unfortunately, on some cards this doesnt work properly and you end up with a black screen. Adding the nomodeset parameter instructs the kernel to not load video drivers and use BIOS modes instead until X is loaded.

This way you can boot safely, and then dish out to X the business of selecting the appropriate drive for your needs. You might even decide to do no programming whatsoever, and see whether the simple command

    dpkg-reconfigure xserver-xorg

(this works on Debian and derivatives, which is your case) might do in your case.

EDIT:

it is possible to disable a graphical boot completely. Copy

      cp /etc/default/grub /etc/default/grub-orig

The edit /etc/default/grub, comment out this line,

      #GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

modify this line to look like

      GRUB_CMDLINE_LINUX="text"

then uncomment this line,

      GRUB_TERMINAL=console

Save, run

       update-grub

when you reboot,if you do not have a broken installation, you will kind yourself in text mode. After reconfiguring X, youmay start the graphical session with

       startx
| improve this answer | |
  • I am testing this now. If it works, I'll make edit suggestions so that the answer is more complete. – Jonathan Voss Oct 15 '15 at 14:32
  • This does not work. I added GRUB_CMDLINE_LINUX_DEFAULT="nomodeset" to /etc/default/grub and then used update-grub instead of dpkg-reconfigure because it failed to find the xserver-xorg package. (Did you mean xserver-xorg-*?) The result is that the Ubuntu splash screen is replaced with a more nostalgic screenful of text that inevitably stops after "starting apache...restoring resolver state...starting Quagga daemons...speech dispatcher is disabled..." The screen then continually flickers in the same way I described in the background section. Any ideas? – Jonathan Voss Oct 15 '15 at 14:49
  • @JonathanVoss Pls read my edit. – MariusMatutiae Oct 15 '15 at 16:32
  • I won't have time to test that new solution until tomorrow. It looks promising, but I will have to figure out a way to make that a secondary option (perhaps under "advanced boot options"). – Jonathan Voss Oct 15 '15 at 20:04
  • I tried this and it sorta kinda almost worked. It would drop me to tty1, and I could run startx from there. The issue is that I still have to uninstall the drivers before booting with an Intel iGPU, and then I have to reinstall and reboot before running a machine with AMD GPU. I also would have to run startx every single time. How would I add a custom entry in the modern equivalent of "menu.lst"? – Jonathan Voss Oct 17 '15 at 17:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.