Skip to content
Donald A. Cupp Jr. edited this page Dec 5, 2024 · 18 revisions

Introduction

Running Linux 4.x and X.org 7.x in 64 MB diskless is not trivial. ThinStation is a minimalist Linux distribution, so it takes more interaction from you than a typical fat “include-everything-and-the-kitchen-sink” type of distribution (like e.g. RedHat).

In order to keep the boot image small, you have to define which hardware will be supported by it. ThinStation uses machine profiles to represent hardware configurations. There are a couple of predefined machine profiles, but you probably have to create your own.

What is a machine profile and how do I use it?

Technically spoken, a machine profile is a subdirectory of build/machine containing the files module.list, firmware.list (optional), vbe_modes.list or package.list (optional).

A machine profile is used with the machine directive in build.conf. For example:

machine myPC

It’s supposed to satisfy firmware, kernel module and X.org driver dependencies for a particular hardware platform in one go. You can have several machines defined in build.conf to create a boot image that runs on multiple types of hardware.

The machine directive abstracts firmware, module and even package directives. It complements module, package and param directives.

How do I create a new machine profile?

Short summary: Create a “fat” boot image, boot it and note which kernel modules were loaded.

  1. Uncomment (or add) package extensions and package extensions-x in build.conf, as well as any potential X.org targets (package xorg7-*) that may be used by a platform.
  2. Build using the command ./build --allmodules. This generates a rather big image (> 200 MiB) with everything driverwise.
  3. Boot the client with this image (see note below if you have problems) and run /bin/hwlister.sh. This will generate one, two or three files:
  • module.list (always),
  • vbe_modes.list (probably) and
  • firmware.list (maybe).
  1. If you are running a TFTP server with writable root, they’ll automatically get uploaded. Otherwise they’ll be in / on the ThinStation client and you’ll have to transfer them manually by a USB stick or network.
  2. On your build computer, go to the thinstation/build/machine directory, create a new subdirectory (e.g. myPC) and put the above files there.
  3. If you want to include a certain X.org driver in your machine profile, you have to create a package.list file containing the appropriate package line in your new machine profile directory (see 5.).

You probably will want to edit build.conf and deactivate package extensions afterwards. Remember to omit --allmodules on your next build.

Special case: Systems with less than 512 MiB of RAM

Since the above image includes X it requires your thin client to have at least 512 MiB of RAM. If your thin clients have less RAM (but at least 128 MiB) you can still use an image without X. Replace step 1 from above with:

cd /build
cp conf/hwlister/* .

Be aware of the fact that some kernel modules necessary for running X (e.g. i915 for Intel graphics devices) will not be loaded if X is not currently running (like in this case). So if you create a machine profile in text only mode you will have to add such modules to the newly created machine profile manually. Otherwise you will not be able to run X properly with this profile. Use this method at your own risk!

Advanced usage

If you create a directory etc in your machine profile directory and put arbitrary files in it, these files will be copied into the initial ramdisk under /etc. This mechanism can be used as a shortcut for configuration so that you don’t have to create a new package just for a few config files in /etc. See machine profile NT-A3500 for an example.

Clone this wiki locally