Best Linux Distribution (for a small screen)?

Alright guys and gals, I have a thin client desktop computer that I want to use on my train set to program my arduino. It has 512mb internal memory, so there isn’t a whole ton I can do with it (the arduino Sketch software doesn’t even work on it).

I have a 4gb flashdrive. I’ve been experimenting with different Linux distibutions but they’ve all been too high screen resolution for my tiny monitor (it is 640X480).

Can anyone recommend a Linux distribution with support for a very small screen (or just any Linux distribution in particular)?

Thanks in advance,

Look at and you can dig into different distros to see what’s available.

I’d suggest Knoppix, since I’ve had it run on some very old systems. DamnSmallLinux (DSL) (50MB), MINT and Puppy are also very small in size.

Good luck!

There’s lubuntu:

With 512MB of RAM, you don’t need to worry much.

The default “Desktop” installer requires 384-800 MB of RAM (depending on selected options.) If you have problems, please use the “Alternate” installer.

I’ve seen that installed on 2GB of storage and how much it needs will depend on what you install.

If you can’t get your desktop or window manager to detect 640x480 boot in text mode and modify the xorg.conf to use the VESA driver. Just exactly what you need to do depends a bit on your choice of Linux. I will spare you an explanation of the good old 'modeline’s.

There’s also Puppy Linux (as noted above):

I’ve seen that installed on 512MB.

Of course there’s actually ThinStation:

Which is basically Linux for a thin client (there are other choices for this but it’s not clear to me you want a thin client as much as resource challenged Linux computer).

I will refrain from sending you my Slackware book. At some point ‘back in the day’ 32MB of RAM and several hundred MB of storage would have been ‘excessive’. In that retro 8bit gaming sort of way.

I wonder if you really need a GUI (graphical user interface) or if you could get away with using ‘curses’ for a TUI (text user interface). If you did you could get this down to less than 2MB of storage and around 8MB of RAM. For example:

DSL is a very popular distro to run on small systems. I have also heard of Puppy being very efficient in use as well. If you do have a little bit of power, Debian runs great on very low resource machines. The Raspberry pi comes with a stripped down version of Debian, if you want to look into that.

While I was waiting for replies I tried out Puppy Linux, but the screen resolution is too big. I’m more worried about the screen resolution than the system requirements. I’ll try DSL.

You need to edit xorg.conf and force it to use the proper driver and video modes if xorgwizard is configuring your monitor in a way that is not practical for you. Odds are that your hardware is returning a list of video modes that includes some that are really not a great idea and every attempt X-Windows makes (on each distro you’ve tried) returns the higher resolution so it figures that makes the best sense to use. You need to inform it otherwise. This actually happens often but usually you can either get into text mode to force it to stop or navigate in the GUI to lower the resolution to something workable. Changes to the login pages or otherwise sometimes require additional tweaks. This used to happen quite often with incorrect DDC (display data channel) information exchanged between the monitors (in your case probably integrated into the system) and the video subsystem. This can easily be made worse with the complexity of various Linux video card drivers, combinations of displays and video subsystems and system chipset issues.

If I have a few minutes I will toss a copy of PuppyLinux (or whatever distro you actually would prefer to use) into a virtual machine and see if I can’t give you an example or some instruction. I am swamped right now so it might not be today.

It would help if you could provide the make and model of the thin client hardware you are messing with and specify a Linux distro you actually would prefer to use if the display would work correctly for you. That way I can figure out what sort of video chipset is probably integrated into it and what needs to be done. Given your display is 640x480 I suspect there is a very good chance I can make this work but generic instructions would be painful because of subtle differences.

It would help if you would better describe the symptoms of the problem you are having. Can you not get 640x480 to run or are there display artifacts? Are the GUI elements too large which makes the the GUI effectively unusable?

Preference of distro? If I don’t hear from you I will just explore the process for PuppyLinux and 640x480 with the VESA driver.

Seems like your problem here is with your x configuration file, or you need a different window manager/desktop environment. Have you considered installing one of the distros without a gui, and then using the internet to install fluxbox? Fluxbox is a very light window manager and should work on all displays. If not, find either your xorg.conf (the default in debian-based distros), or run X -configure to confirm your driver settings.

It’s going to be hard to find something that looks good at 640x480, but this might work.

For everyone who has asked about me not being able to get 640X480 resolution to work, I’m sure I can if I had a bigger monitor to change the settings to in the first place. However, I don’t have any other monitor that I can use to change the setting to.

I’ll look into the x config file.

I tried installing PuppyLinux in an Oracle VirtualBox VM on my RedHat 6 Workstation Lenovo T61 laptop. I gave the virtual machine 512MB of my RAM and 4GB of storage on my SATA SSD. I had some interesting issues getting it to install and clearly the process for installing without booting into the GUI mode of the ‘LiveCD’ needs a bit of work. I was able to install the frugle hard drive installation by setting a kernel parameter at boot, going directly to a prompt without X-Windows and then doing this a way that from the 1990s might be the normal but that’s a bit too much to lay on you as a student.

So currently I am using the ‘Lubuntu i386 (Intel 386) Alternate Install’ ISO that installs from a TUI, with ext4 file system, guided partitioning, 512MB of RAM onto a 4GB fixed size VMDK virtual disk. I have yet to have to type a single command at a prompt. However the ISO is much larger and this install will take longer. I can’t be sure when you say ‘flash drive’ if you mean a plug-in USB flash drive. If you do mean a plug-In USB flash drive Google the directions to install Lubuntu from a USB flash drive (you can still use the ISO below if you substitute it). Just in case you mean that you don’t just want to install from the USB flash drive, but actually want to use the USB flash drive as the Lubuntu drive, you need to Google the directions for pendrive Lubuntu. In one case you are installing from the USB flash drive to an internal storage device (so the USB flash drive contains the ISO that would normally be a ‘LiveCD’) in the other Lubuntu runs on the USB drive and there probably is no internal storage (Lubuntu is actually installed on the USB flash drive).

Here’s where you get the ISO:
Click the button for “PC 32bit Standard image disk” or use Torrent.

In my testing outlined below I have created 4GB of virtual internal storage (looks like a hard drive to Lubuntu) and I have mounted the ISO linked above as a virtual machine CD-ROM drive via Oracle VirtualBox. Therefore I can boot to that virtual CD-ROM by pressing F12 in the Oracle VirtualBox boot screen (BIOS).

After installing Lubuntu the guided partitioning put about 500MB of the 4GB virtual drive space into a swap partition.
The guided partitioning left about 42% of the remaining 3.5GB (that’s about 1.4GB free).
Chromium works with NAT to my wireless card to my cellular phone hot spot immediately.

Now that Lubuntu is installed without much modification or tweaking…

At this point it wants to install about 140MB of updates to the 13.04 release (so that will consume space).
I got Perl 5.14.2 and Python 2.7.4 by default just doing the install and no GCC (so that would consume space).
Java/OpenJDK is not installed by default, but you do get sed and awk (so Java would consume space).

Running ‘Task Manager’ shows 150MB of the 512MB of physical RAM in use during the updates.
With AbiWord (word processor) I consumed a mere additional 7MB of physical RAM.
With Chromium (Internet browser) I consumed 20MB more of physical RAM.

Under ‘Preferences’ in ‘Monitor Settings’ I reduced the installation from 1024x768 screen resolution to 640x480.
Chromium is still usable (you’ll be scrolling a lot if you don’t adjust the zoom).
Abiword is still usable.
With LXTerminal in the GUI the text is really tiny so I changed the font size to 12 point.

Lubuntu has xrandr installed.
So xrandr can set the X-Windows screen resolution from the command prompt.
That will not impact the login screen.

I noticed that the vi(m) editor in my copy of lubuntu is acting strange on this install so I am using nano.

I am not going to completely hand hold with this…if you need that let me know:

  1. You need to create a Bash 4 script that looks like this:

xrandr --output default --primary --mode 640x480

It is possible on your system that ‘default’ should be something else but let’s hope not.
I called that and put that in: /usr/share/
I did a: chmod 775 on that Bash 4 script.
I created that script while I was elevated to root privilege using: sudo su

  1. You need to tell lightdm to run that script when it starts:
    In: /etc/lightdm/
    Edit the file: lightdm.conf

Add this line to the bottom:


That will impact the login screen.

  1. Now we need to force the normal X-windows and window managers:

You need to edit some files in: /etc/xdg/lxsession/
There are 3 folders in Lubuntu 13.04 for different install types they are:


Each of those 3 folders has a text file called autostart.
Edit each of those autostart files and add this to the bottom:

@xrandr --output default --primary --mode 640x480

Notice how similar it looks to the script in instruction 1?
You need to add that to all 3 autostart files (one in each directory).

  1. Reboot and that should get your GUI working.

Now you’ll no doubt wonder…but if the GUI doesn’t work in the first place…

You can use CTRL-ALT-F2 or in VirtualBox usually ‘right CTRL’-F2 to get to one of the other TTY sessions.

Got all that?
Clear as mud right?
If you can’t follow let me know.

After completing the System Updates listed above and tweaking a few more things I ended up with around 1GB of the 4GB virtual disk free for whatever I like. Wow I can like…fit 1/100,000th of the database I was working on while doing this into that huge space free :slight_smile:


If you use: xrandr -q
At the command prompt even while the X-Windows display is all messed up at the wrong resolution the line below the line that starts with “Screen 0” should start with the name of your adapter. In my virtual machine that’s ‘default’. Other common things are ‘DVI-0’, ‘DVI-1’…

One last set of tweaks let’s alter grub so that you get a text grub boot menu and the standard text from boot instead of the potentially unreliable graphical splash screen before the GUI login.

You need to go into: /etc/default/
You need to edit: grub

Things to change:

  1. Comment out the lines that start with GRUB_HIDDEN by starting them with a hash: #
  2. Comment out this line: GRUB_CMDLINE_LINUX_DEFAULT=“quiet splash”
  3. Uncomment out this line: GRUB_TERMINAL=console

When you are done save that.
Then execute this command: sudo update-grub
That will rebuild the grub menu and when those changes hit everything up to the login screen will be 80x25 text.
Since you can see the grub menu you can now easily alter the boot options or recover.

The line: GRUB_TIMEOUT=10 is how long the boot menu will display if you want to alter it.
Just make sure to redo the update-grub if you make more changes.

Whatever the outcome of all this please let us all know when you have the chance.
Enjoy your Linux computing. These sorts of weird things are still not quite plug and pray.

Yet another footnote:

I’ve been asked why /usr/share for the script?

/etc/profile.d is more a Bash shell thing. If xrandr is not running, say because X-Windows is not started when Bash executes, the script will do nothing.

In Lubuntu there’s a Bash script at /etc/X11/xinit/ called xinitrc but no xinitrc.d directory by default.
I could have suggested patching xinitrc instead of creating a stand alone shell script, but then if you wanted to tinker
with other resolutions changes or testing you’d have to restart X-Windows and with xrandr that is not necessary.
There is nothing stopping someone from creating a script in Python, Perl or Bash to do these changes for you.
There is nothing stopping someone from creating shell scripts like, or or
Of course xrandr supports multiple monitors so you could create scripts like this to switch to different display arrangements on the fly.

Also what happens after you force X-Windows to use 640x480 and someone trys to use the GUI utility to change resolution? Well firstly usually before it commits the change it lets you see the change to see if this actually works. It times out. So if you do this let it time out and hopefully you can see the GUI at the previous resolution of 640x480 again. If not and you accidently accept a new and broken screen resolution in the GUI: CTRL-ALT-F2 or in Oracle VirtualBox ‘right CTRL’-F2 to a TTY session then run the /usr/share/ shell script manually. That will fix your screen immediately. However, if you wanted, you could also force a reboot from that TTY session and, of course, /usr/share/ will be run anyway during the next startup process. I do not advise you to just force a hard reboot like turning the power off then on. Do a proper shut down or risk a chance meeting with your new best friend ‘fsck’.

If you really want to get to use ‘modeline’ and something similar to xorg.conf on Lubuntu 13.04 then follow the directions at this link:

I confirmed those work as well. In case someone is allergic to xrandr :smiley: or if for some strange reason Lubuntu is not discovering that your video subsystem actually supports a certain screen resolution or refresh rate. Frankly I think that for a beginner (newb) xrandr is probably much more powerful without the risk that they will break X-Windows in some confusing way (or accidentally turn up the refresh rate on the display until something harmful happens). Keep in mind that several GUI tools might try to edit 10-monitor.conf if they find it or some GUI utilities that you might want to edit xorg.conf, now that you have it, might not work because they were designed for the xorg.conf that was in /etc/X11/ in days gone by. It might still be possible that putting any xorg.conf in the original location and the original format could simply stop X-Windows from starting even if that file is actually correct (this was an issue I’ve seen before in Ubuntu and I do not plan to test it at this time).

If you do choose to make a 10-monitor.conf for your unusual video subsystem consider downloading the free version of:

Which in Windows will allow you figure out the correct modeline for your 7" Lilliput 16:10 aspect ratio monitor or your
slightly odd 200lb Sony Trinitron RGB monitor with the BNC inputs and no DDC support.

Have fun! Let me know when this all makes sense to you cause kernel driver coding is next :smiley:

My ability to edit my previous post has timed out.

If you wanted to boot in text mode using Lubuntu here’s how:

You can either:

Edit grub in /etc/default/
Then add (this should look similar to a line I suggested commenting out above):


Then do a: sudo update-grub


Create a text file called lightdm.override in /etc/init/
In that text file just type:


Either has the exact same result: lightdm will not start so the GUI will not start
I prefer the first choice because it more closely resembles how this trick works
when you use gdm in other versions of Ubuntu. You should not do a: startx
If you execute the ‘startx’ command the screen will likely go blank.
If you do that you’ll likely need to CTRL-ALT-F1 back to the session that contained the command.
It’ll be hung at: “Loading extension GLX”
There will be nothing suspicious in your Xorg.0.log in: /var/log/
This is because ‘startx’ is waiting for lightdm and you did not start lightdm :smiley:
lightdm is providing things like the GUI login prompt which ends up with PAM etc.
Just press CTRL-C it’ll drop you back to the command prompt.

Note: If you really want to get LXDE to start with: startx
When you have Internet access do a: sudo apt-get install lxde-common
Edit: ~/.xinitrc
And put in:

exec startlxde

However, be warned now…this trick is a bad idea at 640x480 you’ll have a hard time with the logout window.
Also, you’ll immediately notice that you get LXDE generic not what you expect from Lubuntu.

So now…

When you boot you’ll get a command line version of the login.
So what if you do this and then want to get the GUI?

Well you have the following choices:

To start the GUI: sudo service lightdm start
To stop the GUI: sudo service lightdm stop

Remember CTRL-ALT-F2 from the last post?
Well CTRL-ALT-F7 is usually where the GUI is.
CTRL-ALT-F1 is where you will start if you boot into text mode.
You can easily switch back and forth.

Does that command to start and stop lightdm seem like a lot to remember?

No problem:

Text edit the file environment in /etc/
To the PATH string and inside the quotes add the following: :/usr/share

Now create a shell script called ‘gui’ in /usr/share.
Copy and paste this into it:


guicmdline=$(echo $1 | tr ":upper:]" ":lower:]")

echo ""
case "$guicmdline" in
    echo "Starting lightdm GUI..."
    sudo service lightdm start
    echo "Stopping lightdm GUI..."
    sudo service lightdm stop
    echo "Correct command usage:"
    echo ""
    echo "  gui start"
    echo "  gui stop"
echo ""

When you are done save that shell script.
Execute a: chmod 775 /usr/share/gui

If you type: gui
You will get something like this:

user@lubuntu13:/$ gui

Correct command usage:

gui start
gui stop

So at any prompt regardless of sudo you can start the GUI like this:
gui start

Why would you want to boot to a command prompt?
Well you wouldn’t need a GUI on a small computer running Lubuntu on a robot.
However, you might occasionally want the GUI when it’s in the pit.
It’s not like you might be able to run this on something with like a BeagleBoard.
No never…Shhh…512MB of physical RAM and 4GB of storage…where have I seen that specification before…

Sorry for coming in late, but crunchbang. Best distro I know for almost anything.

The problem that exists here is that the LiveCD is generally a GUI.
The LiveCD will boot a GUI with the screen scrambled.
The core X-Windows system all the distro share does not know his system needs 640x480.

So either the LiveCD has to allow him to set the resolution to 640x480 even though it thinks he can use a higher resolution.


It needs to offer a text or TUI install.

You can install Linux entirely from the command prompt but that requires fair amounts of knowledge and the process has fallen out of favor because users find it off putting.

Lubuntu offers the ‘Alternate Install’ as does Ubunutu (but his system resources are limited).
RedHat offers a TUI install.

It might be possible on the LiveCD to use the CTRL-ALT-F2 trick to bypass the scrambled GUI and then use xrandr as I showed above to fix the GUI until the next reboot. Not all distros use xrandr like that so one would have to test. Either way the long instructions above hopefully offer inspiration.

Crunchbang has the Debian TUI under the boot option ‘Text Install’ if the grub boot loader graphics work right on the LiveCD.
If the boot menu does not work try ‘setup’ or ‘install’ at the command prompt.
PuppyLinux will be a harder install because the only installer he has is GUI based.
The following is how to get PuppyLinux to let you reconfigure the display at boot:**

When you first see the PuppyLinux logo almost immediately after the BIOS that screen will wait 5 seconds by default.
That is the boot menu.
Press F2 before the 5 second time out.
Type: puppy pfix=nox (this is the kernel parameter I mentioned before above)
This will force PuppyLinux to boot to a command prompt instead of the GUI.
When you get to the keyboard template menu…this will take longer than Lubuntu…
Just hit ENTER at the keyboard template menu as I suspect you have a US English keyboard and speak American English.
Now you have the command prompt which is merely a hash: #
At the command prompt type: xorgwizard (remember I mentioned that before?)
If that does not work or complains like this:
mv: cannot stat ‘/usr/lib/xorg/modules/drivers/’: No such file or directory
Here’s something silly just do: xorgwizard (yes do it again)
Oh look…a menu…silly xorgwizard.
Select ‘< vesa >’ on the right.
Now it’ll probe your hardware and we know that is probably not working correctly.
Scroll up and down with the arrow keys.
If you see a line that ends with: CRT 640x480
Select that line with: ENTER
On the next menu you should automatically have the highlighted option:
640x480x16 Unconfirmed MAXIMUM for monitor, OK for card
Select that with: ENTER
Now it’ll drop you to the command prompt with a red ominous warning.
Ignore the warning.
Type: startx
The PuppyLinux GUI will start in 640x480.
Now you can use the graphical installer.
The graphical installer is the icon labelled: install
That installer stinks because it ends showing you the grub configuration file.
Also it tends to disappear like it is done when it is not.
You will know when you are done because it’ll show you the grub configuration file.
What it really barely mentions is you need to put grub on the internal drive.
You need to save that text file first (it’s the configuration for grub which is not yet installed).
Grub is on the ‘Menu’ under: System
Select: simple
Select: standard
Now there is more nonsense, it’ll pop-up a menu that says::
Puppy Linux users: If running from the Universal Installer…
It tells you to press OK.
Really? Cause there is no default provided that I saw.
I gave this menu the following to make it happy:
/dev/sda1 (this will also be the line shown in the grub configuration file and that the installer will constantly mention)
Now select: MBR (it’s at the bottom of the menu)
Now do a reboot.
When it asks you to save do not save.
You will boot up to a text boot menu.
You will see text boot messages.
It has no login screen so you go directly to the desktop.

If the installed desktop is the wrong resolution.
CTRL-ALT-F1 to get the command prompt session running the GUI.
Press CTRL-C to stop GUI hard (it sends sigint).
If it asks for a login do:
Username: root
Password: woofwoof (not kidding)
Start: xorgwizard
Look up at the last set of directions to fix this like on the LiveCD.
Once you finish xorgwizard.
Restart the GUI with: startx
If all is well it should stay well after a reboot.
There you go.

When I was done with this:
PuppyLinux 5.2.8 - Full Install consumed 445MB of my 4GB free (much better than LUbuntu but I did not optimize Lubuntu).
It booted a full 17 seconds slower than Lubuntu for me.
‘LXTask Manager’ shows 37MB of 503MB of physical RAM used (which seems to be half of what Lubuntu was using).
Abiword still consumes 7MB of RAM while running.
I did the simple network install.
Selected Chromium as a browser that downloaded 37MB more.
As that ran I noticed that physical RAM usage crept up to 42MB (still less than Lubuntu).

Perl 5.10.1 was installed by default.
You get no Python or PHP by default (so Lubuntu already gave you Python as default).
You do get GAWK and GNU SED.

With Chromium installed and just opened to the SSL version of the Google search engine page, PuppyLinux is now using 90MB of RAM.
At that point PuppyLinux is consuming actually just a few MB less RAM than Lubuntu.
However, once I stopped Chromium the physical memory usage dropped back to 44MB.
Interesting that Chromium consumes 40MB of physical RAM on PuppyLinux and 27MB on Lubuntu.

I did notice that PuppyLinux does not shutdown properly in my VirtualBox machine. Not sure why.
Great it corrupted the ext2 virtual partition I installed it on.
Puppy ate it’s own tail again!
Reinstalling with ext4.
Noticed I still get a text boot menu, but not a text boot log…in fact now I get blank splash screen.
Ah I see the grub configuration file in: /boot/grub/
Called: menu.lst
Never got written by the reinstall. So if this happens to you either figure it out or reinstall and install grub before you run the install.
Course if the drive is not partitioned first you have to partition it, then install grub, then run the install.
That makes perfect sense (sarcasm) because the install will detect a completely blank drive and start partitioning but not install grub.
Yes this install method is not nearly as clean as Lubuntu.
It did start and is using similar amounts of physical RAM and storage.
Going to repeat this and see if it self-destructs again.
With PuppyLinux reinstalled on an ext4 partition and Chromium installed and working it now oddly only consumed 30MB of physical RAM.
Clearly something was going wrong before because now it reboots without eating itself.

How to boot CrunchBang 11 into the TUI installer:

You’ll notice that in CrunchBang 11 Waldorf the LiveCD boot menu does not have a text boot option.
So I booted into LiveCD GUI on a system where that works.
Then I opened a terminal and did a: find / -name initrd.gz
There are 2 of those found.
One in: /live/image/install/gtk/ (the one that runs the GUI install from that menu).
Another in: /live/image/install/ (the Debain TUI installer that was not added to the menu).
To find the syslinux boot menu configuration files do a: find / -name live.cfg
You’ll find that live.cfg file in: /live/image/isolinux/
So if you look at the menu configuration files in: /live/image/isolinux/
If you look at the install.cfg file you’ll see this line:
append initrd=/install/gtk/initrd.gz video=vesa:ywrap,mtrr vga=788 quiet file=/cdrom/install/crunchbang.cfg
That needs to be edited to start the other hidden installer.
When you boot(reboot) move the selector down to the ‘Install’ option WITHOUT pressing ENTER.
Press TAB.
When you press the left arrow the line will print again but the cursor will move left.
Do that till you get to the character to the left of /gtk/ in that line.
Then BACKSPACE to delete: gtk/
Now press ENTER.
Surprise there’s the Debain TUI.
Follow it through.
I used the simple guided partitioning.
I let it write grub to the internal virtual hard drive.
When done it boots into a grub menu in a low graphics mode.
When that times out or you select CrunchBang it will load the GUI.
If the GUI is at the wrong resolution and scrambled.
Repeat the trick from Lubuntu…
Do a: sudo su
In: /etc/default/
Edit (vi(m) is wonky for me in CrunchBang as well, but nano works): grub
Comment out the line that tells the boot to be ‘quiet’ by starting it with a hash: #
Add the line: GRUB_TERMINAL=console
The text option we used with Lubuntu to boot into command prompt first won’t work here.
Save that.
Do a: update-grub
Now those changes are commited to the boot menu.

The following is the polite way to set the resolution of openbox…

To edit the Openbox configuration it is in: /etc/xdg/openbox/
Edit: autostart
Add: xrandr --output default --primary --mode 640x480 (note the @ is missing from the same line in Lubuntu)

Problem is that CrunchBang 11 gdm/slim login does not really give you an easy way to call xrandr unlike lightdm.
So back to the dreaded >modelines< :smiley:

In: /usr/share/X11/
In a file called: 10-monitor.conf
Here’s an xorg.conf with the VESA driver and 640x480 CRT settings.

Section "Monitor"
  Identifier   "Monitor0"
  ModeLine "640x480" 25.2 640 656 752 800 480 490 492 525 -hsync -vsync

Section "Device"
  Identifier   "Device0"
  Driver       "vesa"

Section "Screen"
  Identifier   "Screen0"
  Device       "Device0"
  Monitor      "Monitor0"
  DefaultDepth  24
  SubSection   "Display"
    Depth       24
    Modes      "640x480"

Now save that.
You don’t need to chmod it.
Reboot and there you go, the gdm/slim login and openbox will be 640x480.
Now note if you do this 10-monitor.conf like this you can only use 640x480.
Not even xrandr will give you any other choices.
This is good and bad.
Good because no more accidental changes to something that will not work.
Bad because you might want to change for some reason.
If you want more generic modelines look here:

At this point you have now limited the boot menu and boot process to 80x25 text.
The login and GUI to 640x480 graphics.
If you reboot that should stay as such.

Immediately after installation I followed the post installation script.
I let it install: cups, java and libreoffice.
I stopped it at the prompt about the more unusual choices.
I started with a little more then 2GB of my 4GB of internal drive space used.
After all those files were installed it consumed another 800MB.
There is now roughly 1GB free (just like Lubuntu).
The system is using roughly 80MB - 84MB of 512MB of physical RAM (a little less than Lubuntu).
I could have avoided installing ‘LibreOffice’ as CrunchBang came with ‘Abiword’ but I was curious.
As before running ‘Abiword’ consumed about 7MB of physical RAM.
I chose to install Chromium but somehow ended up with IceWeasel.
IceWeasel is using initially 70MB of physical RAM while displaying the CrunchBang start page.

After all the updates from the post installation script I have:
Perl 5.14.2, Python 2.7.3, OpenJDK 1.6.0_27, AWK, GNU SED.
I got no PHP.

Again my ability to edit the last post has timed out. Sorry.

How to text install Dn Small Linux (DSL) 4.11RC2 SysLinux**

Surprisingly D**n Small Linux turned out to be easier to figure out how to install from a text prompt than CrunchBang 11.
This is because CrunchBang decided to obscure their TUI installer.

I downloaded the D**n Small Linux 4.11RC2 with SysLinux so it can boot from an FAT16/FAT32 formatted USB drive.

At the boot ment press either F2 or F3.
Type: install
You’ll get a very simple TUI.

At this point there’s a few things you need to know…
D**n Small Linux does not like Oracle VirtualBox’s SATA virtual hard drive apparently.
So I can’t partition or install on /dev/sda which Linux will typically recognize this device.
I am not sure if this means they removed drivers the other distros have or what not.
I just had no luck trying quickly so I altered my VirtualBox setup to mount the 4GB VMDK virtual drive as IDE instead of SATA.
That being said I know that if I have only 1 interal IDE drive it will typically be: /dev/hda
Once I put a partition table, master boot record and a bootable primary partition that will typically become: /dev/hda1

Now on the menu select 10 (cfdisk) to setup the partition table.
If it asks about erasing the drive…make sure you select properly for your install!
From there use ‘New’ to setup a new primary partition.
Set the partitions up as you like.
Select ‘Bootable’ to mark that new partition bootable in the partition table.
Normally cfdisk will make Linux type 82/83 partition types so that should be fine.
Select ‘Write’.
When the write finishes you need to reboot.
(If you’ve ever installed DOS this is very much like using FDISK.)
If cfdisk drops you to a prompt, just type: reboot.
The system will reboot.
Again at the boot menu press F2 or F3.
Then do a: install.
This time on the TUI menu select: Install to hard drive
It will ask you for the partition to install to, for me that was: /dev/hda1
The rest is basic stuff.

When you reboot DSL is nice enough to setup the boot menu with forced resolutions.
DSL is also nice enough to obey the ‘vga=’ kernel boot option I will explain later.
Technically you could use the ‘vga=’ option to make the DSL LiveCD display correctly.
If you select the option without the resolution listed it should display at 640x480.

Simple enough.

The DSL default install did not have Abiword, it did have Ted Word Processor that used less than 1MB of physical RAM with a blank document.
The default install came with Firefox which consumed about 23MB of physical RAM while displaying as the only tab.
When I first booted there was 14MB of 512MB of RAM used.
After starting FireFox it hung around so it raised that to about 37MB of physical RAM used.
14MB is the smallest of the Linux install we have yet to try in this topic.
The hard disk install consumed about 375MB of the 4GB virtual drive space.
375MB is the smallest storage footprint of the Linux install we have yet to try in this topic.

Perl 5.8.0, BusyBox SED and BusyBox AWK are installed by default.

I should mention that like PuppyLinux, DSL does not have a GUI login screen provided by something like gdm or lightdm.
However it does ask you to login at the text command prompt before it automatically starts the GUI at boot.
It will ask you to create some user accounts and set the root password during the first boot after the hard disk install.
PuppyLinux by default does not seem to authenticate the user at all.
Not authenticating the user is not a great idea if the users perhap have password keyring for say websites.
I did set DSL up for multiuser during the initial install so this only makes good security sense.

What is the ‘vga=’ boot option that DSL obeys and why not just use that everywhere:**

In grub1, lilo, syslinux you can use a kernel parameter: vga=
This does not usually work in grub 2.
What you set that equal to is usually a 3 digit number.
If you want to know what number look here:

For 640x480 with 16bit color use: vga=785

What does it do?
Well you probably noticed that the boot menu looks a little more ‘pretty’ than a simple TUI.
That is because it’s text in a graphics mode as is your typical modern Linux prompt.
That setting changes the graphics for that mode.
In some distro’s that option also impacts the installed GUI.
Usually this setting will impact the GUI when that distro resorts to using the VESA driver by default like DSL does.
If you install an ATI, Intel or NVidia driver in the GUI this option usually has no impact on the GUI but generally still impacts the boot menus and the full screen command prompts.

How would you do it in grub 2 like Lubuntu?
Use this option in the grub configuration file instead:
That will impact only the boot menu.
To change the command prompt as well add:

Remember if you change the file: grub
In: /etc/default/
You need to commit your changes with a: sudo update-grub

Why did I not mention it before? I did not need to because I had you put everything text based into the default 80x25 text mode. However, in the rare case that does not work out for you these additional choices add yet another thing to consider altering. Just remember you need to disable the ‘console’ default I told you in previous instructions to add. Disabling the command that forces grub 2 to be 80x25 text will allow it to be graphical again and adhere to your new resolution choices. It will impact both the boot menu and the command prompt. Also remember that a graphical grub menu generally means the boot process will be graphical and that means the splash screen or a little Linux mascot might come up (once you make these alterations) in place of the boot process I suggested you display. If you go back and look at my other instructions you can figure out how to get the boot process back perhaps with some help from Google.

I hope this was informative.

I might try to show how to make this work with Linux Mint XFCE 13 LTS.
Currently Linux Mint is at version 15.
The thing is that the Mint project decided to start demanding PAE built into the kernels after version 13.
This means that systems that do not support PAE might not work correctly and older systems often do not suppport PAE.
Several distros have PAE support with either 2 separate builds or a set of conditionals to allow the PAE functions to bypass without issue.
Besides the LTS (Long Term Support) builds from Ubuntu and Linux Mint offer years of support before they are considered end of life.
This means years of posts from users to help you if you need it and that are precisely for your installed version of the distro.
Besides Linux Mint 13 offers both a Debian and an Ubuntu kernel which do have differences.

I haven’t bothered with Knoppix because the project maintainers do not suggest running Knoppix from a hard drive.
That does not mean you can’t it just means I won’t suggest you do something that could lead to strange complications.

Have fun. Never heard from the OP so I hope this helps.

Once again timed out (so pardon any typos):

Linux Mint 13 Maya LTS XFCE install at 640x480 from LiveCD:

Booting from the LiveCD…
During boot hit the SPACEBAR before the timer times out.
Select the ‘Start in compatibility mode’ installer.
This should force the GUI to use the VESA driver.
That kernel boot line includes xforcevesa.
After boot the screen will probably be at the wrong resolution.
Use CTRL-ALT-F1 (note that in Mint CTRL-ALT-F8 is the GUI).
Type: export DISPLAY=:0
Do a: cd /home/mint/.config/xfce4/xfconf/xfce-perchannel-xml
In that directory do: nano displays.xml
In that file you want to put this text:

<?xml version="1.0" encoding="UTF-8"?>

<channel name="displays" version="1.0">
  <property name="Default" type="empty">
    <property name="default" type="string" value="default">
      <property name="Resolution" type="string" value="640x480"/>
      <property name="RefreshRate" type="double" value="60.000000"/>
      <property name="Active" type="bool" value="true"/>

Save that.
Type: xrandr -q
If the 3rd line down starts with ‘default’ you are good.

If not re-edit the previous file with: nano displays.xml
Put whatever that line started with, be it VGA1, HDMI1, DVI1 or whatever in place of the all lower case defaults.
Be careful not to change the ‘Defaults’ it does matter.

There was a reason I did not use xrandr to set the screen mode.
If you try this the GUI will crash.
However in the GUI under ‘Settings’ then ‘Sessions and Startup’ in the ‘Session’ tab Mint came setup to restart the GUI automatically.
So if you try to use xrandr to set the video like this it will not work out.

Now then…
Type: xfce4-session-logout --logout
This only alters the XFWM window manager so on a system that needs to display 640x480 for 10 seconds you will not have a display then XFWM should load at 640x480.

At this point you should have the LiveCD GUI at 640x480.
Click the icon ‘Install Linux Mint’ on the desktop.
The installer was written for a video mode greater than 640x480.
To use it press ALT-F7 to drag the window around the desktop so you can get to what you can’t see.
ALT-F7 doesn’t seem to work on the partitioning part of the installer, on there you might need to use TAB to select the options.

This installer checks that your:
Laptop is plugged in.
That you have 5.3GB of storage to install into (so no this won’t work with less than 5.3GB available to partition).
That you have Internet connectivity.

Given we’ve been imposing a 4GB storage limit just keep in mind that LinuxMint’s installer is basically saying Mint needs more resources.
I simply resized my virtual hard drive to 6GB to finish this process.
I don’t think with the cost of storage these days 6GB is really asking all that much.
Consider that I have P3 thin clients with 8GB internal IDE hard drives that are basically a decade old.

After a nice long install the system will reboot.
Chances are you won’t see much except a black screen till the user login displays.
You probably won’t be able to see that user login correctly either because it will default again to the wrong video mode.
Again as before.
Use the same displays.xml as before, including any modifications you may have had to make.
The only change you need to note is that now the install process has created a real default user account.
That means that in this command above:
cd /home/mint/.config/xfce4/xfconf/xfce-perchannel-xml
The word ‘mint’ should be the user name you created during the install.
The same one you used to log in.
That user’s name is also probably the only directory name in the /home folder at this point in the process.

Now if one looks back at the directions I provided earlier in this topic for Lubuntu they apply to the grub 2 bootloader that is installed.
The configuration file is still in: /etc/default/
I would at least display the grub menu and boot process as text when I first installed I couldn’t see either.
Remember to commit the changes with: sudo update-grub

Linux Mint 13 LTS uses mdm instead of lightdm or gdm.
To configure the login screen resolution alter the file: Default
The file is located in: /etc/mdm/Init/
That file can be edited with: nano Default
Add the line: xrandr --output default --primary --mode 640x480
Put that just above the last line: exit 0
Again remember if you did ‘xrandr -q’ before and had to alter things replace ‘default’ in the xrandr line above as well.

With that said this process should install a working copy of Linux Mint 13 LTS at a resolution of 640x480.

Remember that this older version of Linux Mint does not require PAE but is still very much supported till 2016.
Now if you got this far consider installing the package: fake-pae
If you can get fake-pae working it will trick Mint into thinking the CPU completely supports PAE.
Once you manage this trick you should be able to download the OS upgrades to bring the system to Linux Mint 15.
DO NOT automatically upgrade this kernel unless you manage to get fake-pae working.
If you allow the version 14 or 15 kernels to install your system will fail to boot.
Hopefully by then you’ll have configured the boot menu and will be able to revert (and of course made backups of your work!).

When the install of Linux Mint was done it turned it out it only consumed a little more than 3.2GB of the 6GB virtual hard drive.
I noticed that ‘startx’ worked fine when I booted to the command prompt but it did eliminate the GUI login from mdm.
I would configure mdm even if you intend to boot into the command prompt.

Before running anything the ‘Task Manager’ showed 27.1% of the memory used or roughly 130MB.
Firefox 12.0 consumed about 45MB of physical RAM while displaying:
LibreOffice Write consumed about 33MB of physical RAM with a blank document.

I got Python 2.7.3, Perl 5.14.2, OpenJDK 1.6.0_24 and no PHP as defaults from the install.

This is not the ‘lightest’ distro we’ve looked at in this topic.
It could be much worse.
I know Linux Mint is pretty popular.

Before you continue with your endless fountain of Linux knowledge, I would like to inform you that I got Puppy Linux to work! Thank you for your massive amounts of advice :smiley: I greatly appreciate it!

You may want to continue so that this thread can be referenced in the future by Linux newbies (like me), but for now I will not be requiring any more assistance. Thank you so much for all of your help!!!

A couple of things to bring this to a close.
I figure 5 OS installs for this topic in 5 days is enough unless someone wants another.

The above version of Linux Mint is running on an Ubuntu kernel.
If you want something using XFCE on a Debian kernel look at SnowLinux.

If you are trying to do all this on an older computer there is a great chance you might run into BIOS limitations.
Limitations that block boot from CD-ROM or USB for example.
So look for a boot manager called Plop to put on a floppy diskette.
It is a chain loader so it can load the LiveCD after it boots as though it does not exist.
It is very neatly done.

I also want to give recognition to PlopLinux. It is like D**n Small Linux and on the Plop pages there are extensive directions (the installation does involve a fair bit of command execution). It is basically not derived from Debian, Redhat or any other sub-community.
It should respond well to the ‘vga=’ parameter as previously described.

I finally want to add that if you previously followed the Lubuntu directions note that since version 12.04 Ubuntu has generally required PAE as well, but again look at fake-pae in Google to help with that if it will impact your computer.

Have fun and I’m glad it worked out.

Timed out again and this is my last revisit to this topic.

Decided to quickly install Snow Linux 4 with the Debian kernel.

You can use the trick from Linux Mint above with displays.xml to get the LiveCD into 640x480.

The Snow Linux 4 installer scales with the screen resolution down to 640x480.
So less dragging windows around with ALT-F7.
That installer also does not check to see if:

  1. Your are plugged in (laptop)
  2. Have more than 5.3GB of space
  3. Internet access unlike Linux Mint 13 LTS.
    So no barrier there.

After install you end up with grub 2 and lightdm so look back at the directions for Lubuntu for those 2 items.
You’ll need to make the xrandr script also described previously.
Just be sure to uncomment the ‘display-setup-script=’ in the section ‘[SeatDefaults]’ and add your shell script.
Do not add it to the bottom of the file or it will be ignored.

Be aware that Snow Linux was the only one of the 6 Linux distro I installed that correctly and immediately recognized that I was using Oracle VirtualBox so instead of this line:
xrandr --output default --primary --mode 640x480
You want:
xrandr --output VBOX0 --primary --mode 640x480
How did I know it was VBOX0?
Do a: xrandr -q
Again the 3rd line down, the one below the one that starts with ‘Screen 0’ shows the first display subsystem (if you have several displays you might get several results but let’s keep this example down to a single display).

So after doing all that I found that at boot in the GUI the OS was using 82MB of the 512MB of physical RAM.
About 2.3GB of the 4GB virtual hard drive was used.
The guided partitioning during the install used about 500MB of the virtual hard drive as swap space so that is also not available for other things.
So you end up with about 1.8GB of free space to do as you please out of the 4GB of storage.

I got Python 2.7.3, Perl 5.14.2 and OpenJDK 1.7.0_03 by default with this install.
I also got GAWK and GNU SED by default with this install.

Also I noticed after Ether asked below that I may not have listed the version of PuppyLinux I installed earlier as well.

Let’s do one better and make sure that we are all looking at the same thing.
The versions of the ISO files I am using are:

   Distribution             ISO file used                       Size of ISO as stored on EXT3

1. Lubuntu                  lubuntu-13.04-alternate-i386.iso    653MB
2. Puppy Linux              lupu-528.005.iso                    133MB
3. CrunchBang aka #!        crunchbang-11-20130506-i486.iso     771MB
4. D**n Small Linux (DSL)   dsl-4.11.rc2-syslinux.iso            51MB
5. Linux Mint               linuxmint-13-xfce-dvd-32bit.iso     811MB
6. Snow Linux               snowlinux-4-xfce-i386.iso           694MB

So let me collect from all of my above posts the information about the storage used and the physical RAM consumed after boot:

Available free space with guided partitioning on *4GB* virtual drive:
(Do not assume this will stay at this level.)
(Data will likely accumulate from usage and also from updates.)

1. Lubuntu                  1.4GB free
2. Puppy Linux              3.3GB free   * 2nd largest free space
3. CrunchBang aka #!        0.6GB free   * Needed to substract swap partition in earlier post
4. D**n Small Linux (DSL)   3.7GB free
5. Linux Mint               2.2GB free   * *WARNING* I needed >5.3GB to install so this is from 6GB
6. Snow Linux               0.8GB free

Physical RAM used at boot of default internal hard drive install:
(These numbers will differ from the content of: cat /proc/meminfo)
(These numbers might differ from the content of: free)
(Execution of just about any non-trivial program will consume additional physical RAM.)
(Installation of updates could easily alter the amount of RAM that is consumed at idle once booted.)

1. Lubuntu                  140MB   * Largest usage of RAM
2. Puppy Linux               37MB   * 2nd smallest usage of RAM
3. CrunchBang aka #!         82MB
4. D**n Small Linux (DSL)    14MB   * Smallest usage of RAM
5. Linux Mint               130MB
6. Snow Linux                82MB

Finally what common programming languages do you get by default:

                          | AWK         | SED         | Perl   | Python | OpenJDK
1. Lubuntu                | AWK         | GNU SED     | 5.14.2 | 2.7.4  | N/A
2. Puppy Linux            | GAWK        | GNU SED     | 5.10.1 | N/A    | N/A
3. CrunchBang aka #!      | AWK         | GNU SED     | 5.14.2 | 2.7.3  | 1.6.0_27
4. D**n Small Linux (DSL) | BusyBox AWK | BusyBox SED | 5.8.0  | N/A    | N/A
5. Linux Mint             | GAWK        | GNU SED     | 5.14.2 | 2.7.3  | 1.6.0_24
6. Snow Linux             | GAWK        | GNU SED     | 5.14.2 | 2.7.3  | 1.7.0_03

I’ve gathered up a few more things from this topic here in the table below.

                          | Boot loader | Login / Display Manager | Rough boot time
1. Lubuntu                | grub 2      | lightdm                 | 46 seconds 
2. Puppy Linux            | grub 1      | N/A                     | 34 seconds  * Tie for 2nd fastest
3. CrunchBang aka #!      | grub 2      | slim                    | 39 seconds
4. D**n Small Linux (DSL) | grub 1      | N/A                     | 21 seconds  * Fastest
5. Linux Mint             | grub 2      | mdm                     | 34 seconds  * Tie for 2nd fastest
6. Snow Linux             | grub 2      | lightdm                 | 51 seconds  * Slowest

The boot times are the result of rounding up or down to the nearest second.
Then trying the boot 3 times, averaging and then rounding up or down.
Therefore a mere second or 2 difference between OS is pretty irrelevant.
The measurement was done with a stop watch so there’s more inaccuracy.
I started as close to the double-click to start the VM as possible.
I stopped as close to the login prompt or command prompt appearing as possible.
PuppyLinux never produced a login prompt it just presented a command prompt (a bit insecure in some cases).
Keep in mind this therefore includes the Oracle VirtualBox BIOS screen display time.
The BIOS screen appears for roughly: 3 seconds.
In all cases the boot loader was configured to wait: 2 seconds.
Therefore all boot times are actually padded by 5 seconds.
Since I am not using any sort of custom BIOS that means that these virtual machines will never boot faster than 2 seconds.
These numbers are worst case for my laptop because I put the virtual storage on an external USB3 Iomega 500GB 2.5" hard drive.
This laptop does not have integrated USB3 so I have that drive plugged into my USB2 port.
Therefore these boot times are longer than when I originally installed the virtual machines on my internal SSD.
My laptop is an: Lenovo T61, 6465-CTO, 4GB of RAM, Intel T7700 CPU @ 2.4GHz
A faster or slower CPU will likely impact the boot performance.
If the system memory for the host is too low the host will swap and that will impact the boot performance.
In all cases I had no other manually started programs open except Oracle VirtualBox and gnote (to scribble notes).
Also keep in mind that if you do not properly shutdown Linux on the next boot it might ‘fsck’ which eats time.
Finally note that Dn Small Linux was the only OS I installed on an virtual IDE controller instead of virtual SATA.
So D
n Small Linux might be getting an advantage from that difference in the virtual machine.
I can’t test D**n Small Linux on a virtual SATA controller because it wouldn’t work that way for me.

Copying the virtual disk for D**n Small Linux back to my SSD decreased the boot time by 3-4 seconds over 3 tests.
Copying the virtual disk for Snow Linux back to my SSD decreased the boot time by 3 seconds over 3 tests.
Remember that the SSD is much faster but much of what the boot does is limited by queries to hardware.
Therefore virtualizing these hosts has negatively impacted the performance.

Keep in mind that FIRST’s RFQ for a new control system asked for boot times under 30 seconds.
Using that as guidance you could cold boot a laptop on the robot with some tweaking.
Further with a laptop on the robot secondary to the cRIO you might not need to reboot at all because it has a battery.

I have all 6 of these installations as Oracle VirtualBox virtual machines.
I am running Oracle VirtualBox version: 4.2.16 r86992 on:
RedHat 6.3 Santiago kernel 2.6.32-279.14.1.el6.x86_64
If anyone wants them as appliances I can do that.