[blfs-dev] VirtualBox running on LFS

Thomas Trepl thomas at linuxfromscratch.org
Sun Nov 18 13:52:54 PST 2018

Hi all,

today VirtualBox started on a LFS host and i was able to start a VM
with it. I'm definitely not saying it is fully functional, much more
testing and bug fixing might be required for that. It is for sure not
"production ready" yet as some errors are still there. It does not
work to start machines using the GUI, but it is possible to start them
using the CLI tool "VBoxManage". So i think its some kind of
configuration issue, fundamently it seems that VBox is working.

To come to that status was my "hobby" over the last months. I'm so
proud about it so that I need to bug you with my little success story ;-)

All my LFS development happens in VBox-VMs which are currently run by
an ArchLinux host system. Because I still dislike systemd*) and this
host is the only Linux system which is not LFS, i accepted the 
challenge to replace it (by LFS).

Since VirtualBox needs 32-bit support (and a printer driver for my
laser also does) it was required to patch the LFS book in the way that
the instructions will produce a multilib supporting tool chain. A
patch set has been created which applies to recent LFS books and
rendering can be parameterized to include/exclude multilib support. 

Thanks especially to DJ for supporting me here, keeping track on the
systemd side and providing fixes on the patches. If interested, you
find the patch at https://io.ax.lt/LFS/lfs/patch-multilib-SVN.diff

The rest is more or less business as usual, many package to install,
some compiled as 32bit-binaries too. Here the list of installed

which pcre zip unzip lynx sqlite db apr apr-util libtirpc pam cyrus-
sasl subversion serf nano belfs***) libxml2 libgpg-error libgcrypt
libxslt sgml-common docbook-xml docbook-xsl docbook-dsssl tidy shadow
openssh ca-certs lib32-nettle**) icu libldap(=openldap) libunistring
libtasn1 nettle p11-kit gnutls libidn2 curl libarchive

xorg-config util-macros xorgproto libXau libXdmcp xcb-proto libxcb
libpng  libuv cmake harfbuzz freetype fontconfig xorg-libraries
xcb-util xcb-util-image xcb-util-keysyms xcb-util-renderutil xcb-util-
wm xcb-util-cursor libdrm wayland wayland-protocols llvm-libs llvm
MesaLib glu xbitmaps xorg-apps xcursor-themes font-util graphite2
xorg-fonts xkeyboard-config libxkbcommon pixman libepoxy xorg-server
libevdev mtdev xf86-input-evdev xf86-input-synaptics xf86-video-ati
xf86-video-intel xf86-video-vboxvideo xf86-video-vesa twm xterm xclock

pcre2 alsa-lib yasm libjpeg-turbo libmng libinput pciutils postgresql-
client freeglut libtiff libevent mariadb-client libogg libvorbis flac
libsndfile dbus glib gobject-introspection libical bluez sbc
pulseaudio cdparanoia libtheora gstreamer gst-plugins-base libusb
lib32-libusb xmlto xdg-utils lib32-gnutls lib32-libtasn1 lib32-p11-kit 
lib32-libidn lib32-libunistring cups lib32-cups**) qt

cdrtools libIDL iasl SDL libvpx libaio libdevmapper(=llvm) gsoap
libvncserver opus VirtualBox

So all in all (beside from core LFS) about 140 packages.

Some pitfalls:

32bit support:
I wasted a good amount of time to figure out why suddenly glibc no
longer compiles in lib32 mode (gcc -m32). I searched and searched and
even asked on mailing list... Well, i forgot that the kernel i run
wasn't 32-bit enabled. Booting the right kernel, all was fine again.
In kernel config, don't forget to set

   Executable file formats / Emulations  --->
      [*] IA32 Emulation
      < |M|*>   IA32 a.out support
      [*] x32 ABI for 64-bit mode

Build instructions stolen from ArchLinux but compilation always
crashed while compiling vboxwebservice with quite strange error
messages. Finally i found out that 4GB RAM isn't enough, the OOM-
killer canceled gcc. I increased my VMs size to 8GB and it compiled

A photo of LFS running a quite old and strange (but cool) operating
system can be found here: https://io.ax.lt/LFS/lfs-vbox-1024.png
That OS is called "EUMEL", developed somewhere back in the 80's,
its primary programming language is ELAN which is also the language
used at command line. It is a multiuser and multitask OS running on
Z80 CPUs before it was ported to x86.

Again, this VBox on LFS is by far not running well atm. VirtualBox
GUI starts fine and it presents me all my VMs but i cannot start them 
within the GUI. To start VMs i have to use "VBoxManage startvm <name>".

But all in all i think the whole story shows that with LFS everything
is possible ;-)

Btw, there is no Python2 at all on this machine, everything compiles
fine with Python3.


*)   don't want to start any discussions about this here as I do not
     really have other "arguments" than "don't like it" atm. I'm not
     able to argue on a technical basis...
**)  for the Dell printer driver
***) my own pkgmngr inspired by pacman. Just set up to see how package
     management will work (or not)

More information about the blfs-dev mailing list