/linuxmuster-linbo7

Next generation linbo

Primary LanguageShellGNU General Public License v3.0GPL-3.0

linbo icon

linuxmuster-linbo7 (next generation)

is the free and opensource imaging solution for linuxmuster.net 7. It handles Windows 10 and Linux 64bit operating systems. Via TFTP and Grub's PXE implementation it boots a small linux system (linbofs) with a gui, which can manage all the imaging tasks on the client. Console tools are also available to manage clients and imaging remotely via the server.

Important notices:

  • Currently the code in this repo is not for production use.
  • There is only a linuxmuster-linbo7 package, the linuxmuster-linbo-common7 package is deprecated and will be removed on dist-upgrade.
  • In spite of former linuxmuster-linbo images in cloop format where only supported for restore.
  • For image creation only qcow2 format is supported. You have to change the baseimage name in the start.conf accordingly (e.g. image.qcow2).
  • Supplemental postsync, prestart and reg image files were now named without the image format part (e.g. image.postsync, image.prestart and image.reg, former: image.cloop.postsync etc.).
  • qemu-img is used for qcow2 image creation and restore.
  • Only 64bit client hardware is supported.
  • No more support for linuxmuster.net <=6.2.
  • No differential imaging yet.
  • Packages were published in the lmn7-testing repository.

Migration

  • Add the new lmn71 repo according to this instruction https://github.com/linuxmuster/deb/blob/main/README.md#setup
  • Perform a dist-upgrade subsequently.
  • Convert your cloop images to qcow2 format with linbo-cloop2qcow2:
    • invoke for example linbo-cloop2qcow2 ubuntu.cloop and
    • the converted image will be created in /srv/linbo/images/ubuntu/ubuntu.qcow2.
    • Note: Images of Windows systems may not function as expected (especially UEFI). In this case it is necessary to create a new image.
  • Change the image name in the start.conf.
  • Restart the image deployment services with linbo-torrent|linbo-multicast restart.
  • See the status of the image deployment services with systemctl status linbo-torrent|linbo-multicast.
  • Important: Start all clients 2 times to ensure Linbo v2 was updated to v4.
  • Finally start the import script linuxmuster-import-devices, which will remove the obsolete start.conf links.
  • Now you can create and deploy images as usual.
  • Explore the new linbo-torrent tool:
    Usage: /usr/sbin/linbo-torrent <start|stop|restart|reload|status|create|check> [torrent_filename|image_filename]
    
    * The commands start, stop and restart may have optionally a torrent filename
      as parameter. So the command is only processed to this certain file.
      Without an explicit torrent filename the commands were processed to all
      torrent files found recursivly below /srv/linbo.
    * A torrent filename parameter is mandatory with the command check.
    * An image filename parameter is mandatory with the command create.
    
  • Note:
    • Your current cloop images will be still functional and available for client restauration after migration.
    • New images have to be in qcow2 format.
    • New uploaded images will be placed in subdirectories below /srv/linbo/images.
    • Backups of images will be moved to /srv/linbo/images/<imagename>/backups/<timestamp>.

Features

  • Kernel 5.10.x.
  • qcow2 image format.
  • images are placed in subdirectories of /srv/linbo/images.
  • More performant image deployment based on ctorrent and opentracker.

In planning:

  • start.conf in yaml format.
  • step by step changeover of the scripting to python.
  • differential imaging.
  • secure boot support.

Build environment

Source tree structure

  • build: all files, which are used to build the package.
    • bin: helper scripts (only get kernel archive script at the moment).
    • conf.d: environment variables definition for the various build components.
    • config: configuration files for various source packages (eg. busybox, kernel).
    • initramfs.d: initramfs configurations for the various components, which are picked from the ubuntu build system to create the linbofs system from it.
    • patches: source patches, which are to be applied (eg. cloop).
    • run.d: the build scripts for the package components.
  • debian: debian packaging stuff
  • linbofs: files, which are installed to the initramfs file system.
  • serverfs: files, which are installed to the server root file system.

Build instructions:

  • Install 64bit Ubuntu 18.04
  • If you are using Ubuntu server or minimal: sudo apt install dpkg-dev
  • Install build depends (uses sudo):
    ./get-depends.sh
  • Build package:
    ./buildpackage.sh

Or for better convenience use the new linbo-build-docker environment.

Usage infos

Kernel parameters

are defined in the start.conf file (see examples) of the hardware group:
KernelOptions = quiet splash
The command linuxmuster-import-devices writes the parameters into the grub configuration of the hardware group.

Option Description
forcegrub Forces grub boot on uefi systems (in case of uefi boot issues).
quiet Suppresses kernel boot messages.
splash Displays graphical splash screen at boot time. Without this parameter, only text is displayed on the console at boot time.
warmstart=no Suppresses linbo warmstart after downloading a new linbo kernel from the server (in case this causes problems).

Linbo services

Linbo's torrent and multicast services are controlled by systemd:

systemctl start|stop|restart|status|disable|enable linbo-multicast
systemctl start|stop|restart|status|disable|enable linbo-torrent

Linbo commands

linbo-multicast

Can be used to control linbo's multicast service directly:

root@server:~# linbo-multicast --help
Usage: /usr/sbin/linbo-multicast {start|stop|restart|status}

linbo-torrent

offers possibilities beyond the control of the service:

root@server:~# linbo-torrent --help
Usage: /usr/sbin/linbo-torrent <start|stop|restart|reload|status|create|check> [torrent_filename|image_filename]

Note:

  • The commands start, stop and restart may have optionally a torrent filename as parameter. So the command is only processed to this certain file. Without an explicit torrent filename the commands were processed to all torrent files found recursivly below /srv/linbo.
  • A torrent filename parameter is mandatory with the command check.
  • An image filename parameter is mandatory with the command create.

linbo-remote

is used to remote control linbo actions on the client. Note that the create_cloop and upload_cloop commands have changed to create_image and upload_image:

root@server:~# linbo-remote -h

Usage: linbo-remote <options>

Options:

 -h                 Show this help.
 -b <sec>           Wait <sec> second(s) between sending wake-on-lan magic
                    packets to the particular hosts. Must be used in
                    conjunction with "-w".
 -c <cmd1,cmd2,...> Comma separated list of linbo commands transfered
                    per ssh direct to the client(s).
 -d                 Disables gui. To be used only together with option -c.
 -g <group>         All hosts of this hostgroup will be processed.
 -i <i1,i2,...>     Single ip or hostname or comma separated list of ips
                    or hostnames of clients to be processed.
 -l                 List current linbo-remote screens.
 -n                 Bypasses start.conf configured auto functions
                    (partition, format, initcache, start) on next boot.
                    To be used only together with options -p
                    or -c in conjunction with -w.
 -r <room>          All hosts of this room will be processed.
 -p <cmd1,cmd2,...> Create an onboot command file executed automatically
                    once next time the client boots.
 -w <sec>           Send wake-on-lan magic packets to the client(s)
                    and wait <sec> seconds before executing the
                    commands given with "-c" or in case of "-p" after
                    the creation of the pxe boot files.
 -u                 Use broadcast address with wol.

Important: * Options "-r", "-g" and "-i" exclude each other, "-c" and
             "-p" as well.

Supported commands for -c or -p options are:

partition                : Writes the partition table.
label                    : Labels all partitions defined in start.conf.
                           Note: Partitions have to be formatted.
format                   : Writes the partition table and formats all
                           partitions.
format:<#>               : Writes the partition table and formats only
                           partition nr <#>.
initcache:<dltype>       : Updates local cache. <dltype> is one of
                           rsync|multicast|torrent.
                           If dltype is not specified it is read from
                           start.conf.
sync:<#>                 : Syncs the operating system on position nr <#>.
start:<#>                : Starts the operating system on pos. nr <#>.
create_image:<#>:<"msg"> : Creates a image image from operating system nr <#>.
upload_image:<#>         : Uploads the image image from operating system nr <#>.
reboot                   : Reboots the client.
halt                     : Shuts the client down.

<"msg"> is an optional image comment.
The position numbers are related to the position in start.conf.
The commands were sent per ssh to the linbo_wrapper on the client and processed
in the order given on the commandline.
create_* and upload_* commands cannot be used with hostlists, -r and -g options.