Skip to content

gerd-git/linuxmuster-linbo7

 
 

Repository files navigation

linbo icon

linuxmuster-linbo7 (next generation)

is the free and opensource imaging solution for linuxmuster.net 7. It handles Windows 10 (TM) 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.

Features

  • Kernel >5.18.
  • qcow2 image format.
  • Differential images.
  • Complete refactoring of linbo_cmd.
  • switch to new ntfs3 kernel driver, allows file sync for ntfs partitions.

Important notices:

  • Currently the code in this repo is not for production use. For the currently stable version go to branch 4.0.
  • The README for the stable version is still valid.
  • Packages were published in the lmn72 testing repository.
  • At the moment the linbo_gui is not compatible with Ubuntu 22.04 and will not work.

Migration from linuxmuster.net 7.1

  • Perform a two step upgrade of the server from Ubuntu 18.04 to 20.04 and finally to 22.04 using do-release-upgrade.
  • Reconfigure the linuxmuster packages (webui package may fail for the moment): dpkg-reconfigure sophomorix-samba linuxmuster-base7 linuxmuster-webui7
  • Add the nogui kernel parameter to the global KernelOptions in start.conf to avoid starting linbo_gui, because this would lead to a non functional linbo client (needed as long as the linbo_gui is not compatible to 22.04). Don't forget to invoke linuxmuster-import-devices to apply the changes.
  • Reactivate the lmn71 repo /etc/apt/sources-list.d/lmn71.list.distUpgrade.
  • Add the lmn72 repo according to this instruction.
  • Perform a dist-upgrade subsequently.

Differential imaging

  • Differential imagefile uses the qcow2 baseimage as so called backingstore.
  • Differential image gets extension qdiff: image.qdiff -> image.qcow2.
  • The diffimage will be created in the same directory as the baseimage, so they are virtually "bundled".
  • If a diffimage exists for a baseimage, the diffimage is used for the restore.
  • If you remove the diffimage on the server, it is also deleted on the client during the sync and only the baseimage is used for the restore.
  • When uploading a new diffimage, any existing old diffimage is moved to a backup folder.
  • When uploading a new baseimage, the old baseimage and diffimage (if any) are moved to a backup folder.
  • Diffimage is created file-based by rsync:
    qemu-img create -f qcow2 -b image.qcow2 image.qdiff
    qemu-nbd --connect /dev/nbd0 image.qdiff
    mount /dev/nbd0 /image
    mount /dev/sda1 /mnt
    rsync -HAa --exclude="/.linbo" --exclude-from="/etc/rsync.exclude" --delete --delete-excluded  /mnt/ /image
    umount /mnt
    umount /image
    qemu-nbd --disconnect /dev/nbd0
    
  • Diffimage wll be restored file-based:
    qemu-nbd -r --connect /dev/nbd0 image.qdiff
    mount /dev/nbd0 /image
    mount /dev/sda1 /mnt
    rsync -HAa --exclude="/.linbo" --exclude-from="/etc/rsync.exclude" --delete --delete-excluded  /image/ /mnt
    umount /mnt
    umount /image
    qemu-img --disconnect /dev/nbd0
    
  • This also works with Windows10 thanks to the new native ntfs3 driver.
  • The entry Image = in start.conf becomes obsolete, because diffimage is always bundled with baseimage.
  • For image creation, you only specify whether you want to create a base image or a diffimage:
    linbo-remote -c|-p create_qdiff:<#> ...
    linbo_cmd create <cache> <imagefile> <root>
    linbo_create_image <#> qdiff
    
  • Image upload accordingly:
    linbo-remote -c|-p upload_qdiff:<#> ...
    linbo_cmd upload <server> <user> <password> <cache> <imagefile>
    linbo_upload <password> <imagefile>
    

Note:

  • <#>: start.conf position number of operating system.
  • qdiff: option to indicate a differential image, if omitted a baseimage will be created.
  • Further infos about the new linbo commands see refactor linbo_cmd #72.

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 Ubuntu 22.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

New kernel parameters

Parameter Description
nogui Does not start linbo_gui (for debugging purposes), console only mode.
nowarmstart Suppresses linbo warmstart after downloading a new linbo kernel from the server (in case this causes problems). Note: The old parameter warmstart=no does the same and is still valid for compatibility reasons.

linbo-remote

gets two new commands for differential imaging:

create_qdiff:<#>:<"msg"> : Creates a differential image from operating system nr <#>.
upload_qdiff:<#>         : Uploads a differential image from operating system nr <#>.

Further infos see README of stable branch.

About

Next generation linbo

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 93.7%
  • Python 3.1%
  • Batchfile 1.6%
  • 1C Enterprise 1.4%
  • Other 0.2%