├── debian ├── compat ├── .gitignore ├── releasename ├── copyright ├── postinst ├── rules └── control ├── linbofs ├── etc │ ├── busybox.conf │ ├── linbo-version │ ├── filesystems │ ├── modules │ ├── passwd │ ├── udev │ │ └── rules.d │ │ │ └── 90-qemu.rules │ ├── splash.conf │ ├── fstab │ ├── inittab │ ├── nsswitch.conf │ ├── group │ └── rsync.exclude ├── usr │ ├── share │ │ ├── qt │ │ │ └── german_keymap.qmap │ │ ├── plymouth │ │ │ └── themes │ │ │ │ ├── linbo-splash │ │ │ │ ├── arrows-1.png │ │ │ │ ├── arrows-10.png │ │ │ │ ├── arrows-11.png │ │ │ │ ├── arrows-12.png │ │ │ │ ├── arrows-13.png │ │ │ │ ├── arrows-14.png │ │ │ │ ├── arrows-15.png │ │ │ │ ├── arrows-16.png │ │ │ │ ├── arrows-17.png │ │ │ │ ├── arrows-18.png │ │ │ │ ├── arrows-2.png │ │ │ │ ├── arrows-3.png │ │ │ │ ├── arrows-4.png │ │ │ │ ├── arrows-5.png │ │ │ │ ├── arrows-6.png │ │ │ │ ├── arrows-7.png │ │ │ │ ├── arrows-8.png │ │ │ │ ├── arrows-9.png │ │ │ │ ├── logo_no_arrows.png │ │ │ │ └── linbo-splash.script │ │ │ │ └── default.plymouth │ │ └── udhcpc │ │ │ └── default.script │ └── bin │ │ ├── linbo_size_cache │ │ ├── linbo_size_disk │ │ ├── linbo_version │ │ ├── linbo_ip │ │ ├── linbo_login │ │ ├── linbo_bitmask │ │ ├── linbo_mac │ │ ├── linbo_mem │ │ ├── linbo_bat │ │ ├── linbo_netmask │ │ ├── linbo_listimages │ │ ├── linbo_writefile │ │ ├── linbo_fstype │ │ ├── linbo_cpu │ │ ├── linbo_initcache_format │ │ ├── linbo_partition_format │ │ ├── linbo_autostart │ │ ├── linbo_fakestart │ │ ├── linbo_forcesync │ │ ├── linbo_seed │ │ ├── linbo_hostname │ │ ├── linbo_forcesyncstart │ │ ├── linbo_readfile │ │ ├── linbo_syncstart │ │ ├── linbo_mktorrent │ │ ├── linbo_warmstart │ │ ├── linbo_link_blkdev │ │ ├── linbo_auth │ │ ├── linbo_vnc │ │ ├── linbo_size │ │ ├── linbo_postsync │ │ ├── linbo_prestart │ │ ├── linbo_cmd │ │ ├── linbo_mkinfo │ │ ├── linbo_download │ │ ├── linbo_preregister │ │ ├── linbo_mount │ │ ├── gui_ctl │ │ ├── linbo_initcache │ │ ├── linbo_patch_registry │ │ ├── linbo_format │ │ ├── linbo_upload │ │ ├── linbo_label │ │ ├── linbo_split_startconf │ │ ├── linbo_mountcache │ │ └── linbo_register ├── .env ├── .profile └── linbo.sh ├── serverfs ├── etc │ ├── linuxmuster │ │ └── linbo │ │ │ ├── start.conf.default │ │ │ ├── inittab.ex │ │ │ ├── wpa_supplicant.conf.ex │ │ │ ├── custom_kernel.ex │ │ │ ├── firmware.ex │ │ │ └── ssh_config │ ├── logrotate.d │ │ └── linuxmuster-linbo7 │ ├── default │ │ ├── linbo-multicast │ │ └── linbo-torrent │ └── systemd │ │ └── system │ │ ├── opentracker.service │ │ ├── linbo-multicast.service │ │ └── linbo-torrent.service ├── srv │ └── linbo │ │ ├── german.kbd │ │ ├── icons │ │ ├── mint.png │ │ ├── suse.png │ │ ├── win7.png │ │ ├── debian.png │ │ ├── default.png │ │ ├── fedora.png │ │ ├── freebsd.png │ │ ├── other.png │ │ ├── redhat.png │ │ ├── ubuntu.png │ │ ├── win10.png │ │ ├── winxp.png │ │ ├── linbo_wallpaper_1024x768.png │ │ ├── linbo_wallpaper_640x400.png │ │ ├── linbo_wallpaper_800x600.png │ │ └── README │ │ ├── boot │ │ └── grub │ │ │ └── themes │ │ │ └── linbo │ │ │ ├── icons │ │ │ ├── arch.png │ │ │ ├── centos.png │ │ │ ├── debian.png │ │ │ ├── fedora.png │ │ │ ├── gentoo.png │ │ │ ├── linbo.png │ │ │ ├── linux.png │ │ │ ├── ubuntu.png │ │ │ ├── win10.png │ │ │ ├── kubuntu.png │ │ │ ├── linuxmint.png │ │ │ ├── lubuntu.png │ │ │ ├── opensuse.png │ │ │ ├── unknown.png │ │ │ ├── win_start.png │ │ │ ├── xubuntu.png │ │ │ ├── arch_start.png │ │ │ ├── linux_start.png │ │ │ ├── win10_start.png │ │ │ ├── arch_newstart.png │ │ │ ├── arch_syncstart.png │ │ │ ├── centos_start.png │ │ │ ├── debian_start.png │ │ │ ├── fedora_start.png │ │ │ ├── gentoo_start.png │ │ │ ├── kubuntu_start.png │ │ │ ├── linux_newstart.png │ │ │ ├── lubuntu_start.png │ │ │ ├── opensuse_start.png │ │ │ ├── ubuntu_start.png │ │ │ ├── unknown_start.png │ │ │ ├── win10_newstart.png │ │ │ ├── win_newstart.png │ │ │ ├── win_syncstart.png │ │ │ ├── xubuntu_start.png │ │ │ ├── centos_newstart.png │ │ │ ├── centos_syncstart.png │ │ │ ├── debian_newstart.png │ │ │ ├── debian_syncstart.png │ │ │ ├── fedora_newstart.png │ │ │ ├── fedora_syncstart.png │ │ │ ├── gentoo_newstart.png │ │ │ ├── gentoo_syncstart.png │ │ │ ├── kubuntu_newstart.png │ │ │ ├── linux_syncstart.png │ │ │ ├── linuxmint_start.png │ │ │ ├── lubuntu_newstart.png │ │ │ ├── ubuntu_newstart.png │ │ │ ├── ubuntu_syncstart.png │ │ │ ├── unknown_newstart.png │ │ │ ├── win10_syncstart.png │ │ │ ├── xubuntu_newstart.png │ │ │ ├── kubuntu_syncstart.png │ │ │ ├── linuxmint_newstart.png │ │ │ ├── linuxmint_syncstart.png │ │ │ ├── lubuntu_syncstart.png │ │ │ ├── opensuse_newstart.png │ │ │ ├── opensuse_syncstart.png │ │ │ ├── unknown_syncstart.png │ │ │ └── xubuntu_syncstart.png │ │ │ ├── select_c.png │ │ │ ├── select_e.png │ │ │ ├── select_n.png │ │ │ ├── select_ne.png │ │ │ ├── select_nw.png │ │ │ ├── select_s.png │ │ │ ├── select_se.png │ │ │ ├── select_sw.png │ │ │ ├── select_w.png │ │ │ ├── linbo_logo_big.png │ │ │ ├── terminal_box_c.png │ │ │ ├── terminal_box_e.png │ │ │ ├── terminal_box_n.png │ │ │ ├── terminal_box_ne.png │ │ │ ├── terminal_box_nw.png │ │ │ ├── terminal_box_s.png │ │ │ ├── terminal_box_se.png │ │ │ ├── terminal_box_sw.png │ │ │ ├── terminal_box_w.png │ │ │ ├── unifont-regular-16.pf2 │ │ │ └── theme.txt │ │ ├── linuxmuster-win │ │ ├── custom.cmd.ex │ │ ├── uninstall.cmd │ │ ├── install.cmd │ │ ├── start-tasks.cmd │ │ ├── README │ │ └── save-activation-status.cmd │ │ └── examples │ │ ├── win10.image.reg │ │ ├── image.prestart │ │ ├── README.txt │ │ ├── win10.global.reg │ │ ├── win11.global.reg │ │ ├── start.conf.win10 │ │ ├── start.conf.opensuse │ │ ├── start.conf.ubuntu │ │ ├── start.conf.ubuntu2004 │ │ ├── start.conf.win10-efi │ │ ├── start.conf.ubuntu-efi │ │ └── start.conf.ubuntu2004-efi ├── usr │ ├── share │ │ └── linuxmuster │ │ │ ├── linbo │ │ │ ├── templates │ │ │ │ ├── isolinux │ │ │ │ │ ├── pxe.cfg │ │ │ │ │ ├── isolinux.cfg │ │ │ │ │ ├── sys64.cfg │ │ │ │ │ └── menu.cfg │ │ │ │ ├── machineacct │ │ │ │ ├── grub.cfg.os-iso │ │ │ │ ├── grub.cfg.iso │ │ │ │ ├── grubenv.reboot │ │ │ │ ├── grub.cfg.forced_netboot │ │ │ │ ├── linbo.cfg.iso │ │ │ │ ├── grub.cfg.global │ │ │ │ ├── grub.cfg.os │ │ │ │ └── grub.cfg.local │ │ │ ├── graphics │ │ │ │ ├── logo16.ppm │ │ │ │ ├── linbo_wallpaper.png │ │ │ │ ├── linbo_icon_194x194.png │ │ │ │ └── logo16.txt │ │ │ ├── efipxe │ │ │ ├── linbo-ssh.sh │ │ │ ├── linbo-scp.sh │ │ │ ├── linbo-mcasthelper.sh │ │ │ ├── linbo-torrenthelper.sh │ │ │ ├── linbo-mkinfo.sh │ │ │ ├── harvest-app.sh │ │ │ ├── mkgrubnetdir.sh │ │ │ ├── make-linbo-iso.sh │ │ │ ├── rsync-pre-upload.sh │ │ │ └── rsync-post-download.sh │ │ │ └── templates │ │ │ ├── rsync.override.conf │ │ │ └── rsyncd.conf │ └── sbin │ │ ├── linbo-multicast │ │ └── linbo-cloop2qcow2 └── var │ └── lib │ └── linuxmuster │ └── hooks │ └── update-linbofs.pre.d │ └── 00_example ├── .gitignore ├── .claude └── settings.local.json ├── get-pkg.sh └── get-depends.sh /debian/compat: -------------------------------------------------------------------------------- 1 | 13 -------------------------------------------------------------------------------- /linbofs/etc/busybox.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /linbofs/etc/linbo-version: -------------------------------------------------------------------------------- 1 | LINBO 4.3.29-0: Psycho Killer 2 | -------------------------------------------------------------------------------- /serverfs/etc/linuxmuster/linbo/start.conf.default: -------------------------------------------------------------------------------- 1 | # LINBO empty start.conf 2 | -------------------------------------------------------------------------------- /debian/.gitignore: -------------------------------------------------------------------------------- 1 | *.debhelper* 2 | files 3 | linuxmuster-linbo7 4 | *.log 5 | *.substvars 6 | -------------------------------------------------------------------------------- /linbofs/etc/filesystems: -------------------------------------------------------------------------------- 1 | reiserfs 2 | ext3 3 | ext2 4 | vfat 5 | ntfs-3g 6 | fuseblk 7 | ntfs 8 | -------------------------------------------------------------------------------- /linbofs/etc/modules: -------------------------------------------------------------------------------- 1 | # modules to load on boot 2 | fan 3 | thermal 4 | nbd 5 | ntfs3 6 | uinput 7 | -------------------------------------------------------------------------------- /linbofs/etc/passwd: -------------------------------------------------------------------------------- 1 | root:x:0:0:root:/:/bin/sh 2 | usbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false 3 | -------------------------------------------------------------------------------- /linbofs/etc/udev/rules.d/90-qemu.rules: -------------------------------------------------------------------------------- 1 | KERNEL=="vda", SYMLINK+="mmcblk0" 2 | KERNEL=="vda?", SYMLINK+="mmcblk0p%n" 3 | -------------------------------------------------------------------------------- /serverfs/srv/linbo/german.kbd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/german.kbd -------------------------------------------------------------------------------- /linbofs/etc/splash.conf: -------------------------------------------------------------------------------- 1 | BAR_LEFT=150 2 | BAR_TOP=300 3 | BAR_WIDTH=500 4 | BAR_HEIGHT=25 5 | BAR_R=64 6 | BAR_G=64 7 | BAR_B=64 8 | -------------------------------------------------------------------------------- /serverfs/srv/linbo/icons/mint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/icons/mint.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/icons/suse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/icons/suse.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/icons/win7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/icons/win7.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/icons/debian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/icons/debian.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/icons/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/icons/default.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/icons/fedora.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/icons/fedora.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/icons/freebsd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/icons/freebsd.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/icons/other.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/icons/other.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/icons/redhat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/icons/redhat.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/icons/ubuntu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/icons/ubuntu.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/icons/win10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/icons/win10.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/icons/winxp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/icons/winxp.png -------------------------------------------------------------------------------- /linbofs/etc/fstab: -------------------------------------------------------------------------------- 1 | none /dev/pts devpts defaults 0 0 2 | none /proc proc defaults 0 0 3 | none /sys sysfs noauto 0 0 4 | 5 | -------------------------------------------------------------------------------- /linbofs/usr/share/qt/german_keymap.qmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/linbofs/usr/share/qt/german_keymap.qmap -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/templates/isolinux/pxe.cfg: -------------------------------------------------------------------------------- 1 | 2 | menu separator 3 | 4 | label pxe 5 | menu label PXE Boot 6 | kernel /ipxe.lkrn 7 | -------------------------------------------------------------------------------- /serverfs/srv/linbo/icons/linbo_wallpaper_1024x768.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/icons/linbo_wallpaper_1024x768.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/icons/linbo_wallpaper_640x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/icons/linbo_wallpaper_640x400.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/icons/linbo_wallpaper_800x600.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/icons/linbo_wallpaper_800x600.png -------------------------------------------------------------------------------- /linbofs/etc/inittab: -------------------------------------------------------------------------------- 1 | # /etc/inittab 2 | # 3 | # thomas@linuxmuster.net 4 | # 20231207 5 | # 6 | ::sysinit:/init.sh 7 | ::respawn:/linbo.sh 8 | ::wait:/usr/bin/linbo_vnc onboot 9 | -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/arch.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/select_c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/select_c.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/select_e.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/select_e.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/select_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/select_n.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/select_ne.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/select_ne.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/select_nw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/select_nw.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/select_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/select_s.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/select_se.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/select_se.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/select_sw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/select_sw.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/select_w.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/select_w.png -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/graphics/logo16.ppm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/usr/share/linuxmuster/linbo/graphics/logo16.ppm -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/centos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/centos.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/debian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/debian.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/fedora.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/fedora.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/gentoo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/gentoo.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/linbo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/linbo.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/linux.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/ubuntu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/ubuntu.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/win10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/win10.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .directory 2 | .debhelper 3 | .vscode 4 | *.bak 5 | *.log 6 | build-stamp 7 | cache 8 | configure-stamp 9 | kernel64 10 | mkpkg 11 | src 12 | tmp 13 | CLAUDE.md 14 | -------------------------------------------------------------------------------- /linbofs/usr/share/plymouth/themes/linbo-splash/arrows-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/linbofs/usr/share/plymouth/themes/linbo-splash/arrows-1.png -------------------------------------------------------------------------------- /linbofs/usr/share/plymouth/themes/linbo-splash/arrows-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/linbofs/usr/share/plymouth/themes/linbo-splash/arrows-10.png -------------------------------------------------------------------------------- /linbofs/usr/share/plymouth/themes/linbo-splash/arrows-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/linbofs/usr/share/plymouth/themes/linbo-splash/arrows-11.png -------------------------------------------------------------------------------- /linbofs/usr/share/plymouth/themes/linbo-splash/arrows-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/linbofs/usr/share/plymouth/themes/linbo-splash/arrows-12.png -------------------------------------------------------------------------------- /linbofs/usr/share/plymouth/themes/linbo-splash/arrows-13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/linbofs/usr/share/plymouth/themes/linbo-splash/arrows-13.png -------------------------------------------------------------------------------- /linbofs/usr/share/plymouth/themes/linbo-splash/arrows-14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/linbofs/usr/share/plymouth/themes/linbo-splash/arrows-14.png -------------------------------------------------------------------------------- /linbofs/usr/share/plymouth/themes/linbo-splash/arrows-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/linbofs/usr/share/plymouth/themes/linbo-splash/arrows-15.png -------------------------------------------------------------------------------- /linbofs/usr/share/plymouth/themes/linbo-splash/arrows-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/linbofs/usr/share/plymouth/themes/linbo-splash/arrows-16.png -------------------------------------------------------------------------------- /linbofs/usr/share/plymouth/themes/linbo-splash/arrows-17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/linbofs/usr/share/plymouth/themes/linbo-splash/arrows-17.png -------------------------------------------------------------------------------- /linbofs/usr/share/plymouth/themes/linbo-splash/arrows-18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/linbofs/usr/share/plymouth/themes/linbo-splash/arrows-18.png -------------------------------------------------------------------------------- /linbofs/usr/share/plymouth/themes/linbo-splash/arrows-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/linbofs/usr/share/plymouth/themes/linbo-splash/arrows-2.png -------------------------------------------------------------------------------- /linbofs/usr/share/plymouth/themes/linbo-splash/arrows-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/linbofs/usr/share/plymouth/themes/linbo-splash/arrows-3.png -------------------------------------------------------------------------------- /linbofs/usr/share/plymouth/themes/linbo-splash/arrows-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/linbofs/usr/share/plymouth/themes/linbo-splash/arrows-4.png -------------------------------------------------------------------------------- /linbofs/usr/share/plymouth/themes/linbo-splash/arrows-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/linbofs/usr/share/plymouth/themes/linbo-splash/arrows-5.png -------------------------------------------------------------------------------- /linbofs/usr/share/plymouth/themes/linbo-splash/arrows-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/linbofs/usr/share/plymouth/themes/linbo-splash/arrows-6.png -------------------------------------------------------------------------------- /linbofs/usr/share/plymouth/themes/linbo-splash/arrows-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/linbofs/usr/share/plymouth/themes/linbo-splash/arrows-7.png -------------------------------------------------------------------------------- /linbofs/usr/share/plymouth/themes/linbo-splash/arrows-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/linbofs/usr/share/plymouth/themes/linbo-splash/arrows-8.png -------------------------------------------------------------------------------- /linbofs/usr/share/plymouth/themes/linbo-splash/arrows-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/linbofs/usr/share/plymouth/themes/linbo-splash/arrows-9.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/kubuntu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/kubuntu.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/linuxmint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/linuxmint.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/lubuntu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/lubuntu.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/opensuse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/opensuse.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/unknown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/unknown.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/win_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/win_start.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/xubuntu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/xubuntu.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/linbo_logo_big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/linbo_logo_big.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/terminal_box_c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/terminal_box_c.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/terminal_box_e.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/terminal_box_e.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/terminal_box_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/terminal_box_n.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/terminal_box_ne.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/terminal_box_ne.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/terminal_box_nw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/terminal_box_nw.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/terminal_box_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/terminal_box_s.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/terminal_box_se.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/terminal_box_se.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/terminal_box_sw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/terminal_box_sw.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/terminal_box_w.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/terminal_box_w.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/arch_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/arch_start.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/linux_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/linux_start.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/win10_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/win10_start.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/icons/README: -------------------------------------------------------------------------------- 1 | default.png by Everaldo Coelho -> http://pixelpalooza.com/graphics/pixelpalooza/previews/2003/p03_osxp.jpg 2 | All other icons were found on wikipedia.org. 3 | -------------------------------------------------------------------------------- /serverfs/srv/linbo/linuxmuster-win/custom.cmd.ex: -------------------------------------------------------------------------------- 1 | REM custom.cmd example 2 | REM thomas@linuxmuster.net 3 | REM 20210504 4 | REM 5 | 6 | REM Place your custom windows start commands here 7 | -------------------------------------------------------------------------------- /linbofs/usr/share/plymouth/themes/linbo-splash/logo_no_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/linbofs/usr/share/plymouth/themes/linbo-splash/logo_no_arrows.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/arch_newstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/arch_newstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/arch_syncstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/arch_syncstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/centos_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/centos_start.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/debian_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/debian_start.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/fedora_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/fedora_start.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/gentoo_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/gentoo_start.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/kubuntu_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/kubuntu_start.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/linux_newstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/linux_newstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/lubuntu_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/lubuntu_start.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/opensuse_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/opensuse_start.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/ubuntu_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/ubuntu_start.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/unknown_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/unknown_start.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/win10_newstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/win10_newstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/win_newstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/win_newstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/win_syncstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/win_syncstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/xubuntu_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/xubuntu_start.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/unifont-regular-16.pf2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/unifont-regular-16.pf2 -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/graphics/linbo_wallpaper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/usr/share/linuxmuster/linbo/graphics/linbo_wallpaper.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/centos_newstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/centos_newstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/centos_syncstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/centos_syncstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/debian_newstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/debian_newstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/debian_syncstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/debian_syncstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/fedora_newstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/fedora_newstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/fedora_syncstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/fedora_syncstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/gentoo_newstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/gentoo_newstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/gentoo_syncstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/gentoo_syncstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/kubuntu_newstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/kubuntu_newstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/linux_syncstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/linux_syncstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/linuxmint_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/linuxmint_start.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/lubuntu_newstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/lubuntu_newstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/ubuntu_newstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/ubuntu_newstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/ubuntu_syncstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/ubuntu_syncstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/unknown_newstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/unknown_newstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/win10_syncstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/win10_syncstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/xubuntu_newstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/xubuntu_newstart.png -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/graphics/linbo_icon_194x194.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/usr/share/linuxmuster/linbo/graphics/linbo_icon_194x194.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/kubuntu_syncstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/kubuntu_syncstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/linuxmint_newstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/linuxmint_newstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/linuxmint_syncstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/linuxmint_syncstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/lubuntu_syncstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/lubuntu_syncstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/opensuse_newstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/opensuse_newstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/opensuse_syncstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/opensuse_syncstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/unknown_syncstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/unknown_syncstart.png -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/icons/xubuntu_syncstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxmuster/linuxmuster-linbo7/HEAD/serverfs/srv/linbo/boot/grub/themes/linbo/icons/xubuntu_syncstart.png -------------------------------------------------------------------------------- /debian/releasename: -------------------------------------------------------------------------------- 1 | Psycho Killer 2 | "Psycho Killer" is a song by the American rock band Talking Heads, released on their debut studio album Talking Heads: 77 (1977). 3 | (https://en.wikipedia.org/wiki/Psycho_Killer) -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/templates/rsync.override.conf: -------------------------------------------------------------------------------- 1 | # /etc/systemd/system/rsync.service.d/override.conf 2 | # 3 | # thomas@linuxmuster.net 4 | # 20230714 5 | # 6 | 7 | [Service] 8 | ProtectSystem=true 9 | -------------------------------------------------------------------------------- /debian/copyright: -------------------------------------------------------------------------------- 1 | Thomas Schmitt, linuxmuster.net e.V. 2 | 23.10.2015 3 | 4 | Copyright: GPL V2 5 | See https://www.gnu.org/licenses/gpl-2.0.html 6 | 7 | lsaSecretStore.exe: 8 | MIT license, see source package lsaSecrets-src 9 | -------------------------------------------------------------------------------- /serverfs/etc/logrotate.d/linuxmuster-linbo7: -------------------------------------------------------------------------------- 1 | /var/log/linuxmuster/linbo/*.log { 2 | rotate 4 3 | weekly 4 | compress 5 | size 50k 6 | missingok 7 | notifempty 8 | create 600 nobody nogroup 9 | } 10 | -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/templates/machineacct: -------------------------------------------------------------------------------- 1 | dn: @@dn@@ 2 | changetype: modify 3 | replace: unicodePwd 4 | unicodePwd:: @@unicodepwd@@ 5 | replace: supplementalCredentials 6 | supplementalCredentials:: @@suppcredentials@@ 7 | - 8 | -------------------------------------------------------------------------------- /serverfs/etc/default/linbo-multicast: -------------------------------------------------------------------------------- 1 | # default values for linbo multicast server 2 | # thomas@linuxmuster.net 3 | # 20211012 4 | # 5 | 6 | # variables for udpcast 7 | PORTBASE=9000 8 | MINCLIENTS=15 9 | MINSECONDS=30 10 | MAXSECONDS=60 11 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_size_cache: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_size_cache 4 | # thomas@linuxmuster.net 5 | # 20240917 6 | # 7 | 8 | # read common shell functions 9 | source /usr/share/linbo/shell_functions 10 | 11 | linbo_size "$cache" || exit 1 12 | -------------------------------------------------------------------------------- /serverfs/srv/linbo/linuxmuster-win/uninstall.cmd: -------------------------------------------------------------------------------- 1 | REM entfernt die geplanten linuxmuster-tasks 2 | REM thomas@linuxmuster.net 3 | REM 21.09.2015 4 | 5 | schtasks /delete /TN linuxmuster-start-tasks /f 6 | schtasks /delete /TN linuxmuster-shutdown-tasks /f 7 | -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/efipxe: -------------------------------------------------------------------------------- 1 | # efi pxe netboot devicenames, last item will be first in bootorder 2 | # 3 | # thomas@linuxmuster.net 4 | # 20250808 5 | # 6 | 7 | efi network 8 | usb nic 9 | onboard nic 10 | pci lan 11 | ipv4 12 | pxev4 13 | -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/graphics/logo16.txt: -------------------------------------------------------------------------------- 1 | 1. png-Ausgangsdatei 640x480 2 | 2. in Gimp bearbeiten: 3 | - Bild | Modus | indiziert | optimale Palette: 16 Farben 4 | - exportieren als logo16.ppm -> Rohdaten 5 | 3. ppmtolss16 < logo16.ppm > logo.16 6 | -------------------------------------------------------------------------------- /serverfs/etc/systemd/system/opentracker.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=OpenTracker service 3 | After=network.target 4 | 5 | [Service] 6 | Type=simple 7 | ExecStart=/usr/sbin/opentracker -u nobody -d /srv/linbo 8 | 9 | [Install] 10 | WantedBy=multi-user.target 11 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_size_disk: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_size_disk 4 | # thomas@linuxmuster.net 5 | # 20240917 6 | # 7 | 8 | # read common shell functions 9 | source /usr/share/linbo/shell_functions 10 | 11 | linbo_size "$(get_disk_from_partition "$cache")" || exit 1 12 | -------------------------------------------------------------------------------- /linbofs/usr/share/plymouth/themes/default.plymouth: -------------------------------------------------------------------------------- 1 | [Plymouth Theme] 2 | Name=linbo-splash 3 | Description=linbo bootsplash 4 | ModuleName=script 5 | 6 | [script] 7 | ImageDir=/usr/share/plymouth/themes/linbo-splash 8 | ScriptFile=/usr/share/plymouth/themes/linbo-splash/linbo-splash.script 9 | -------------------------------------------------------------------------------- /.claude/settings.local.json: -------------------------------------------------------------------------------- 1 | { 2 | "permissions": { 3 | "allow": [ 4 | "Bash(bash -n:*)", 5 | "Bash(shellcheck:*)" 6 | ], 7 | "deny": [ 8 | "Read(cache/**)", 9 | "Read(src/**)", 10 | "Read(cache/**)" 11 | ], 12 | "ask": [] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_version: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_version 4 | # thomas@linuxmuster.net 5 | # 20220608 6 | # 7 | 8 | case "$1" in 9 | help) echo "Usage: linbo_version [-s|--short] | [help]" ;; 10 | -s|--short) echo "$LINBOVER" ;; 11 | *) echo "$LINBOFULLVER" ;; 12 | esac 13 | 14 | exit 0 15 | -------------------------------------------------------------------------------- /serverfs/etc/systemd/system/linbo-multicast.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Linbo multicast service 3 | After=network.target 4 | 5 | [Service] 6 | Type=oneshot 7 | RemainAfterExit=yes 8 | ExecStart=/usr/sbin/linbo-multicast start 9 | ExecStop=/usr/sbin/linbo-multicast stop 10 | 11 | [Install] 12 | WantedBy=multi-user.target 13 | -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/templates/isolinux/isolinux.cfg: -------------------------------------------------------------------------------- 1 | # isolinux.cfg 2 | # thomas@linuxmuster.net 3 | # 20231122 4 | 5 | #path 6 | default testcpu 7 | prompt 0 8 | timeout 0 9 | 10 | label testcpu 11 | kernel ifcpu64.c32 12 | append sys64 13 | 14 | label sys64 15 | config sys64.cfg 16 | 17 | label pxe 18 | config pxe.cfg 19 | -------------------------------------------------------------------------------- /serverfs/etc/systemd/system/linbo-torrent.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Linbo torrent service 3 | After=network.target 4 | 5 | [Service] 6 | Type=oneshot 7 | RemainAfterExit=yes 8 | ExecStart=/usr/sbin/linbo-torrent start 9 | ExecStop=/usr/sbin/linbo-torrent stop 10 | ExecReload=/usr/sbin/linbo-torrent reload 11 | 12 | [Install] 13 | WantedBy=multi-user.target 14 | -------------------------------------------------------------------------------- /serverfs/etc/linuxmuster/linbo/inittab.ex: -------------------------------------------------------------------------------- 1 | # Example for a linbofs inittab file. 2 | # Must be placed under /etc/linuxmuster/linbo/inittab. 3 | # For more information see https://manpages.debian.org/unstable/sysvinit-core/inittab.5.en.html. 4 | # 5 | # thomas@linuxmuster.net 6 | # 20231105 7 | # 8 | 9 | ::respawn:/usr/bin/my_script.sh 10 | ::wait:/usr/bin/my_script.sh 11 | -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/linbo-ssh.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # linbo ssh wrapper 4 | # 5 | # thomas@linuxmuster.net 6 | # 20231014 7 | # GPL V3 8 | # 9 | 10 | # read linuxmuster environment 11 | source /usr/share/linuxmuster/environment.sh || exit 1 12 | 13 | SSH_CONFIG="$LINBOSYSDIR/ssh_config" 14 | 15 | ssh -F $SSH_CONFIG $@ ; RC="$?" 16 | 17 | exit "$RC" 18 | 19 | -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/linbo-scp.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # linbo scp wrapper 4 | # 5 | # thomas@linuxmuster.net 6 | # 20221212 7 | # GPL V3 8 | # 9 | 10 | RSYNC_SKIP_COMPRESS="/7z/arc/arj/bz2/cab/cloop/deb/gz/gpg/iso/jar/jp2/jpg/jpeg/lz/lz4/lzma/lzo/png/qcow2/qdiff/qt/rar/rzip/s7z/sfx/svgz/tbz/tgz/tlz/txz/xz/z/zip/zst" 11 | rsync --skip-compress="RSYNC_SKIP_COMPRESS$" -e linbo-ssh $@ ; RC="$?" 12 | 13 | exit "$RC" 14 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_ip: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_ip [-h|help|--help] 4 | # prints ip address 5 | # thomas@linuxmuster.net 6 | # 20220610 7 | # 8 | 9 | usage(){ 10 | echo 11 | echo "Prints ip address." 12 | echo 13 | echo "Usage: linbo_ip [help]" 14 | echo 15 | exit 0 16 | } 17 | 18 | case "$1" in 19 | help) usage ;; 20 | *) if [ -n "$IP" ]; then echo "$IP"; else echo "OFFLINE"; fi ;; 21 | esac 22 | 23 | exit 0 24 | -------------------------------------------------------------------------------- /serverfs/srv/linbo/linuxmuster-win/install.cmd: -------------------------------------------------------------------------------- 1 | REM Installiert geplante Aufgaben für linuxmuster.net 2 | REM thomas@linuxmuster.net 3 | REM 21.09.2015 4 | 5 | REM alte Tasks zuerst deinstallieren 6 | call %SystemDrive%\linuxmuster-win\uninstall.cmd 7 | 8 | REM erstellt linuxmuster-start-tasks, die beim Start ausgeführt werden 9 | schtasks /Create /XML %SystemDrive%\linuxmuster-win\start-tasks.xml /TN linuxmuster-start-tasks 10 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_login: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_login 4 | # thomas@linuxmuster.net 5 | # 20250916 6 | # 7 | 8 | source /etc/locale.conf 9 | export LC_CTYPE="$LANG" 10 | echo -n "Please enter the password: " 11 | read -s password 12 | linbo_auth "$password" >> /tmp/linbo.log && tmux new -t linbo 13 | rm -f /tmp/linbo.passwd 14 | pid="$(ps w | grep -v grep | grep /linbo.sh | awk '{print $1}')" 15 | [ -n "$pid" ] && kill -9 "$pid" 16 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_bitmask: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_bitmask [help] 4 | # prints netmask 5 | # thomas@linuxmuster.net 6 | # 20241004 7 | # 8 | 9 | # get environment 10 | source /usr/share/linbo/shell_functions 11 | 12 | usage(){ 13 | echo 14 | echo "Prints bitmask." 15 | echo 16 | echo "Usage: linbo_bitmask [help]" 17 | echo 18 | exit 0 19 | } 20 | 21 | [ "$1" = "help" ] && usage 22 | 23 | linbo_netmask -b 24 | 25 | exit $? 26 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_mac: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_mac [-h|help|--help] 4 | # prints mac address 5 | # thomas@linuxmuster.net 6 | # 20220610 7 | # 8 | 9 | usage(){ 10 | echo 11 | echo "Prints mac address." 12 | echo 13 | echo "Usage: linbo_mac [help]" 14 | echo 15 | exit 0 16 | } 17 | 18 | case "$1" in 19 | help) usage ;; 20 | *) if [ -n "$MACADDR" ]; then echo "$MACADDR"; else echo "OFFLINE"; fi ;; 21 | esac 22 | 23 | exit 0 24 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_mem: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_mem [-h|help|--help] 4 | # prints available ram in mb 5 | # thomas@linuxmuster.net 6 | # 20220610 7 | # 8 | 9 | usage(){ 10 | echo 11 | echo "Prints available RAM in MB." 12 | echo 13 | echo "Usage: linbo_mem [help]" 14 | echo 15 | exit 0 16 | } 17 | 18 | case "$1" in 19 | help) usage ;; 20 | *) free | grep Mem | awk '{printf "%d MB\n",$2 / 1024}' ;; 21 | esac 22 | 23 | exit 0 24 | -------------------------------------------------------------------------------- /serverfs/var/lib/linuxmuster/hooks/update-linbofs.pre.d/00_example: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # update-linbofs pre hook example 4 | # DON'T make this script executable! 5 | # 6 | # thomas@linuxmuster.net 7 | # 20231112 8 | # 9 | 10 | echo "### pre hook example ###" 11 | 12 | # this script will be executed in the root directory of the linbo filesystem 13 | 14 | # copies my script to linbofs 15 | myscript="/root/linbofs/myscript.sh" 16 | cp "$myscript" usr/bin 17 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_bat: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_bat 4 | # thomas@linuxmuster.net 5 | # 20241004 6 | # 7 | 8 | # get environment 9 | source /usr/share/linbo/shell_functions 10 | 11 | usage(){ 12 | echo 13 | echo "Prints battery status in %." 14 | echo 15 | echo "Usage: linbo_bat [help]" 16 | echo 17 | exit 0 18 | } 19 | 20 | case "$1" in 21 | help) usage ;; 22 | *) find /sys/class/power_supply/ -name 'BAT*' -exec cat {}/capacity \; | head -n 1 ;; 23 | esac 24 | 25 | exit $? 26 | -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/templates/grub.cfg.os-iso: -------------------------------------------------------------------------------- 1 | 2 | # group specific grub.cfg template for linux live iso 3 | # thomas@linuxmuster.net 4 | # 20250510 5 | # 6 | 7 | # start "@@osname@@" from isofile 8 | menuentry '@@osname@@ (Start)' --class @@ostype@@_start { 9 | set isofile="@@baseimage@@" 10 | loopback loop @@osroot@@/$isofile 11 | linux (loop)/@@kernel@@ quiet splash noprompt noeject findiso=${isofile} iso-scan/filename=/${isofile} @@append@@ 12 | initrd (loop)/@@initrd@@ 13 | } 14 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_netmask: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_netmask 4 | # thomas@linuxmuster.net 5 | # 20220610 6 | # 7 | 8 | usage(){ 9 | echo 10 | echo "Prints netmask or bitmask." 11 | echo 12 | echo "Usage: linbo_netmask [-b|--bitmask] | [help]" 13 | echo 14 | exit 0 15 | } 16 | 17 | case "$1" in 18 | help) echo usage ;; 19 | -b|--bitmask) if [ -n "$MASK" ]; then echo "$MASK"; else echo "OFFLINE"; fi ;; 20 | *) if [ -n "$SUBNET" ]; then echo "$SUBNET"; else echo "OFFLINE"; fi ;; 21 | esac 22 | 23 | exit $? 24 | -------------------------------------------------------------------------------- /serverfs/etc/linuxmuster/linbo/wpa_supplicant.conf.ex: -------------------------------------------------------------------------------- 1 | # A simple wpa_supplicant config example. 2 | # For more examples see https://linux.die.net/man/5/wpa_supplicant.conf. 3 | # Must be provided under /etc/linuxmuster/linbo/wpa_supplicant.conf. 4 | # 5 | # thomas@linuxmuster.net 6 | # 20231016 7 | # 8 | 9 | # wpa-psk secured 10 | network={ 11 | ssid="LINBO_MGMT" 12 | scan_ssid=1 13 | key_mgmt=WPA-PSK 14 | psk="My Secret Passphrase" 15 | } 16 | 17 | # open 18 | network={ 19 | ssid="LINBO_MGMT" 20 | key_mgmt=NONE 21 | } 22 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_listimages: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_listimages 4 | # thomas@linuxmuster.net 5 | # 20250425 6 | # 7 | 8 | usage(){ 9 | echo 10 | echo "Lists cached images." 11 | echo 12 | echo "Usage: linbo_listimages [help]" 13 | echo 14 | exit 0 15 | } 16 | 17 | # print help 18 | [ "$1" = "help" ] && usage 19 | 20 | # get environment 21 | source /usr/share/linbo/shell_functions 22 | 23 | linbo_mountcache &> /dev/null || exit 1 24 | 25 | ls -1 /cache/*.[q][cd][oi][wf][2f] | sed 's|/cache/||' ; RC="$?" 26 | 27 | exit "$RC" 28 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_writefile: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # write image description to cache, used by linbo_gui 4 | # thomas@linuxmuster.net 5 | # 20251109 6 | # 7 | 8 | # linbo_writefile cachepartition filename 9 | 10 | # test options 11 | [ -z "$1" ] && exit 1 12 | 13 | # shift obsolete cache device name option given by linbo_gui 14 | if [ -b "$1" -o "$1" = "/cache" ]; then 15 | shift 16 | GUI="yes" 17 | fi 18 | 19 | # test remaining option 20 | [ -z "$1" ] && exit 1 21 | 22 | descfile="/cache/$1" 23 | 24 | cat > "$descfile" || exit 1 25 | -------------------------------------------------------------------------------- /linbofs/.env: -------------------------------------------------------------------------------- 1 | # linbo client environment 2 | # 3 | # thomas@linuxmuster.net 4 | # 20230118 5 | # 6 | export PS1='\h: \w # ' 7 | export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' 8 | export LINBOFULLVER="$(cat /etc/linbo-version)" 9 | export LINBOVER="$(echo "$LINBOFULLVER" | awk '{print $2}' | sed 's|:||')" 10 | export RSYNC_PERMISSIONS="--chmod=ug=rw,o=r" 11 | export RSYNC_SKIP_COMPRESS="/7z/arc/arj/bz2/cab/cloop/deb/gz/gpg/iso/jar/jp2/jpg/jpeg/lz/lz4/lzma/lzo/png/qcow2/qdiff/qt/rar/rzip/s7z/sfx/svgz/tbz/tgz/tlz/txz/xz/z/zip/zst" 12 | -------------------------------------------------------------------------------- /linbofs/etc/nsswitch.conf: -------------------------------------------------------------------------------- 1 | # /etc/nsswitch.conf 2 | # 3 | # Example configuration of GNU Name Service Switch functionality. 4 | # If you have the `glibc-doc' and `info' packages installed, try: 5 | # `info libc "Name Service Switch"' for information about this file. 6 | 7 | passwd: files 8 | group: files 9 | shadow: files 10 | 11 | hosts: files dns 12 | networks: files 13 | 14 | protocols: db files 15 | services: db files 16 | ethers: db files 17 | rpc: db files 18 | 19 | netgroup: nis 20 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_fstype: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_fstype 4 | # thomas@linuxmuster.net 5 | # 20250419 6 | # 7 | 8 | usage(){ 9 | local RC="$1" 10 | echo 11 | echo "Prints filesystem type of a partition." 12 | echo 13 | echo "Usage: linbo_fstype | [help]" 14 | echo 15 | exit "$RC" 16 | } 17 | 18 | # print help 19 | [ -z "$1" -o "$1" = "help" ] && usage 0 20 | 21 | [ -b "$1" ] || usage 1 22 | 23 | # get environment 24 | source /usr/share/linbo/shell_functions 25 | 26 | blkid -o export "$1" | grep ^TYPE | awk -F\= '{print $2}' 27 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_cpu: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_cpu 4 | # thomas@linuxmuster.net 5 | # 20250419 6 | # 7 | 8 | usage(){ 9 | echo 10 | echo "Prints cpu model (without options) and no. of cores." 11 | echo 12 | echo "Usage: linbo_cpu [-c|--cores] | [help]" 13 | echo 14 | exit 0 15 | } 16 | 17 | # get environment 18 | source /usr/share/linbo/shell_functions 19 | 20 | case "$1" in 21 | help) usage ;; 22 | -c|--cores) grep -c ^'model name' /proc/cpuinfo ;; 23 | *) grep ^'model name' /proc/cpuinfo | head -1 | sed 's,model.*:\ ,,' ;; 24 | esac 25 | 26 | exit $? 27 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_initcache_format: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_initcache_format 4 | # thomas@linuxmuster.net 5 | # 20250423 6 | # 7 | 8 | usage(){ 9 | echo 10 | echo "Formats the cache partition and installs all necessary files into it." 11 | echo 12 | echo "Usage: linbo_initcache_format [help]" 13 | echo 14 | exit 0 15 | } 16 | 17 | # print help 18 | [ "$1" = "help" ] && usage 19 | 20 | # get environment 21 | source /usr/share/linbo/shell_functions 22 | echo "### $timestamp $(basename "$0") ###" 23 | 24 | export FORMAT="yes" 25 | linbo_initcache 26 | 27 | exit $? 28 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_partition_format: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_partition_format 4 | # thomas@linuxmuster.net 5 | # 20250423 6 | # 7 | 8 | usage(){ 9 | echo 10 | echo "Partitions the hard drive and formats the partitions according to start.conf." 11 | echo 12 | echo "Usage: linbo_partition_format [help]" 13 | echo 14 | exit 0 15 | } 16 | 17 | # print help 18 | [ "$1" = "help" ] && usage 19 | 20 | # get environment 21 | source /usr/share/linbo/shell_functions 22 | echo "### $timestamp $(basename "$0") ###" 23 | 24 | export FORMAT="yes" 25 | linbo_partition $@ 26 | 27 | exit $? 28 | -------------------------------------------------------------------------------- /linbofs/usr/share/udhcpc/default.script: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Setup network interface as soon as it is bound. 4 | 5 | date >>/tmp/dhcp.log 6 | set >>/tmp/dhcp.log 7 | 8 | [ -n "$subnet" ] && NETMASK="netmask $subnet" || NETMASK="" 9 | 10 | case "$1" in bound) 11 | 12 | if [ -n "$interface" -a -n "$ip" ]; then 13 | ifconfig $interface $ip $NETMASK 14 | if [ -n "$router" ]; then 15 | route add default gw $router 16 | fi 17 | fi 18 | 19 | if [ -n "$dns" ]; then 20 | for i in $dns; do 21 | echo "nameserver $i" 22 | done > /etc/resolv.conf 23 | fi 24 | 25 | ;; 26 | esac 27 | 28 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_autostart: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_autostart 4 | # thomas@linuxmuster.net 5 | # 20250916 6 | # 7 | 8 | # invoke defaultaction if autostart is requested in start.conf 9 | for item in /conf/os.1; do 10 | osnr="${item#*.}" 11 | autostart="" 12 | defaultaction="" 13 | source "$item" 14 | if [ "$autostart" = "yes" ]; then 15 | case "$defaultaction" in 16 | start) linbo_start "$osnr" ;; 17 | sync) linbo_syncstart "$osnr" ;; 18 | new) linbo_forcesyncstart "$osnr" ;; 19 | *) ;; 20 | esac 21 | fi 22 | done -------------------------------------------------------------------------------- /serverfs/srv/linbo/linuxmuster-win/start-tasks.cmd: -------------------------------------------------------------------------------- 1 | REM Tasks, die beim Start ausgefuehrt werden 2 | REM thomas@linuxmuster.net 3 | REM 18.11.2015 4 | 5 | REM Reaktivierung starten, falls Linbo die cmd-Datei angelegt hat 6 | if exist %SystemDrive%\linuxmuster-win\winact.cmd goto winact 7 | goto winact_end 8 | 9 | :winact 10 | call %SystemDrive%\linuxmuster-win\winact.cmd 11 | del %SystemDrive%\linuxmuster-win\winact.cmd 12 | :winact_end 13 | 14 | REM Eigenes Skript aufrufen, falls vorhanden 15 | if exist %SystemDrive%\linuxmuster-win\custom.cmd call %SystemDrive%\linuxmuster-win\custom.cmd 16 | -------------------------------------------------------------------------------- /get-pkg.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # get deb from martini.schmitt.red, needs ubuntu 22.04 4 | # thomas@linuxmuster.net 5 | # 20250426 6 | # 7 | 8 | # get dependencies 9 | sudo apt-get update 10 | sudo apt-get -y install debdelta gpg rsync || exit 1 11 | 12 | version="$(head -1 debian/changelog | awk -F\( '{print $2}' | awk -F\) '{print $1}')" 13 | lname="linuxmuster-linbo7" 14 | lpkg="${lname}_${version}_all.deb" 15 | fporig="CCA1DC5BE0F38B0FFCE5FCC68D158AA6CF53F928" 16 | 17 | # download debian package files 18 | mkdir package 19 | rsync -L repo.schmitt.red::repo/73/linuxmuster-linbo7_${version}\* package/ 20 | [ -s "package/$lpkg" ] || exit 1 21 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_fakestart: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_fakestart 4 | # thomas@linuxmuster.net 5 | # 20250423 6 | # 7 | 8 | usage(){ 9 | echo 10 | echo "Starts os defined by start.conf position number or root partition." 11 | echo "Initiates a \"dry run\" for debugging purposes." 12 | echo 13 | echo "Usage: linbo_fakestart <#> | | [help]" 14 | echo 15 | exit 0 16 | } 17 | 18 | # print help 19 | [ -z "$1" -o "$1" = "help" ] && usage 20 | 21 | # get environment 22 | source /usr/share/linbo/shell_functions 23 | echo "### $timestamp $(basename "$0") $@ ###" 24 | 25 | export FAKESTART="yes" 26 | linbo_start "$@" 27 | 28 | exit $? 29 | -------------------------------------------------------------------------------- /linbofs/.profile: -------------------------------------------------------------------------------- 1 | # busybox ash profile 2 | # 3 | # thomas@schmitt.tk 4 | # 20250915 5 | 6 | # environment 7 | source /.env 8 | 9 | [ -n "$IP" ] && myip="| IP: $IP" 10 | [ -n "$MACADDR" ] && mymac="| MAC: $MACADDR" 11 | 12 | # logo 13 | echo 14 | echo ' Welcome to' 15 | echo ' _ _____ _ _ ____ ____' 16 | echo ' | | |_ _| \ | | _ \ / __ \' 17 | echo ' | | | | | \| | |_) | | | |' 18 | echo ' | | | | | . ` | _ <| | | |' 19 | echo ' | |____ _| |_| |\ | |_) | |__| |' 20 | echo ' |______|_____|_| \_|____/ \____/' 21 | echo 22 | echo " $LINBOFULLVER $myip $mymac $myname" 23 | echo 24 | echo -n " " ; uname -a | sed -e "s| $HOSTNAME||" 25 | echo 26 | -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/templates/isolinux/sys64.cfg: -------------------------------------------------------------------------------- 1 | include menu.cfg 2 | 3 | default linbo 4 | 5 | menu separator 6 | 7 | label linbo 8 | menu label LINBO (64bit) Standardboot 9 | kernel /linbo64 10 | append initrd=/linbofs64 quiet splash vga=0x314 isoboot 11 | 12 | menu separator 13 | 14 | label install 15 | menu label LINBO (64bit) Ersteinrichtung + Neustart 16 | kernel /linbo64 17 | append initrd=/linbofs64 quiet splash linbocmd=format,reboot vga=0x314 isoboot 18 | 19 | menu separator 20 | 21 | label debug 22 | menu label LINBO (64bit) Debugmodus 23 | kernel /linbo64 24 | append initrd=/linbofs64 quiet debug vga=0x314 isoboot 25 | 26 | include pxe.cfg 27 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_forcesync: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_forcesync 4 | # thomas@linuxmuster.net 5 | # 20250423 6 | # 7 | 8 | # usage info 9 | usage(){ 10 | echo 11 | echo "Forces a full synchronisation of an operating system." 12 | echo 13 | echo "Usage: linbo_forcesync <#> | | [help]" 14 | echo 15 | echo "The operating system is either defined by start.conf position number or" 16 | echo "by root partition devicename." 17 | echo 18 | exit 0 19 | } 20 | 21 | # print help 22 | [ -z "$1" -o "$1" = "help" ] && usage 23 | 24 | # get environment 25 | source /usr/share/linbo/shell_functions 26 | echo "### $timestamp $(basename "$0") $@ ###" 27 | 28 | linbo_sync "$1" "force" 29 | 30 | exit $? 31 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_seed: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_seed 4 | # thomas@linuxmuster.net 5 | # 20250425 6 | # 7 | 8 | # no cache, do nothing 9 | [ -e /tmp/linbo-cache.done ] || exit 0 10 | 11 | # get environment 12 | source /usr/share/linbo/shell_functions 13 | echo "### $timestamp $(basename "$0") ###" 14 | 15 | linbo_mountcache &> /dev/null || exit 1 16 | 17 | source /torrent-client.conf || exit 1 18 | 19 | cd /cache 20 | 21 | RC=0 22 | for torrent in *.torrent; do 23 | ps w | grep -v grep | grep -q "$torrent" && continue 24 | ctorrent -e $SEEDHOURS $CTOPTS -f -d "$torrent" || RC=1 25 | ps w | grep -v grep | grep -q "$torrent" && echo "Started linbo seeder for $torrent." 26 | done 27 | 28 | cd 29 | 30 | exit $RC 31 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_hostname: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_hostname [-f|--full] | [-h|help|--help] 4 | # prints hostname 5 | # thomas@linuxmuster.net 6 | # 20250421 7 | # 8 | 9 | usage(){ 10 | echo 11 | echo "Prints hostname." 12 | echo 13 | echo "Usage: linbo_hostname [-f|--full] | [-h|help|--help]" 14 | echo 15 | exit 0 16 | } 17 | 18 | # print help 19 | [ "$1" = "help" ] && usage 20 | 21 | # get environment 22 | source /usr/share/linbo/shell_functions 23 | 24 | if localmode; then 25 | linbo_mountcache &> /dev/null 26 | [ -s /cache/hostname ] || exit 1 27 | FQDN="$(cat /cache/hostname)" 28 | HOSTNAME="${FQDN%%.*}" 29 | fi 30 | 31 | case "$1" in 32 | -f|--full) echo "$FQDN" ;; 33 | *) echo "$HOSTNAME" ;; 34 | esac 35 | 36 | exit 0 37 | -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/linbo-mcasthelper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # thomas@linuxmuster.net 4 | # GPL v3 5 | # 20160916 6 | # 7 | # linbo multicast helper script, started in a screen session by init script 8 | # 9 | 10 | INTERFACE="$1" 11 | PORT="$2" 12 | MINCLIENTS="$3" 13 | MINSECONDS="$4" 14 | MAXSECONDS="$5" 15 | FILE="$6" 16 | LOGFILE="$7" 17 | 18 | while true; do 19 | echo >> "$LOGFILE" 20 | echo "### Starting new session: `date`" | tee -a "$LOGFILE" 21 | echo "Watch output in $LOGFILE." 22 | udp-sender --full-duplex --interface "$INTERFACE" --portbase $PORT --min-clients $MINCLIENTS --min-wait $MINSECONDS --max-wait $MAXSECONDS --file "$FILE" --nokbd 2>> "$LOGFILE" 1>> "$LOGFILE" ; RC="$?" 23 | [ "$RC" = "0" ] || exit "$RC" 24 | done 25 | 26 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_forcesyncstart: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_forcesyncstart 4 | # thomas@linuxmuster.net 5 | # 20250423 6 | # 7 | 8 | # usage info 9 | usage(){ 10 | echo 11 | echo "Forces a full synchronisation of an operating system and starts it." 12 | echo 13 | echo "Usage: linbo_forcesyncstart <#> | | [help]" 14 | echo 15 | echo "The operating system is either defined by start.conf position number or" 16 | echo "by root partition devicename." 17 | echo 18 | exit 0 19 | } 20 | 21 | # print help 22 | [ -z "$1" -o "$1" = "help" ] && usage 23 | 24 | # get environment 25 | source /usr/share/linbo/shell_functions 26 | echo "### $timestamp $(basename "$0") $@ ###" 27 | 28 | export SYNCSTART="yes" 29 | linbo_forcesync "$1" "force" 30 | 31 | exit $? 32 | -------------------------------------------------------------------------------- /linbofs/etc/group: -------------------------------------------------------------------------------- 1 | root:x:0: 2 | fuse:x:0:root 3 | daemon:x:1: 4 | bin:x:2: 5 | sys:x:3: 6 | adm:x:4: 7 | tty:x:5: 8 | disk:x:6: 9 | lp:x:7: 10 | mail:x:8: 11 | news:x:9: 12 | uucp:x:10: 13 | man:x:12: 14 | proxy:x:13: 15 | kmem:x:15: 16 | dialout:x:20: 17 | fax:x:21: 18 | voice:x:22: 19 | cdrom:x:24: 20 | floppy:x:25: 21 | tape:x:26: 22 | sudo:x:27: 23 | audio:x:29: 24 | dip:x:30: 25 | www-data:x:33: 26 | backup:x:34: 27 | operator:x:37: 28 | list:x:38: 29 | irc:x:39: 30 | src:x:40: 31 | gnats:x:41: 32 | shadow:x:42: 33 | utmp:x:43: 34 | video:x:44: 35 | sasl:x:45: 36 | plugdev:x:46: 37 | staff:x:50: 38 | games:x:60: 39 | users:x:100: 40 | nogroup:x:65534: 41 | libuuid:x:101: 42 | crontab:x:102: 43 | Debian-exim:x:103: 44 | mlocate:x:104: 45 | ssh:x:105: 46 | kvm:x:106: 47 | colord:x:107: 48 | -------------------------------------------------------------------------------- /serverfs/etc/linuxmuster/linbo/custom_kernel.ex: -------------------------------------------------------------------------------- 1 | # example file for custom linbo kernel, used by update-linbofs 2 | # to be placed under /etc/linuxmuster/linbo/custom_kernel 3 | # 4 | # thomas@linuxmuster.net 5 | # 20231116 6 | # 7 | 8 | # use Linbo's alternative legacy kernel 9 | KERNELPATH="legacy" 10 | 11 | # use Linbo's alternative longterm kernel 12 | KERNELPATH="longterm" 13 | 14 | # currently active kernel image and modules used by the server 15 | # path to kernel image 16 | KERNELPATH="/boot/vmlinuz-$(uname -r)" 17 | # path to the corresponding modules directory 18 | MODULESPATH="/lib/modules/$(uname -r)" 19 | 20 | # custom kernel image and modules 21 | KERNELPATH="/path/to/my/kernelimage" 22 | # path to the corresponding modules directory 23 | MODULESPATH="/path/to/my/lib/modules/n.n.n" -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/templates/isolinux/menu.cfg: -------------------------------------------------------------------------------- 1 | ui vesamenu.c32 2 | timeout 100 3 | #font /boot/grub/themes/linbo/unifont-regular-16.pf2 4 | 5 | menu resolution 800 600 6 | menu background /boot/grub/linbo_wallpaper.png 7 | menu title LINBO Start-Menue (BIOS-Modus) 8 | menu color title * #fefe54 * 9 | menu color border * #00000000 #00000000 none 10 | menu color sel * #ffffffff #76a1d0ff * 11 | menu color hotsel 1;7;37;40 #ffffffff #76a1d0ff * 12 | menu color tabmsg * #ffffffff #00000000 * 13 | menu color help 37;40 #ffdddd00 #00000000 none 14 | menu vshift 3 15 | menu rows 10 16 | menu helpmsgrow 15 17 | # The command line must be at least one line from the bottom. 18 | menu cmdlinerow 16 19 | menu timeoutrow 16 20 | menu tabmsgrow 18 21 | menu tabmsg ENTER to boot or TAB to edit a menu entry 22 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_readfile: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # display file content from cache, used by linbo_gui to get the image description 4 | # thomas@linuxmuster.net 5 | # 20251110 6 | # 7 | 8 | # test options 9 | [ -z "$1" ] && exit 1 10 | 11 | # shift obsolete cache device name option given by linbo_gui 12 | if [ -b "$1" -o "$1" = "/cache" ]; then 13 | shift 14 | GUI="yes" 15 | fi 16 | 17 | # test remaining option 18 | [ -z "$1" ] && exit 1 19 | 20 | descfile="/cache/$1" 21 | if [ -f "$descfile" ]; then 22 | 23 | # display file content 24 | cat "$descfile" || exit 1 25 | 26 | elif [ -n "$GUI" -a ! -e "$descfile" ]; then 27 | 28 | # display date in case of gui invokation and file does not exist 29 | echo "$(date): " 30 | 31 | else 32 | 33 | # file does not exist or is no file 34 | exit 1 35 | 36 | fi 37 | -------------------------------------------------------------------------------- /serverfs/etc/linuxmuster/linbo/firmware.ex: -------------------------------------------------------------------------------- 1 | # Example file for firmware to be integrated in linbofs. 2 | # One entry per line, path has to be relative to /lib/firmware. 3 | # Must be provided under /etc/linuxmuster/linbo/firmware. 4 | # Be sure to invoke update-linbofs after you have made changes. 5 | # 6 | # thomas@linuxmuster.net 7 | # 20240920 8 | # 9 | 10 | # all firmware files for Realtek ethernet adaptors (content of whole directory will be packed) 11 | rtl_nic 12 | 13 | # all firmware files for Realtek wifi adaptors (content of whole directory will be packed) 14 | rtlwifi 15 | 16 | # Realtek RTL8821AE wifi firmware (single file only) 17 | rtlwifi/rtl8821aefw.bin 18 | 19 | # Intel Wi-Fi 6 AX200 firmware (single file only) 20 | iwlwifi-cc-a0-77.ucode 21 | 22 | # use custom firmware (requires absolute path) 23 | /root/linux-firmware/rtw88/rtw88/rtw8822c_fw.bin 24 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_syncstart: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_syncstart 4 | # thomas@linuxmuster.net 5 | # 20250423 6 | # 7 | 8 | # usage info 9 | usage(){ 10 | echo 11 | echo "Synchronizes and starts an operating system either defined by start.conf" 12 | echo "position number or by root partition devicename." 13 | echo 14 | echo "Usage: linbo_syncstart <#> [force] | [force] | [help]" 15 | echo 16 | echo "The operating system is either defined by start.conf position number or by" 17 | echo "root partition devicename. \"force\" forces a full partition sync (optional)." 18 | echo 19 | exit 0 20 | } 21 | 22 | # print help 23 | [ -z "$1" -o "$1" = "help" ] && usage 24 | 25 | # get environment 26 | source /usr/share/linbo/shell_functions 27 | echo "### $timestamp $(basename "$0") $@ ###" 28 | 29 | export SYNCSTART="yes" 30 | linbo_sync $@ 31 | 32 | exit $? 33 | -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/templates/grub.cfg.iso: -------------------------------------------------------------------------------- 1 | # 2 | # iso boot grub.cfg 3 | # thomas@linuxmuster.net 4 | # 20160804 5 | # 6 | 7 | set timeout=0 8 | 9 | set gfxmode=auto 10 | set gfxpayload=keep 11 | 12 | insmod all_video 13 | insmod png 14 | insmod gfxterm 15 | insmod gfxmenu 16 | insmod minicmd 17 | insmod progress 18 | 19 | #set font=/boot/grub/fonts/unicode.pf2 20 | #if [ -s "$font" ]; then 21 | # loadfont "$font" 22 | #fi 23 | 24 | terminal_output gfxterm 25 | 26 | set color_normal=white/black 27 | set color_highlight=yellow/black 28 | set menu_color_normal=white/black 29 | set menu_color_highlight=yellow/black 30 | set prefix=/boot/grub 31 | 32 | # load background image locally if present 33 | if [ -e "$prefix/linbo_wallpaper.png" ]; then 34 | set bg_image="$prefix/linbo_wallpaper.png" 35 | background_image $bg_image 36 | fi 37 | 38 | configfile $prefix/linbo.cfg 39 | -------------------------------------------------------------------------------- /linbofs/etc/rsync.exclude: -------------------------------------------------------------------------------- 1 | # File patterns for exclusion when creating/restoring rsync-archives 2 | # These patterns should match through the entire filesystem tree. 3 | # When cleaning up before compression, however, they will be prefixed 4 | # by "/", in order to get applied only for the root file system. 5 | # 6 | # Should match common Windows/Linux garbage 7 | [Pp][Aa][Gg][Ee][Ff][Ii][Ll][Ee]* 8 | [Ss][Ww][Aa][Pp][Ff][Ii][Ll][Ee]* 9 | [Hh][Ii][Bb][Ee][Rr][Ff][Ii][Ll]* 10 | [Hh][Ii][Bb][Ee][Rr][Nn][Aa][Tt][Ee]* 11 | [Ww][Ii][Nn]386.[Ss][Ww][Pp] 12 | ProgramData/Microsoft/Windows\ Defender/Scans/History/* 13 | Papierkorb/* 14 | [Rr][Ee][Cc][Yy][Cc][Ll][Ee][DdRr]/* 15 | \$[Rr][Ee][Cc][Yy][Cc][Ll][Ee].[Bb][Ii][Nn]/* 16 | [Ll][Ii][Nn][Bb][Oo].[Ll][Ss][Tt] 17 | swap.img 18 | tmp/* 19 | var/log/ConsoleKit/history 20 | var/log/lastlog 21 | var/log/*.1 22 | var/log/*.gz 23 | var/log/*/*.1 24 | var/log/*/*.gz 25 | var/tmp/* 26 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_mktorrent: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_mktorrent 4 | # thomas@linuxmuster.net 5 | # 20250423 6 | # 7 | 8 | usage(){ 9 | RC="$1" 10 | echo 11 | echo "Creates torrent file for image." 12 | echo 13 | echo "Usage: linbo_mktorrent | [help]" 14 | echo 15 | exit "$RC" 16 | } 17 | 18 | # print help 19 | [ -z "$1" -o "$1" = "help" ] && usage 0 20 | 21 | # get environment 22 | source /usr/share/linbo/shell_functions 23 | echo "### $timestamp $(basename "$0") $@ ###" 24 | 25 | isinteger "$PIECELEN" && plopt="-l $PIECELEN" 26 | 27 | echo "### linbo_mktorrent $1" 28 | 29 | linbo_mountcache &> /dev/null || exit 1 30 | 31 | curdir="$(pwd)" 32 | cd /cache 33 | 34 | [ -s "$1" ] || usage 1 35 | 36 | RC="0" 37 | echo "Creating $1.torrent ..." 38 | rm -f "$1".torrent 39 | ctorrent -t -u http://"$LINBOSERVER":6969/announce $plopt -s "$1".torrent "$1" || RC="1" 40 | 41 | cd "$curdir" 42 | 43 | exit "$RC" 44 | -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/templates/rsyncd.conf: -------------------------------------------------------------------------------- 1 | # /etc/rsyncd.conf 2 | # 3 | # thomas@linuxmuster.net 4 | # 20220311 5 | # 6 | 7 | [linbo] 8 | comment = LINBO Image directory (read-only) 9 | path = @@linbodir@@ 10 | use chroot = no 11 | lock file = /var/lock/rsyncd 12 | read only = yes 13 | list = yes 14 | uid = nobody 15 | gid = nogroup 16 | dont compress = *.qcow2 *.cloop *.rsync *.gz *.lz 17 | pre-xfer exec = /usr/share/linuxmuster/linbo/rsync-pre-download.sh 18 | post-xfer exec = /usr/share/linuxmuster/linbo/rsync-post-download.sh 19 | 20 | [linbo-upload] 21 | comment = LINBO Upload directory 22 | path = @@linbodir@@ 23 | use chroot = no 24 | lock file = /var/lock/rsyncd 25 | read only = no 26 | list = yes 27 | uid = root 28 | gid = root 29 | dont compress = *.qcow2 *.cloop *.rsync *.gz *.lz 30 | auth users = linbo 31 | secrets file = /etc/rsyncd.secrets 32 | pre-xfer exec = /usr/share/linuxmuster/linbo/rsync-pre-upload.sh 33 | post-xfer exec = /usr/share/linuxmuster/linbo/rsync-post-upload.sh 34 | -------------------------------------------------------------------------------- /serverfs/etc/default/linbo-torrent: -------------------------------------------------------------------------------- 1 | # default values for linbo-torrenthelper service provided by ctorrent 2 | # thomas@linuxmuster.net 3 | # 20230918 4 | # 5 | # note: you have to invoke 'linbo-torrent restart' after you have changed any values 6 | # 7 | 8 | # Exit while seed hours later (default 72 hours) 9 | SEEDHOURS="100000" 10 | 11 | # Max peers count (default 100) 12 | MAXPEERS="100" 13 | 14 | # Min peers count (default 1) 15 | MINPEERS="1" 16 | 17 | # Download slice/block size, unit KB (default 16, max 128) 18 | SLICESIZE="128" 19 | 20 | # Max bandwidth down (unit KB/s, default unlimited) 21 | MAXDOWN="" 22 | 23 | # Max bandwidth up (unit KB/s, default unlimited) 24 | MAXUP="" 25 | 26 | # Supplemental ctorrent options, separated by space (-v: Verbose output for debugging) 27 | #OPTIONS="-v" 28 | 29 | # Timeout in seconds until rsync fallback (client only) 30 | TIMEOUT="300" 31 | 32 | # user to run ctorrent (server only) 33 | CTUSER="nobody" 34 | 35 | # Piece length (torrent file option) 36 | PIECELEN="524288" -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/linbo-torrenthelper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # thomas@linuxmuster.net 4 | # GPL v3 5 | # 20220317 6 | # 7 | # linbo ctorrent helper script, started in a screen session by init script 8 | # 9 | 10 | torrent="$1" 11 | [ -s "$torrent" ] || exit 1 12 | 13 | # get ctorrent options from file 14 | [ -e /etc/default/linbo-torrent ] && source /etc/default/linbo-torrent 15 | 16 | [ -n "$SEEDHOURS" ] && OPTIONS="$OPTIONS -e $SEEDHOURS" 17 | [ -n "$MAXPEERS" ] && OPTIONS="$OPTIONS -M $MAXPEERS" 18 | [ -n "$MINPEERS" ] && OPTIONS="$OPTIONS -m $MINPEERS" 19 | [ -n "$SLICESIZE" ] && OPTIONS="$OPTIONS -z $SLICESIZE" 20 | [ -n "$MAXDOWN" ] && OPTIONS="$OPTIONS -D $MAXDOWN" 21 | [ -n "$MAXUP" ] && OPTIONS="$OPTIONS -U $MAXUP" 22 | OPTIONS="$OPTIONS $torrent" 23 | 24 | [ -n "$CTUSER" ] && SUDO="/usr/bin/sudo -u $CTUSER" 25 | 26 | while true; do 27 | $SUDO /usr/bin/ctorrent $OPTIONS || exit 1 28 | # hash check only on initial start, add -f parameter 29 | echo "$OPTIONS" | grep -q ^"-f " || OPTIONS="-f $OPTIONS" 30 | done 31 | -------------------------------------------------------------------------------- /get-depends.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # thomas@linuxmuster.net 4 | # 20220624 5 | # 6 | 7 | set -e 8 | 9 | SUDO="$(which sudo)" 10 | if [ -z "$SUDO" ]; then 11 | echo "Please install sudo!" 12 | exit 1 13 | fi 14 | 15 | PKGNAME="linuxmuster-linbo7" 16 | 17 | echo "###############################################" 18 | echo "# Installing $PKGNAME build depends #" 19 | echo "###############################################" 20 | echo 21 | 22 | if [ ! -e debian/control ]; then 23 | echo "debian/control not found!" 24 | exit 25 | fi 26 | 27 | if ! grep -q "Source: $PKGNAME" debian/control; then 28 | echo "This is no $PKGNAME source tree!" 29 | exit 30 | fi 31 | 32 | # install prerequisites 33 | $SUDO apt-get update && $SUDO apt-get -y dist-upgrade 34 | $SUDO apt-get -y install bash bash-completion ccache curl dpkg-dev || exit 1 35 | 36 | # install build depends 37 | BUILDDEPENDS="$(sed -n '/Build-Depends:/,/Package:/p' debian/control | grep -v ^Package | sed -e 's|^Build-Depends: ||' | sed -e 's|,||g')" 38 | $SUDO apt-get -y install $BUILDDEPENDS || exit 1 39 | -------------------------------------------------------------------------------- /serverfs/srv/linbo/examples/win10.image.reg: -------------------------------------------------------------------------------- 1 | Windows Registry Editor Version 5.00 2 | 3 | ; linuxmuster.net 7 4 | ; thomas@linuxmuster.net 5 | ; 20230510 6 | 7 | ; patches hostname, to be applied after every image sync 8 | 9 | [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ComputerName\ActiveComputerName\] 10 | "ComputerName"="{$HostName$}" 11 | 12 | [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName\] 13 | "ComputerName"="{$HostName$}" 14 | 15 | [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ComputerName\ComputerName\] 16 | "ComputerName"="{$HostName$}" 17 | 18 | [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName\] 19 | "ComputerName"="{$HostName$}" 20 | 21 | [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters\] 22 | "Hostname"="{$HostName$}" 23 | "NV Hostname"="{$HostName$}" 24 | 25 | [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\] 26 | "Hostname"="{$HostName$}" 27 | "NV Hostname"="{$HostName$}" 28 | 29 | ; add your custom registry patches below 30 | -------------------------------------------------------------------------------- /serverfs/srv/linbo/examples/image.prestart: -------------------------------------------------------------------------------- 1 | # prestart script example, sourced by linbo_start on the client before the os is started 2 | # to be placed in LINBODIR/images/ 3 | # if the image is named ubuntu.qcow2, the corresponding prestart script name is ubuntu.prestart 4 | # 5 | # thomas@linuxmuster.net 6 | # 20250514 7 | # 8 | 9 | # read global linbo config 10 | . /conf/linbo 11 | 12 | # read config of first operating system 13 | . /conf/os.1 14 | 15 | echo "# prestart script example" 16 | echo "os name : $name" 17 | echo "os description: $description" 18 | echo "os partition : $root" 19 | echo "cache device : $cache" 20 | echo "baseimage : $baseimage" 21 | echo "kernel : $kernel" 22 | echo "initrd : $initrd" 23 | echo "append : $append" 24 | echo "hostgroup : $HOSTGROUP" 25 | echo "hostname : $HOSTNAME" 26 | echo "domain : $DOMAIN" 27 | echo "ip : $IP" 28 | echo "netmask : $SUBNET" 29 | echo "bitmask : $MASK" 30 | echo "linboserver : $LINBOSERVER" 31 | echo "servername : $SNAME" 32 | -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/templates/grubenv.reboot: -------------------------------------------------------------------------------- 1 | # GRUB Environment Block 2 | reboot_grub=@@bootpart@@ 3 | reboot_kernel=@@kernel@@ 4 | reboot_initrd=@@initrd@@ 5 | reboot_append=@@append@@ 6 | ################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################### -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_warmstart: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_warmstart 4 | # thomas@linuxmuster.net 5 | # 20250419 6 | # 7 | 8 | # get environment 9 | source /usr/share/linbo/shell_functions 10 | echo "### $timestamp $(basename "$0") ###" 11 | source /conf/linbo || exit 1 12 | 13 | KEXEC="/sbin/kexec" 14 | KERNEL="/cache/linbo64" 15 | INITRD="/cache/linbofs64" 16 | TYPE="bzImage64" 17 | 18 | linbo_mountcache &> /dev/null || exit 1 19 | 20 | if [ ! -s "$KERNEL" -o ! -s "$INITRD" ]; then 21 | echo "Linbokernel not found in cache!" 22 | exit 1 23 | fi 24 | 25 | echo "Initiating linbo warmstart ..." 26 | 27 | if warmstart; then 28 | 29 | # load linbo kernel 30 | $KEXEC --type="$TYPE" --append="$kerneloptions" --initrd="$INITRD" --load "$KERNEL" ; RC="$?" 31 | [ "$RC" = "0" ] || exit 1 32 | # execute linbo kernel 33 | $KEXEC -e ; RC="$?" 34 | [ "$RC" = "0" ] || exit 1 35 | 36 | else 37 | 38 | # initiate reboot bypassing an existing grub menu 39 | FORCEGRUB="yes" 40 | mk_boot "$cache" "$(basename $KERNEL)" "$(basename $INITRD)" "$kerneloptions" ; RC="$?" 41 | [ "$RC" = "0" ] || exit 1 42 | /sbin/reboot -f 43 | 44 | fi 45 | 46 | sendlog -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/templates/grub.cfg.forced_netboot: -------------------------------------------------------------------------------- 1 | # 2 | # grub.cfg for forced netboot 3 | # thomas@linuxmuster.net 4 | # 20231122 5 | # 6 | 7 | # if you don't want this file being overwritten by import_workstations remove the following line: 8 | # ### managed by linuxmuster.net ### 9 | 10 | # edit to your needs 11 | set default=0 12 | set timeout=0 13 | #set fallback=1 14 | 15 | set gfxpayload=800x600x16 16 | 17 | set linbo_kernel=/linbo64 18 | set linbo_initrd=/linbofs64 19 | 20 | # theme settings (modify for custom theme) 21 | set theme=/boot/grub/themes/linbo/theme.txt 22 | #set font=/boot/grub/themes/linbo/unifont-regular-16.pf2 23 | 24 | # load theme 25 | #if [ -e "$theme" -a -e "$font" ]; then 26 | # loadfont "$font" 27 | export theme 28 | #fi 29 | 30 | clear 31 | 32 | # linbo netboot 33 | menuentry 'LINBO' --class linbo { 34 | 35 | echo LINBO netboot 36 | echo 37 | 38 | set root="(tftp)" 39 | # perhaps faster 40 | #set root="(http)" 41 | 42 | echo -n "Loading $linbo_kernel ..." 43 | linux $linbo_kernel quiet splash netboot nomodeset 44 | echo 45 | echo -n "Loading $linbo_initrd ..." 46 | initrd $linbo_initrd 47 | boot 48 | 49 | } 50 | -------------------------------------------------------------------------------- /serverfs/srv/linbo/examples/README.txt: -------------------------------------------------------------------------------- 1 | Examples for LINBO 2 | --------------------------------------- 3 | 4 | Note: The Windows 10 examples should also be usable for Windows 11. 5 | 6 | * For every Windows image there has to be a registry patch file in 7 | /srv/linbo/images/ according to this naming scheme: 8 | .reg, e.g. win10.reg for image win10.qcow2. 9 | 10 | * Inside the registry patch file the samba domainname has to be modified. 11 | 12 | * The patch files may contain custom registry entries. 13 | 14 | There are 3 templates: 15 | * win10.image.reg: Registry patch for hostname and custom entries, 16 | which accompanies the image file. 17 | * win10.global.reg: Necessary and optional registry entries (see 18 | comments in the file), which must be imported once before joining the domain 19 | and creating the image. 20 | Note: SAMBADOMAIN has to be replaced with the name of your sambadomain! 21 | * win11bypass.reg: Bypasses the hardware checks during the Windows 11 setup (see 22 | https://www.deskmodder.de/wiki/index.php?title=Windows_11_auch_ohne_TPM_und_Secure_Boot_installieren). 23 | 24 | --- 25 | thomas@linuxmuster.net 26 | 08.05.2023 27 | -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/linbo-mkinfo.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo-mkinfo 4 | # thomas@linuxmuster.net 5 | # 20250510 6 | # 7 | 8 | usage(){ 9 | RC="$1" 10 | echo 11 | echo "Creates a simple image info file." 12 | echo 13 | echo "Usage: linbo-mkinfo.sh | [help]" 14 | echo 15 | exit "$RC" 16 | } 17 | 18 | # print help 19 | [ -z "$1" -o "$1" = "help" ] && usage 0 20 | 21 | # check options 22 | [ -s "$1" ] || usage 1 23 | 24 | imagefile="$1" 25 | imageinfo="${imagefile}.info" 26 | imagebase="$(basename "$imagefile")" 27 | 28 | # get isofile size 29 | imagesize_new="$(ls -l "$imagefile" 2>/dev/null | awk '{print $5}' 2>/dev/null)" 30 | 31 | # check if existent infofile is up to date 32 | if [ -s "$imageinfo" ]; then 33 | eval "$(grep ^imagesize "$imageinfo")" 34 | if [ "$imagesize" = "$imagesize_new" ]; then 35 | echo "$imagebase has not changed, infofile will not be updated." 36 | exit 0 37 | fi 38 | fi 39 | 40 | timestamp="$(date +%Y%m%d%H%M)" 41 | 42 | # write infofile 43 | cat < "$imageinfo" 44 | [$imagebase Info File] 45 | timestamp="$timestamp" 46 | image="$imagebase" 47 | imagesize="$imagesize_new" 48 | EOF 49 | -------------------------------------------------------------------------------- /debian/postinst: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # postinst script for linuxmuster-linbo7 4 | # thomas@linuxmuster.net 5 | # 20210514 6 | # 7 | 8 | set -e 9 | 10 | # summary of how this script can be called: 11 | # * `configure' 12 | # * `abort-upgrade' 13 | # * `abort-remove' `in-favour' 14 | # 15 | # * `abort-deconfigure' `in-favour' 16 | # `removing' 17 | # 18 | # for details, see http://www.debian.org/doc/debian-policy/ or 19 | # the debian-policy package 20 | # 21 | 22 | # Source debconf library. 23 | #. /usr/share/debconf/confmodule 24 | 25 | #db_version 2.0 26 | 27 | case "$1" in 28 | 29 | configure) 30 | 31 | /usr/share/linuxmuster/linbo/linbo-configure.sh 32 | 33 | ;; 34 | 35 | abort-upgrade|abort-remove|abort-deconfigure) 36 | 37 | ;; 38 | 39 | *) 40 | echo "postinst called with unknown argument \`$1'" >&2 41 | exit 1 42 | ;; 43 | 44 | esac 45 | 46 | # dh_installdeb will replace this with shell code automatically 47 | # generated by other debhelper scripts. 48 | 49 | #DEBHELPER# 50 | 51 | #db_stop 52 | 53 | exit 0 54 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_link_blkdev: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_link_blkdev: creates symlinks to blockdevices 4 | # thomas@linuxmuster.net 5 | # 20250423 6 | # 7 | 8 | # get environment 9 | source /usr/share/linbo/shell_functions || exit 1 10 | echo "### $timestamp $(basename "$0") ###" 11 | 12 | # create missing links only 13 | [ "$1" = "-m" -o "$1" = "--missing" ] && MISSING="yes" 14 | 15 | # delete existing /dev/disk* blockdevice links 16 | [ -z "$MISSING" ] && find /dev/ -name disk\* -maxdepth 1 -type l -delete 17 | 18 | parts="$(get_parts)" 19 | 20 | # link disks 21 | disk_nr=0 22 | for disk in $(get_disks); do 23 | disk_link="/dev/disk$disk_nr" 24 | if [ ! -e "$disk_link" ]; then 25 | echo "$disk -> $disk_link" 26 | ln -sf "$disk" "$disk_link" 27 | fi 28 | disk_nr=$(( $disk_nr + 1 )) 29 | # link partitions 30 | if stringinstring "$disk" "$parts"; then 31 | part_nr=1 32 | for part in $parts; do 33 | stringinstring "$disk" "$part" || continue 34 | part_link="${disk_link}p${part_nr}" 35 | if [ ! -e "$part_link" ]; then 36 | echo "$part -> $part_link" 37 | ln -sf "$part" "$part_link" 38 | fi 39 | part_nr=$(( $part_nr + 1 )) 40 | done 41 | fi 42 | done 43 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_auth: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_auth 4 | # thomas@linuxmuster.net 5 | # 20250916 6 | # 7 | 8 | # get environment 9 | source /usr/share/linbo/shell_functions 10 | echo "### $timestamp $(basename "$0") ###" 11 | 12 | usage(){ 13 | echo 14 | echo "Authenticates linbo user." 15 | echo 16 | echo "Usage:" 17 | echo " linbo_auth | [help]" 18 | echo 19 | echo "For compatibility reasons legacy options are also accepted but not used:" 20 | echo " linbo_auth " 21 | echo 22 | exit 1 23 | } 24 | 25 | # print help 26 | [ -z "$1" -o "$1" = "help" ] && usage 27 | 28 | # last parameter is password in any case 29 | export RSYNC_PASSWORD="$(echo "$@" | awk '{print $NF}')" 30 | 31 | if [ -s /etc/linbo_pwhash -a -s /etc/linbo_salt ]; then 32 | echo "Using local authentication ..." 33 | linbo_pwhash="$(cat /etc/linbo_pwhash)" 34 | linbo_salt="$(cat /etc/linbo_salt)" 35 | given_pwhash="$(echo "$RSYNC_PASSWORD" | LANG=C argon2 "$linbo_salt" -t 1000 | grep ^Hash | awk '{print $2}')" 36 | if [ "$given_pwhash" = "$linbo_pwhash" ]; then 37 | msg="Password matches."; RC=0 38 | # temporary workaround for password 39 | echo -n "$RSYNC_PASSWORD" > /tmp/linbo.passwd 40 | else 41 | msg="Password does not match!"; RC=1 42 | fi 43 | else 44 | msg="No password hash available!"; RC=2 45 | fi 46 | 47 | echo "$msg" 48 | 49 | exit "$RC" 50 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_vnc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_vnc 4 | # thomas@linuxmuster.net 5 | # 20250924 6 | # 7 | 8 | # get environment 9 | source /usr/share/linbo/shell_functions 10 | echo "### $timestamp $(basename "$0") ###" 11 | 12 | daemon="/usr/bin/x11vnc" 13 | pidfile="/run/x11vnc.pid" 14 | 15 | start(){ 16 | echo -n "Starting $(basename $daemon) ... " 17 | lsmod | grep -qw uinput || modprobe uinput 18 | port="9999" 19 | $daemon -rfbport "$port" -rawfb console -allow "$SERVERID" -forever -nopw >> /tmp/linbo.log 2>&1 & 20 | pid="$!" 21 | if [ -n "$pid" ]; then 22 | echo "$pid" > "$pidfile" 23 | echo "Ok." 24 | else 25 | echo "failed!" 26 | exit 1 27 | fi 28 | } 29 | 30 | 31 | case "$1" in 32 | onboot) [ -n "$VNCSERVER" ] && start ;; 33 | start) 34 | if [ -s "$pidfile" ]; then 35 | echo "Pidfile $pidfile found, not starting." 36 | else 37 | start 38 | fi 39 | ;; 40 | stop) 41 | if [ -s "$pidfile" ]; then 42 | echo -n "Stopping $(basename $daemon) ... " 43 | kill "$(cat $pidfile)" 44 | rm -f "$pidfile" 45 | echo "Ok." 46 | else 47 | echo "No pidfile found, not stopping." 48 | fi 49 | ;; 50 | *) 51 | echo "Usage: linbo_vnc " 52 | ;; 53 | esac 54 | 55 | exit 0 56 | -------------------------------------------------------------------------------- /serverfs/srv/linbo/boot/grub/themes/linbo/theme.txt: -------------------------------------------------------------------------------- 1 | # GRUB2 gfxmenu linbo theme 2 | # Designed for any resolution 3 | # thomas@linuxmuster.net 4 | # 20210202 5 | 6 | # Global Property 7 | title-text: "" 8 | #title-color: "#fefe54" 9 | #desktop-image: "linbo_wallpaper.png" 10 | desktop-color: "#2a4457" 11 | terminal-font: "Unifont Regular 16" 12 | terminal-box: "terminal_box_*.png" 13 | terminal-left: "0" 14 | terminal-top: "0" 15 | terminal-width: "100%" 16 | terminal-height: "100%" 17 | terminal-border: "0" 18 | 19 | + image { left = 92%-300 top = 90%-300 width = 300 height = 300 file = "linbo_logo_big.png" } 20 | 21 | # Show the boot menu 22 | + boot_menu { 23 | left = 8% 24 | top = 5% 25 | width = 84%-300 26 | height = 85% 27 | item_font = "Unifont Regular 16" 28 | item_color = "#cccccc" 29 | selected_item_color = "#ffffff" 30 | icon_width = 36 31 | icon_height = 36 32 | item_icon_space = 12 33 | item_height = 40 34 | item_spacing = 12 35 | #item_padding = 20 36 | selected_item_pixmap_style = "select_*.png" 37 | scrollbar_thumb = "select_*.png" 38 | scrollbar_frame = "select_*.png" 39 | scrollbar_width = 10 40 | } 41 | 42 | # Show a countdown message using the label component 43 | + label { 44 | top = 87% 45 | left = 8%+24 46 | width = 84%-300 47 | align = "left" 48 | id = "__timeout__" 49 | text = "Starte in %d Sekunden ..." 50 | color = "#cccccc" 51 | font = "Unifont Regular 16" 52 | } 53 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_size: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_size 4 | # thomas@linuxmuster.net 5 | # 20250421 6 | # 7 | 8 | usage(){ 9 | local RC="$1" 10 | echo 11 | echo "Prints disk or partition size." 12 | echo 13 | echo "Usage: linbo_size | [help]" 14 | echo 15 | exit "$RC" 16 | } 17 | 18 | # print help 19 | [ -z "$1" -o "$1" = "help" ] && usage 0 20 | 21 | # read common shell functions 22 | source /usr/share/linbo/shell_functions 23 | 24 | # test if device is valid 25 | device="$(get_realdev "$1")" 26 | if [ ! -b "$device" ]; then 27 | echo " -- " 28 | exit 1 29 | fi 30 | 31 | # test if device is disk 32 | type="$(lsblk -A -p -l -o NAME,TYPE | grep -w ^"$device" | awk '{print $2}')" 33 | if [ "$type" = "disk" ]; then 34 | size=$(get_partition_size "$device") 35 | if [ "$?" = "0" -a "$size" -ge 0 ] 2>/dev/null; then 36 | echo "$size" | awk '{printf "%.1fGB\n",$1 / 1048576}' 2>/dev/null 37 | exit 0 38 | else 39 | echo " -- " 40 | exit 1 41 | fi 42 | fi 43 | 44 | # test if partition is mounted 45 | mntpnt="$(grep -w ^"$device" /proc/mounts | awk '{print $2}')" 46 | 47 | # if not mounted, mount on an temporary mountpoint 48 | if [ -z "$mntpnt" ]; then 49 | mntpnt="/tmp/mnt" 50 | mkdir -p "$mntpnt" 51 | if ! linbo_mount "$device" "$mntpnt" -r &>/dev/null; then 52 | echo " -- " 53 | exit 1 54 | fi 55 | fi 56 | 57 | # get size 58 | df -k "$mntpnt" 2>/dev/null | tail -1 | \ 59 | awk '{printf "%.1f/%.1fGB\n", $4 / 1048576, $2 / 1048576}' 2>/dev/null 60 | 61 | # unmount 62 | if [ "$mntpnt" = "/tmp/mnt" ]; then 63 | umount "$mntpnt" 64 | fi 65 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_postsync: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_postsync <#> | | [help] 4 | # thomas@linuxmuster.net 5 | # 20250423 6 | # 7 | 8 | # read common shell functions 9 | source /usr/share/linbo/shell_functions 10 | echo "### $timestamp $(basename "$0") $@ ###" 11 | 12 | 13 | # usage info 14 | usage(){ 15 | local RC="$1" 16 | [ -z "$RC" ] && RC="0" 17 | echo 18 | echo "Applies a postsync script to an operating system." 19 | echo 20 | echo "Usage: linbo_postsync <#> | | [help]" 21 | echo 22 | echo "Examples:" 23 | echo " ~ # linbo_postsync 1" 24 | echo " ~ # linbo_postsync /dev/sda3 ubuntu2204.postsync" 25 | echo 26 | echo "The target operating system is either defined by start.conf position number" 27 | echo "or by root partition devicename and postsync filename." 28 | echo 29 | exit "$RC" 30 | } 31 | 32 | 33 | # help 34 | [ "$1" = "help" ] && usage 35 | 36 | # os number is given 37 | if isinteger "$1"; then 38 | osconf="/conf/os.$1" 39 | [ -s "$osconf" ] || usage 1 40 | source "$osconf" 41 | [ -z "$baseimage" ] && usage 1 42 | postsync="/cache/${baseimage%%.*}.postsync" 43 | 44 | # root partition and postsync file are given 45 | else 46 | [ "${2##*.}" = "postsync" ] || usage 1 47 | root="$1" 48 | postsync="/cache/$2" 49 | fi 50 | 51 | 52 | # test options 53 | [ -b "$root" ] || usage 1 54 | linbo_mountcache &> /dev/null 55 | [ -s "$postsync" ] || usage 1 56 | linbo_mount "$root" /mnt || usage 1 57 | 58 | 59 | RC="0" 60 | 61 | # apply postsync 62 | source "$postsync" || RC="1" 63 | 64 | umount /mnt || RC="1" 65 | 66 | exit "$RC" -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_prestart: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_prestart <#> | | [help] 4 | # thomas@linuxmuster.net 5 | # 20250423 6 | # 7 | 8 | # read common shell functions 9 | source /usr/share/linbo/shell_functions 10 | echo "### $timestamp $(basename "$0") $@ ###" 11 | 12 | 13 | # usage info 14 | usage(){ 15 | local RC="$1" 16 | [ -z "$RC" ] && RC="0" 17 | echo 18 | echo "Applies a prestart script to an operating system." 19 | echo 20 | echo "Usage: linbo_prestart <#> | | [help]" 21 | echo 22 | echo "Examples:" 23 | echo " ~ # linbo_prestart 1" 24 | echo " ~ # linbo_prestart /dev/sda3 ubuntu2204.prestart" 25 | echo 26 | echo "The target operating system is either defined by start.conf position number" 27 | echo "or by root partition devicename and prestart filename." 28 | echo 29 | exit "$RC" 30 | } 31 | 32 | 33 | # help 34 | [ "$1" = "help" ] && usage 35 | 36 | # os number is given 37 | if isinteger "$1"; then 38 | osconf="/conf/os.$1" 39 | [ -s "$osconf" ] || usage 1 40 | source "$osconf" 41 | [ -z "$baseimage" ] && usage 1 42 | prestart="/cache/${baseimage%%.*}.prestart" 43 | 44 | # root partition and prestart file are given 45 | else 46 | [ "${2##*.}" = "prestart" ] || usage 1 47 | root="$1" 48 | prestart="/cache/$2" 49 | fi 50 | 51 | 52 | # test options 53 | [ -b "$root" ] || usage 1 54 | linbo_mountcache &> /dev/null 55 | [ -s "$prestart" ] || usage 1 56 | linbo_mount "$root" /mnt || usage 1 57 | 58 | 59 | RC="0" 60 | 61 | # apply prestart 62 | source "$prestart" || RC="1" 63 | 64 | umount /mnt || RC="1" 65 | 66 | exit "$RC" -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_cmd: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_cmd: legacy command wrapper for the linbo_gui 4 | # 5 | # thomas@linuxmuster.net 6 | # 20250801 7 | # GPL v3 8 | # 9 | 10 | prefix="/usr/bin/linbo_" 11 | 12 | usage(){ 13 | echo 14 | echo "Usage: linbo_cmd " 15 | echo 16 | echo "Commands are:" 17 | ls -1 ${prefix}* | sed "s|^${prefix}| |g" | grep -v cmd | grep -v wrapper 18 | echo 19 | echo "This is only a legacy wrapper for the linbo_gui." 20 | echo "Please run the real commands directly:" 21 | echo 22 | echo "linbo_ help" 23 | echo 24 | exit 0 25 | } 26 | 27 | remove_args(){ 28 | local item 29 | for item in $@; do shift; done 30 | } 31 | 32 | [ -z "$1" ] && usage 33 | 34 | # get command, substitute outdated commands for legacy reasons 35 | case "$1" in 36 | authenticate) cmd="auth" ;; 37 | create) cmd="create_image" ;; 38 | label) cmd="$1" ; options="all" ;; 39 | memory) cmd="mem" ;; 40 | partition) cmd="partition_format" ; remove_args ;; 41 | partition_noformat) cmd="partition" ; remove_args ;; 42 | sync|syncr) cmd="syncstart" ;; 43 | synconly) cmd="sync" ;; 44 | cmd|wrapper) usage ;; 45 | size) 46 | # workaround for linbo_gui's wrong invokation of linbo_cmd size 47 | case "$2" in 48 | /dev/nvmenp) options="/dev/nvme0n1" ;; 49 | /dev/diskp) options="/dev/disk0" ;; 50 | *) ;; 51 | esac 52 | cmd="$1" 53 | ;; 54 | *) cmd="$1" ;; 55 | esac 56 | shift 57 | 58 | # test real command 59 | realcmd="$prefix${cmd}" 60 | [ -x "$realcmd" ] || usage 61 | 62 | # get options 63 | [ -z "$options" ] && options="$@" 64 | 65 | # run real command 66 | $realcmd $options 67 | 68 | exit "$?" 69 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_mkinfo: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_mkinfo 4 | # thomas@linuxmuster.net 5 | # 20250423 6 | # 7 | 8 | usage(){ 9 | RC="$1" 10 | echo 11 | echo "Creates image info file." 12 | echo 13 | echo "Usage: linbo_mkinfo | [help]" 14 | echo 15 | exit "$RC" 16 | } 17 | 18 | # print help 19 | [ -z "$1" -o "$1" = "help" ] && usage 0 20 | 21 | # get environment 22 | source /usr/share/linbo/shell_functions 23 | echo "### $timestamp $(basename "$0") $@ ###" 24 | 25 | linbo_mountcache &> /dev/null || exit 1 26 | 27 | curdir="$(pwd)" 28 | cd /cache 29 | 30 | # check options 31 | [ -s "$1" ] || usage 1 32 | [ -b "$2" ] || usage 1 33 | 34 | imagefile="$1" 35 | rootdev="$2" 36 | partsize="$(get_partition_size "$rootdev")" 37 | imagesize="$(get_filesize "$imagefile")" 38 | timestamp="$(date +%Y%m%d%H%M)" 39 | log_image_status "$imagefile" "$timestamp" 40 | 41 | cat < "$imagefile".info 42 | ["$imagefile" Info File] 43 | timestamp="$timestamp" 44 | image="$imagefile" 45 | imagesize="$imagesize" 46 | partition="$rootdev" 47 | partitionsize="$partsize" 48 | EOF 49 | 50 | # save timestamp of backingfile to info file of differential image 51 | RC="0" 52 | backingfile="$(qemu-img info --output=json "$imagefile" | grep full-backing-filename | awk -F\" '{print $4}')" 53 | if [ -n "$backingfile" ]; then 54 | backingfile_timestamp="$(grep ^timestamp "$backingfile".info | awk -F\" '{print $2}')" 55 | if [ -n "$backingfile_timestamp" ]; then 56 | cat <> "$imagefile".info 57 | backingfile_timestamp="$backingfile_timestamp" 58 | EOF 59 | else 60 | echo "Cannot get backingfile timestamp!" 61 | RC="1" 62 | fi 63 | fi 64 | 65 | cd "$curdir" 66 | 67 | exit "$RC" 68 | -------------------------------------------------------------------------------- /debian/rules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | # 3 | # thomas@linuxmuster.net 4 | # 20231201 5 | # GPL v3 6 | # 7 | 8 | #export DH_COMPAT=9 9 | 10 | configure: configure-stamp 11 | configure-stamp: 12 | dh_testdir 13 | 14 | # make necessary build dirs 15 | mkdir -p cache || true 16 | mkdir -p src || true 17 | mkdir -p tmp || true 18 | 19 | touch configure-stamp 20 | 21 | build: build-stamp 22 | build-stamp: configure-stamp 23 | dh_testdir 24 | touch build-stamp 25 | 26 | distclean: clean 27 | rm -rf src || true 28 | rm -rf tmp || true 29 | 30 | clean: 31 | dh_testdir 32 | dh_testroot 33 | rm -f build-stamp configure-stamp 34 | #rm -rf tmp 35 | dh_clean -d 36 | 37 | install: build 38 | dh_testdir 39 | dh_testroot 40 | #dh_clean -k 41 | dh_installdirs 42 | dh_install 43 | 44 | # invoke build helper scripts 45 | run-parts build/run.d --report --exit-on-error 46 | 47 | # Build architecture-independent files here. 48 | binary-indep: build install 49 | # We have nothing to do by default. 50 | 51 | # Build architecture-dependent files here. 52 | binary-arch: build install 53 | # dh_testdir 54 | dh_testroot 55 | dh_installdebconf 56 | dh_installdocs 57 | # dh_installexamples 58 | # dh_installmenu 59 | dh_installlogrotate 60 | # dh_installemacsen 61 | # dh_installpam 62 | # dh_installmime 63 | dh_installdirs 64 | dh_installcron 65 | # dh_installman 66 | # dh_installinfo 67 | # dh_undocumented 68 | dh_install 69 | dh_installchangelogs 70 | dh_link 71 | dh_strip 72 | # dh_compress 73 | dh_fixperms 74 | # dh_makeshlibs 75 | dh_installdeb 76 | # dh_perl 77 | # dh_shlibdeps 78 | dh_gencontrol 79 | dh_md5sums 80 | dh_builddeb -- -Zgzip 81 | 82 | binary: binary-indep binary-arch 83 | .PHONY: build clean binary-indep binary-arch binary install configure 84 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_download: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_download 4 | # thomas@linuxmuster.net 5 | # 20250423 6 | # 7 | 8 | usage(){ 9 | local RC="$1" 10 | echo 11 | echo "Downloads a file or a directory from the server into the current directory." 12 | echo 13 | echo "Usage: linbo_download [server ip] [important] | [help]" 14 | echo 15 | echo "Note:" 16 | echo "* \"server ip\" is depreMcated and can be ommitted." 17 | echo "* \"important\" increases verbosity." 18 | echo "* Use a trailing slash with \"dir\" to download a directory recursively." 19 | echo 20 | exit "$RC" 21 | } 22 | 23 | # print help 24 | [ -z "$1" -o "$1" = "help" ] && usage 0 25 | 26 | # get environment 27 | source /usr/share/linbo/shell_functions 28 | echo "### $timestamp $(basename "$0") $@ ###" 29 | 30 | # do not execute in localmode 31 | if localmode; then 32 | echo "Local mode detected!" 33 | exit 0 34 | fi 35 | 36 | # check params 37 | if validip "$1"; then shift; fi 38 | FILE="$1" 39 | IMPORTANT="$2" 40 | 41 | [ -z "$FILE" ] && usage 1 42 | 43 | # downloads files from server into current directory 44 | RC=1 45 | [ -n "$IMPORTANT" ] && echo "RSYNC Download $LINBOSERVER -> $FILE ..." 46 | TARGET="$(basename $FILE)" 47 | # ensure target dir exists 48 | [ "${TARGET: -1}" = "/" ] && mkdir -p "$TARGET" 49 | interruptible rsync --skip-compress="$RSYNC_SKIP_COMPRESS" -HaLz --partial --progress "$LINBOSERVER::linbo/$FILE" "$TARGET" &> /dev/null; RC="$?" 50 | if [ "$RC" != "0" ]; then 51 | # Delete incomplete/defective/non-existent file (maybe we should check for returncode=23 first?) 52 | rm -f "$FILE" 53 | if [ -n "$IMPORTANT" ]; then 54 | # Verbose error message if file was important 55 | echo "File $FILE could not be downloaded." 56 | fi 57 | fi 58 | exit "$RC" 59 | -------------------------------------------------------------------------------- /serverfs/srv/linbo/linuxmuster-win/README: -------------------------------------------------------------------------------- 1 | linuxmuster-win 2 | =============== 3 | 4 | Management-Skripte für den Windows 10 Client 5 | ------------------------------------------- 6 | 7 | Installation 8 | ------------ 9 | 10 | * install.cmd als Administrator starten. 11 | 12 | * Es wird eine "geplante Aufgabe" angelegt: 13 | Beim Start des Betriebssystems wird das Skript "start-tasks.cmd" automatisch 14 | ausgeführt. 15 | 16 | Skripte 17 | ------- 18 | 19 | * install.cmd: Skript zur händischen Installation des Startskripts. 20 | 21 | * uninstall.cmd: Skript zur händischen Deinstallation. 22 | 23 | * start-tasks.cmd: 24 | Prüft das Verzeichnis C:\linuxmuster-win auf das Vorhandensein von Skripten 25 | und führt sie ggf. aus: 26 | * winact.cmd 27 | wird von LINBO zur Reaktivierung angelegt. Das Skript enthält die 28 | Produktkeys und Aktivierungsbefehle für Windows und ggf. MSOffice. 29 | Wird nach Ausführung gelöscht. 30 | * custom.cmd.ex 31 | Beispielskript für eigene Befehle, die beim Windowsstart ausgeführt 32 | werden sollen. Muss nach custom.cmd umbenannt werden, damit es 33 | ausgeführt wird. 34 | 35 | * save-activation-status.cmd: 36 | Dieses Skript muss von Hand ausgeführt werden, nachdem man die Produkte 37 | aktiviert hat. Es speichert den Aktivierungsstatus von Windows nach 38 | C:\linuxmuster-win\win_activation_status und ggf. von MSOffice 2010/2013 39 | nach C:\linuxmuster-win\office_activation_status. Findet LINBO beim nächsten 40 | Reboot diese Dateien und sind die Produkte aktiviert, packt LINBO die 41 | entsprechenden Aktivierungsdateien (tokens.dat) ein und lädt sie auf den 42 | Server hoch. 43 | Beim nächsten Sync stellt LINBO die Aktivierung aus den gesicherten Dateien 44 | wieder her. 45 | 46 | thomas@linuxmuster.net 47 | 20210504 48 | -------------------------------------------------------------------------------- /serverfs/srv/linbo/examples/win10.global.reg: -------------------------------------------------------------------------------- 1 | Windows Registry Editor Version 5.00 2 | 3 | ; linuxmuster.net 7 4 | ; thomas@linuxmuster.net 5 | ; 20230510 6 | 7 | ; to be applied once before domain join and image creation 8 | ; change SAMBADOMAIN to the name of your samba domainname 9 | 10 | ; machine account password may not expire 11 | [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Netlogon\Parameters] 12 | "DisablePasswordChange"=dword:00000001 13 | "MaximumPasswordAge"=dword:000f4240 14 | "RefusePasswordChange"=dword:00000001 15 | "RequireSignOrSeal"=dword:00000001 16 | "RequireStrongKey"=dword:00000001 17 | 18 | ; needed for netlogon 19 | [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\NetworkProvider\HardenedPaths] 20 | "\\\\*\\netlogon"="RequireMutualAuthentication=0,RequireIntegrity=0,RequirePrivacy=0" 21 | 22 | ; disable hiberboot 23 | [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Power] 24 | "HiberbootEnabled"=dword:00000000 25 | [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power] 26 | "HiberbootEnabled"=dword:00000000 27 | 28 | ; allow users to install printer drivers 29 | [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrint] 30 | "RestrictDriverInstallationToAdministrators"=dword:00000000 31 | 32 | ; samba domain, to be adapted 33 | [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\] 34 | "DefaultLogonDomain"="SAMBADOMAIN" 35 | [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters] 36 | "Domain"="SAMBADOMAIN" 37 | "NV Domain"="SAMBADOMAIN" 38 | 39 | ; don't show the username of the last login 40 | [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] 41 | "dontdisplaylastusername"=dword:00000001 42 | 43 | ; add your custom registry patches below 44 | -------------------------------------------------------------------------------- /debian/control: -------------------------------------------------------------------------------- 1 | Source: linuxmuster-linbo7 2 | Section: admin 3 | Priority: extra 4 | Maintainer: Thomas Schmitt 5 | Build-Depends: acl, argon2, bc, binutils, bison, build-essential, ctorrent, 6 | curl, cvs, debianutils, debhelper, dosfstools, dpkg-dev, dmidecode, 7 | dropbear-bin, gcc-multilib, e2fsprogs, efibootmgr, ethtool, fakeroot, fdisk, 8 | flex, fonts-ubuntu, g++, gcc, gdisk, gettext, git, gnupg, gpgv, grep, grub-common, 9 | grub-ipxe, grub-efi-amd64-bin, grub2-common, grub-pc-bin, gzip, hdparm, 10 | hwinfo, kmod, libacl1-dev, libattr1-dev, libelf-dev, libfuse-dev, 11 | libncurses5-dev, libowfat-dev, libssl-dev, libz-dev, linux-libc-dev, nasm, 12 | ncurses-base, netpbm, ntfs-3g, parted, patchutils, perl, plymouth-label, 13 | plymouth-label-ft, qemu-guest-agent, qemu-utils, rsync, systemd, 14 | sysvinit-utils, tar, tmux, udev, udpcast, unzip, util-linux, uuid-dev, 15 | uuid-runtime, wget, wpasupplicant, zlib1g-dev, x11vnc, xz-utils 16 | 17 | Package: linuxmuster-linbo7 18 | Architecture: all 19 | Breaks: linuxmuster-linbo-common7 20 | Conflicts: atftpd, bittorrent, linuxmuster-linbo, linuxmuster-linbo-common, 21 | linuxmuster-linbo-common7, opentracker 22 | Recommends: linuxmuster-base7 23 | Pre-Depends: linuxmuster-common 24 | Depends: argon2, coreutils, cpio, ctorrent, dosfstools, dropbear-bin, 25 | grub-common, grub-efi-amd64-bin, grub-ipxe, grub-pc-bin, isolinux, 26 | libowfat0t64, linux-firmware, linuxmuster-linbo-gui7, mbr, 27 | python3, qemu-utils, rsync, sed, ssh, syslinux-common, syslinux-utils, tftpd-hpa, 28 | tmux, udpcast, wakeonlan, xorriso, xz-utils, zip, zlib1g 29 | Suggests: isc-dhcp-server | dhcp3-server 30 | Description: linuxmuster-linbo7 31 | This package contains kernel, initrd, scripts and pxe boot configuration for 32 | the Linux-based Network Boot (LINBO) boot/install/repair system. 33 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_preregister: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_preregister 4 | # thomas@linuxmuster.net 5 | # 20250423 6 | # 7 | 8 | 9 | usage(){ 10 | echo 11 | echo "Computes the closest next hostname to facilitate the client registration." 12 | echo 13 | echo "Usage: linbo_preregister [help]" 14 | echo 15 | exit 0 16 | } 17 | 18 | 19 | # print help 20 | [ "$1" = "help" ] && usage 21 | 22 | # get environment 23 | source /usr/share/linbo/shell_functions 24 | echo "### $timestamp $(basename "$0") ###" 25 | 26 | LAST_REGISTERED="/tmp/last_registered" 27 | cd "$(dirname "$LAST_REGISTERED")" 28 | linbo_download "$(basename "$LAST_REGISTERED")" &> /dev/null 29 | cd / 30 | LASTWORKSTATION="$(grep ^[a-z0-9] "$LAST_REGISTERED" | tail -n 1)" 31 | 32 | if [ "$LASTWORKSTATION" == "" ]; then 33 | echo ",,," 34 | rm -f "$LAST_REGISTERED" 35 | exit 0 36 | fi 37 | 38 | LASTGROUP="$(echo $LASTWORKSTATION | cut -d ";" -f 3)" 39 | LASTROOM="$(echo $LASTWORKSTATION | cut -d ";" -f 1)" 40 | LASTHOST="$(echo $LASTWORKSTATION | cut -d ";" -f 2)" 41 | LASTIP="$(echo $LASTWORKSTATION | cut -d ";" -f 5)" 42 | 43 | # get next ip address 44 | if [ "$LASTIP" = "DHCP" ]; then 45 | NEXTIP="DHCP" 46 | else 47 | NEXTIP="$(echo -n $LASTIP | cut -d "." -f 1-3).$(($(echo $LASTIP | cut -d "." -f 4)+1))" 48 | fi 49 | 50 | # get next hostname 51 | HOSTNAMECOUNTER="$(echo $LASTHOST | grep -Eo "[0-9]+$")" 52 | if [ ! "$HOSTNAMECOUNTER" == "" ]; then 53 | NEXTCOUNT=$(expr $HOSTNAMECOUNTER + 1) 54 | # Left fill with zeroes 55 | while [ "${#NEXTCOUNT}" -lt "${#HOSTNAMECOUNTER}" ]; do 56 | NEXTCOUNT=0$NEXTCOUNT 57 | done 58 | 59 | # Build new hostname 60 | NEXTHOST="$(echo -n $LASTHOST | sed "s/${HOSTNAMECOUNTER}$//g")$NEXTCOUNT" 61 | else 62 | NEXTHOST="$LASTHOST" 63 | fi 64 | rm -f "$LAST_REGISTERED" 65 | echo "$LASTROOM,$LASTGROUP,$NEXTHOST,$NEXTIP" 66 | 67 | exit 0 68 | -------------------------------------------------------------------------------- /serverfs/etc/linuxmuster/linbo/ssh_config: -------------------------------------------------------------------------------- 1 | # ssh_config for linbo remote commands per ssh 2 | # 3 | # thomas@linuxmuster.net 4 | # 20230211 5 | # 6 | # This is the ssh client system-wide configuration file. See 7 | # ssh_config(5) for more information. This file provides defaults for 8 | # users, and the values can be changed in per-user configuration files 9 | # or on the command line. 10 | 11 | # Configuration data is parsed as follows: 12 | # 1. command line options 13 | # 2. user-specific file 14 | # 3. system-wide file 15 | # Any configuration value is only changed the first time it is set. 16 | # Thus, host-specific definitions should be at the beginning of the 17 | # configuration file, and defaults at the end. 18 | 19 | # Site-wide defaults for some commonly used options. For a comprehensive 20 | # list of available options, their meanings and defaults, please see the 21 | # ssh_config(5) man page. 22 | 23 | Host * 24 | # ForwardAgent no 25 | # ForwardX11 no 26 | # ForwardX11Trusted yes 27 | # RhostsRSAAuthentication no 28 | # RSAAuthentication yes 29 | # PasswordAuthentication yes 30 | # HostbasedAuthentication no 31 | # BatchMode no 32 | # CheckHostIP yes 33 | # AddressFamily any 34 | # ConnectTimeout 0 35 | # IdentityFile ~/.ssh/identity 36 | # IdentityFile ~/.ssh/id_rsa 37 | # IdentityFile ~/.ssh/id_dsa 38 | # Protocol 2,1 39 | # Cipher 3des 40 | # Ciphers aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc 41 | # EscapeChar ~ 42 | # Tunnel no 43 | # TunnelDevice any:any 44 | # PermitLocalCommand no 45 | SendEnv LANG LC_* 46 | HashKnownHosts yes 47 | GSSAPIAuthentication yes 48 | GSSAPIDelegateCredentials no 49 | # needed for linbo remote client connections 50 | HostKeyAlgorithms +ssh-rsa 51 | StrictHostKeyChecking no 52 | UserKnownHostsFile ~/.ssh/linbo_hosts 53 | Port 2222 54 | -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/templates/linbo.cfg.iso: -------------------------------------------------------------------------------- 1 | # grub.cfg fuer linbo isoboot 2 | # thomas@linuxmuster.net 3 | # 20231119 4 | # 5 | 6 | set default=0 7 | set timeout=10 8 | #set fallback=1 9 | 10 | set gfxpayload=800x600x16 11 | 12 | # kernel & initrd 13 | set linbo_kernel=/linbo64 14 | set linbo_initrd=/linbofs64 15 | set NAME="LINBO (64bit)" 16 | 17 | # theme settings (modify for custom theme) 18 | set theme=/boot/grub/themes/linbo/theme.txt 19 | #set font=/boot/grub/themes/linbo/unifont-regular-16.pf2 20 | 21 | # load theme 22 | #if [ -e "$theme" -a -e "$font" ]; then 23 | # loadfont "$font" 24 | export theme 25 | #fi 26 | 27 | clear 28 | 29 | # linbo part, boot local or net (default #0) 30 | menuentry "$NAME Standardboot" --class linbo { 31 | 32 | echo $NAME Standardboot 33 | echo 34 | 35 | echo -n "Loading $linbo_kernel ..." 36 | linux $linbo_kernel quiet splash isoboot 37 | echo 38 | echo -n "Loading $linbo_initrd ..." 39 | initrd $linbo_initrd 40 | boot 41 | 42 | } 43 | 44 | # linbo part, boot local or net (#1) 45 | menuentry "$NAME Ersteinrichtung + Neustart" --class linbo { 46 | 47 | echo $NAME Ersteinrichtung + Neustart 48 | echo 49 | 50 | echo -n "Loading $linbo_kernel ..." 51 | linux $linbo_kernel quiet splash linbocmd=format,reboot isoboot 52 | echo 53 | echo -n "Loading $linbo_initrd ..." 54 | initrd $linbo_initrd 55 | boot 56 | 57 | } 58 | 59 | # linbo part, boot local or net (#2) 60 | menuentry "$NAME Debugmodus" --class linbo { 61 | 62 | echo $NAME Debugmodus 63 | echo 64 | 65 | echo -n "Loading $linbo_kernel ..." 66 | linux $linbo_kernel quiet debug isoboot 67 | echo 68 | echo -n "Loading $linbo_initrd ..." 69 | initrd $linbo_initrd 70 | boot 71 | 72 | } 73 | 74 | # linbo part, boot local or net (#3) 75 | menuentry "PXE Boot" --class linbo { 76 | 77 | echo PXE Boot 78 | echo 79 | 80 | echo -n "Loading ipxe.efi ..." 81 | chainloader /ipxe.efi 82 | boot 83 | 84 | } 85 | -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/harvest-app.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # harvest an app from server os for use in linbofs 4 | # 5 | # thomas@linuxmuster.net 6 | # 20250916 7 | # 8 | 9 | # get linbo env 10 | source /usr/share/linuxmuster/helperfunctions.sh 11 | 12 | # give full path to app 13 | APP="$1" 14 | shift 15 | 16 | [ -s "$APP" ] || exit 1 17 | 18 | # linbofs paths 19 | LINBOAPPDIR="$LINBOCACHEDIR/apps" 20 | LINBOFSDIR="$LINBOCACHEDIR/linbofs64" 21 | 22 | # app paths 23 | APPNAME="$(basename $APP)" 24 | APPDIR="$LINBOAPPDIR/$APPNAME" 25 | APPARCHIVE="$LINBOAPPDIR/${APPNAME}.tar.xz" 26 | IGNORELIST="linux-vdso.so libc.so.6 ld-linux-x86-64.so" 27 | 28 | # skip libraries which are already in linbofs 29 | is_ignored(){ 30 | local item 31 | local res 32 | for item in $IGNORELIST; do 33 | stringinstring "$item" "$1" && return 0 34 | done 35 | res="$(find $LINBOFSLIB -name $1)" 36 | [ -n "$res" ] && return 0 37 | return 1 38 | } 39 | 40 | # provide necessary directories 41 | rm -rf "$APPDIR" 42 | mkdir -p "$APPDIR/$(dirname $APP)" 43 | mkdir -p "$APPDIR/lib" 44 | 45 | # copy app binary 46 | cp -L $APP "$APPDIR/$APP" 47 | 48 | # get dependend libraries and copy them 49 | ldd "$APP" | while read line; do 50 | lib="$(echo $line | awk '{print $1}')" 51 | is_ignored "$lib" && continue 52 | slink="$(echo $line | awk '{print $3}')" 53 | # skip if lib does not exist 54 | [ -e "$slink" ] || continue 55 | # skip if lib is already in linbofs 56 | [ -n "$(find "$LINBOFSDIR" -type f -name "$lib")" ] && continue 57 | cp -L "$slink" "$APPDIR/lib" 58 | done 59 | 60 | # add supplemental files 61 | for i in $@; do 62 | mkdir -p "$APPDIR/$(dirname $i)" 63 | cp -rL $i "$APPDIR/$i" 64 | done 65 | 66 | # pack files into xz archive and delete temp dir 67 | cd "$APPDIR" 68 | if [ -z "$(ls -A ./lib)" ]; then 69 | rm -rf lib 70 | else 71 | chmod 755 lib/* 72 | fi 73 | tar --xz -cf "$APPARCHIVE" * 74 | cd 75 | rm -rf "$APPDIR" -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_mount: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_mount 4 | # thomas@linuxmuster.net 5 | # 20250502 6 | # 7 | 8 | usage(){ 9 | echo 10 | echo "Mounts a sourcedev." 11 | echo 12 | echo "Usage: linbo_mount [-r] | [help]" 13 | echo 14 | exit 0 15 | } 16 | 17 | # print help 18 | [ -z "$1" -o "$1" = "help" ] && usage 19 | 20 | #echo "## linbo_mount $@" 21 | 22 | # read common shell functions 23 | source /usr/share/linbo/shell_functions 24 | echo "### $timestamp $(basename "$0") $@ ###" 25 | 26 | # define mount options according to source device 27 | ext="$(tolower "${1##*.}")" 28 | if [ "$ext" = "iso" ]; then 29 | type="iso9660" 30 | sourcedev="$1" 31 | else 32 | type="$(linbo_fstype $1)" 33 | [ -z "$type" ] && exit 1 34 | # get real sourcedev name by label 35 | sourcedev="$(get_realdev $1)" 36 | [ -z "$sourcedev" ] && sourcedev="$1" 37 | fi 38 | destdir="$2" 39 | [ "$3" = "-r" ] && ro=",ro" 40 | 41 | if grep -q ^"$sourcedev $destdir" /proc/mounts; then 42 | remount="remount," 43 | [ -z "$ro" ] && ro=",rw" 44 | fi 45 | 46 | case "$type" in 47 | iso9660) options="-i -t $type -o ${remount}loop" ;; 48 | ntfs) options="-i -t ntfs3 -o ${remount}acl,noatime,discard${ro}" ;; 49 | vfat) options="-i -t $type -o ${remount}defaults${ro}" ;; 50 | *) options="-i -t $type -o ${remount}acl,user_xattr${ro}" ;; 51 | esac 52 | 53 | # mount sourcedev 54 | mount $options $sourcedev $destdir 55 | 56 | # check success 57 | RC="1" 58 | grep -q " $destdir " /proc/mounts && RC="0" 59 | 60 | # second try (do ntfsfix before in case of ntfs rw mount) 61 | if [ "$RC" != "0" -a "$type" = "ntfs" ]; then 62 | echo "Windows sourcedev seems in bad shape. Trying ntfsfix to solve this issue." 63 | ntfsfix -bd "$sourcedev" 64 | mount $options $sourcedev $destdir 65 | # second try with default options for other filesystems 66 | elif [ "$RC" != "0" ]; then 67 | mount $sourcedev $destdir 68 | fi 69 | # check success again 70 | grep -q ^"$sourcedev $destdir" /proc/mounts && RC="0" 71 | 72 | exit "$RC" 73 | -------------------------------------------------------------------------------- /linbofs/usr/bin/gui_ctl: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # control linbo_gui: gui_ctl 4 | # thomas@linuxmuster.net 5 | # 20250912 6 | # 7 | 8 | # intercept nogui parameter 9 | [ -n "$NOGUI" ] && echo "Linbo was started with \"nogui\". Doing nothing." && exit 10 | 11 | # test start.conf 12 | [ -s /start.conf ] || exit 1 13 | 14 | # get environment 15 | source /usr/share/linbo/shell_functions 16 | echo "### $timestamp $(basename "$0") $@ ###" 17 | 18 | # test gui 19 | gui_ps="$(ps w | grep linbo_gui | grep -v grep | awk '{print $1, $5}')" 20 | gui_pid="$(echo "$gui_ps" | awk '{print $1}')" 21 | 22 | backup_start_conf() { 23 | # only backup if there is not backup yet 24 | if test ! -f "/start.conf.bak"; then 25 | cp /start.conf /start.conf.bak 26 | fi 27 | } 28 | 29 | disable() { 30 | echo "Disabling linbo_gui." 31 | backup_start_conf 32 | if grep -qi ^GuiDisabled /start.conf; then 33 | sed -i 's|^[Gg][Uu][Ii][Dd][Ii][Ss][Aa][Bb][Ll][Ee][Dd].*|GuiDisabled = yes|' /start.conf || exit 1 34 | else 35 | sed -i 's|^\[[Ll][Ii][Nn][Bb][Oo]\]|\[LINBO\]\nGuiDisabled = yes|' /start.conf || exit 1 36 | fi 37 | } 38 | 39 | enable() { 40 | echo "Enabling linbo_gui." 41 | backup_start_conf 42 | if grep -qi ^GuiDisabled /start.conf; then 43 | sed -i 's|^[Gg][Uu][Ii][Dd][Ii][Ss][Aa][Bb][Ll][Ee][Dd].*|GuiDisabled = no|' /start.conf || exit 1 44 | else 45 | sed -i 's|^\[[Ll][Ii][Nn][Bb][Oo]\]|\[LINBO\]\nGuiDisabled = no|' /start.conf || exit 1 46 | fi 47 | } 48 | 49 | # do commands 50 | case "$1" in 51 | disable) disable ; shift ;; 52 | enable) enable ; shift ;; 53 | restore) 54 | echo "Restoring gui." 55 | if [ -s /start.conf.bak ]; then 56 | mv /start.conf.bak /start.conf || exit 1 57 | else 58 | exit 1 59 | fi 60 | shift 61 | ;; 62 | 63 | *) exit 1 ;; 64 | esac 65 | 66 | # get onboot option 67 | [ "$1" = "onboot" ] && onboot="yes" 68 | 69 | # split changed start.conf 70 | [ -z "$onboot" ] && linbo_split_startconf 71 | 72 | if [ -n "$gui_pid" -a -z "$onboot" ]; then 73 | kill "$gui_pid" || exit 1 74 | fi 75 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_initcache: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_initcache [serverip] [cachedev] [downloadtype] | [-h|help|--help] 4 | # thomas@linuxmuster.net 5 | # 20250427 6 | # 7 | 8 | usage(){ 9 | echo 10 | echo "Installs all necessary files into linbo's cache." 11 | echo 12 | echo "Usage: linbo_initcache [help]" 13 | echo 14 | echo "Note: Legacy options ([serverip] [cachedev] [downloadtype]) are deprecated" 15 | echo "and will be ignored." 16 | echo 17 | exit 0 18 | } 19 | 20 | # print help 21 | [ "$1" = "help" ] && usage 22 | 23 | # get environment 24 | source /usr/share/linbo/shell_functions 25 | echo "### $timestamp $(basename "$0") ###" 26 | 27 | # get downloadtype 28 | source /conf/linbo || exit 1 29 | [ -z "$downloadtype" ] && downloadtype="rsync" 30 | 31 | # do not execute in localmode 32 | if localmode; then 33 | echo "Local mode detected!" 34 | exit 0 35 | fi 36 | 37 | # skip if cache is on remote fs 38 | if remote_cache "$cache"; then 39 | echo "Cache $cache is not local, skipping update." 40 | exit 0 41 | fi 42 | 43 | # if FORMAT is set, format cache partition 44 | if [ -n "$FORMAT" ]; then 45 | echo "Formatting cache partition $cache ..." 46 | linbo_format "$cache" || exit 1 47 | fi 48 | linbo_mountcache &> /dev/null "$cache" || exit 1 49 | cd /cache 50 | 51 | # clean up obsolete image files 52 | images="$(images_startconf)" 53 | for img in *.qcow2; do 54 | [ -e "$img" ] || continue 55 | found=0 56 | for uimg in $images; do 57 | if [ "$img" = "$uimg" ]; then 58 | found=1 59 | break 60 | fi 61 | done 62 | if [ "$found" = "0" ]; then 63 | echo "Removing related image files of ${img%%.*}." 64 | rm -f "${img%%.*}".* 65 | fi 66 | done 67 | 68 | # update image files 69 | for img in $images; do 70 | if [ -n "$img" ]; then 71 | linbo_download_image "$img" "$downloadtype" || exit 1 72 | linbo_download_image "${img/.qcow2/.qdiff}" "$downloadtype" 73 | fi 74 | done 75 | 76 | # linbo & gui update 77 | rm -f /tmp/.update.done 78 | linbo_update &> /dev/null || exit 1 79 | linbo_update_gui &> /dev/null || exit 1 80 | 81 | exit 0 82 | -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/templates/grub.cfg.global: -------------------------------------------------------------------------------- 1 | # global part of group specific grub.cfg template for linbo net boot 2 | # thomas@linuxmuster.net 3 | # 20231119 4 | # 5 | 6 | # if you don't want this file being overwritten by import_workstations remove the following line: 7 | # ### managed by linuxmuster.net ### 8 | 9 | # edit to your needs 10 | set default=0 11 | set timeout=0 12 | set fallback=1 13 | 14 | set gfxmode=auto 15 | set gfxpayload=keep 16 | 17 | insmod all_video 18 | insmod png 19 | insmod gfxterm 20 | insmod gfxmenu 21 | insmod minicmd 22 | insmod progress 23 | 24 | terminal_output gfxterm 25 | 26 | background_color 42,68,87 27 | 28 | # kernel & initrd 29 | set linbo_kernel=/linbo64 30 | set linbo_initrd=/linbofs64 31 | 32 | # theme settings (modify for custom theme) 33 | set theme=/boot/grub/themes/linbo/theme.txt 34 | export theme 35 | 36 | clear 37 | 38 | # find linbo cache partition 39 | set cachelabel="@@cachelabel@@" 40 | if [ -n "$cachelabel" ]; then 41 | search --label "$cachelabel" --set cacheroot 42 | fi 43 | if [ -z "$cacheroot" ]; then 44 | search --file /start.conf --set cacheroot 45 | fi 46 | if [ -z "$cacheroot" ]; then 47 | search --file "$linbo_initrd" --set cacheroot 48 | fi 49 | if [ -n "$cacheroot" ]; then 50 | set root="$cacheroot" 51 | else 52 | set root="@@cacheroot@@" 53 | fi 54 | 55 | # linbo part, boot local or net (default #0) 56 | menuentry 'LINBO' --class linbo { 57 | 58 | echo LINBO $bootflag for group @@group@@ 59 | echo 60 | 61 | if [ -e "$linbo_kernel" -a -e "$linbo_initrd" ]; then 62 | set bootflag=localboot 63 | elif [ -n "$pxe_default_server" ]; then 64 | set root="(tftp)" 65 | set bootflag=netboot 66 | fi 67 | 68 | if [ -n "$bootflag" ]; then 69 | echo -n "Loading $linbo_kernel ..." 70 | linux $linbo_kernel @@kopts@@ $bootflag 71 | echo 72 | echo -n "Loading $linbo_initrd ..." 73 | initrd $linbo_initrd 74 | boot 75 | else 76 | if [ "$grub_platform" = "pc" ]; then 77 | set ipxe="/ipxe.lkrn" 78 | fi 79 | if [ -e "$ipxe" ]; then 80 | echo -n "Initiating pxe boot ..." 81 | linux16 $ipxe dhcp 82 | boot 83 | fi 84 | fi 85 | 86 | } 87 | -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/mkgrubnetdir.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # creates directory structure for grub network boot 4 | # thomas@linuxmuster.net 5 | # 20250503 6 | # GPL V3 7 | # 8 | 9 | # read linuxmuster environment 10 | . /usr/share/linuxmuster/environment.sh || exit 1 11 | 12 | # architectures 13 | I386="i386-pc" 14 | EFI64="x86_64-efi" 15 | 16 | # dirs 17 | SUBDIR="/boot/grub" 18 | I386_DIR="/usr/lib/grub/$I386" 19 | EFI64_DIR="/usr/lib/grub/$EFI64" 20 | 21 | # grub modules 22 | GRUBCOMMONMODS="all_video boot chain configfile cpuid echo net ext2 extcmd fat gettext gfxmenu \ 23 | gfxterm gzio http iso9660 ntfs linux linux16 loadenv loopback minicmd net part_gpt part_msdos \ 24 | png progress read reiserfs search sleep terminal test tftp" 25 | # arch specific netboot modules 26 | GRUBEFIMODS="$GRUBCOMMONMODS $(ls "$EFI64_DIR"/*efi*.mod | sed "s|$EFI64_DIR/||g" | sed 's|\.mod||g')" 27 | GRUBI386MODS="$GRUBCOMMONMODS biosdisk gfxterm_background normal ntldr pxe" 28 | GRUBISOMODS='iso9660 usb' 29 | GRUBFONT='unicode' 30 | 31 | # image files 32 | CORE_I386="$LINBOGRUBDIR/$I386/core" 33 | CORE_EFI64="$LINBOGRUBDIR/$EFI64/core" 34 | 35 | # grub.cfg templates 36 | GRUBCFG_TEMPLATE="$LINBOTPLDIR/grub.cfg.pxe" 37 | 38 | # fonts 39 | FONTS="unicode" 40 | 41 | # make cd/usb boot images (efi only) 42 | grub-mknetdir --modules="$GRUBEFIMODS $GRUBISOMODS" -d "$EFI64_DIR" --net-directory="$LINBODIR" --subdir="$SUBDIR" 43 | mv "$CORE_EFI64.efi" "$CORE_EFI64.iso" 44 | 45 | # make special purpose minimal netboot image for i386 46 | grub-mknetdir --fonts="$GRUBFONT" -d "$I386_DIR" --net-directory="$LINBODIR" --subdir="$SUBDIR" 47 | mv "$CORE_I386.0" "$CORE_I386.min" 48 | 49 | # make standard netboot images 50 | grub-mknetdir --fonts="$GRUBFONT" --modules="$GRUBI386MODS" -d "$I386_DIR" --net-directory="$LINBODIR" --subdir="$SUBDIR" 51 | grub-mknetdir --fonts="$GRUBFONT" --modules="$GRUBEFIMODS" -d "$EFI64_DIR" --net-directory="$LINBODIR" --subdir="$SUBDIR" 52 | 53 | # copy remaining files 54 | rsync -a "$I386_DIR/" "$LINBOGRUBDIR/$I386/" 55 | rsync -a "$EFI64_DIR/" "$LINBOGRUBDIR/$EFI64/" 56 | 57 | # copy ipxe files 58 | cp /boot/ipxe.lkrn "$LINBOGRUBDIR" 59 | cp /boot/ipxe.efi "$LINBOGRUBDIR" 60 | -------------------------------------------------------------------------------- /serverfs/srv/linbo/linuxmuster-win/save-activation-status.cmd: -------------------------------------------------------------------------------- 1 | REM Speichert Aktivierungsstatus von Windows und MSOffice 2 | REM thomas@linuxmuster.net 3 | REM 20170908 4 | 5 | 6 | REM Windows 7 | cscript //nologo %SystemRoot%\system32\slmgr.vbs /dli > %SystemDrive%\linuxmuster-win\win_activation_status 8 | 9 | 10 | REM Office 2010 64bit 11 | if exist "%SystemDrive%\Program Files\Microsoft Office\Office14\ospp.vbs" goto office14_64 12 | 13 | REM office 2013 64bit 14 | if exist "%SystemDrive%\Program Files\Microsoft Office\Office15\ospp.vbs" goto office15_64 15 | 16 | REM office 2016 64bit 17 | if exist "%SystemDrive%\Program Files\Microsoft Office\Office16\ospp.vbs" goto office16_64 18 | 19 | REM Office 2010 20 | if exist "%SystemDrive%\Program Files (x86)\Microsoft Office\Office14\ospp.vbs" goto office14 21 | 22 | REM office 2013 23 | if exist "%SystemDrive%\Program Files (x86)\Microsoft Office\Office15\ospp.vbs" goto office15 24 | 25 | REM office 2016 26 | if exist "%SystemDrive%\Program Files (x86)\Microsoft Office\Office16\ospp.vbs" goto office16 27 | 28 | goto ende 29 | 30 | :office14_64 31 | cscript //nologo "%SystemDrive%\Program Files\Microsoft Office\Office14\ospp.vbs" /dstatus > %SystemDrive%\linuxmuster-win\office_activation_status 32 | goto ende 33 | 34 | :office14 35 | cscript //nologo "%SystemDrive%\Program Files (x86)\Microsoft Office\Office14\ospp.vbs" /dstatus > %SystemDrive%\linuxmuster-win\office_activation_status 36 | goto ende 37 | 38 | :office15_64 39 | cscript //nologo "%SystemDrive%\Program Files\Microsoft Office\Office15\ospp.vbs" /dstatus > %SystemDrive%\linuxmuster-win\office_activation_status 40 | goto ende 41 | 42 | :office15 43 | cscript //nologo "%SystemDrive%\Program Files (x86)\Microsoft Office\Office15\ospp.vbs" /dstatus > %SystemDrive%\linuxmuster-win\office_activation_status 44 | goto ende 45 | 46 | :office16_64 47 | cscript //nologo "%SystemDrive%\Program Files\Microsoft Office\Office16\ospp.vbs" /dstatus > %SystemDrive%\linuxmuster-win\office_activation_status 48 | goto ende 49 | 50 | :office16 51 | cscript //nologo "%SystemDrive%\Program Files (x86)\Microsoft Office\Office16\ospp.vbs" /dstatus > %SystemDrive%\linuxmuster-win\office_activation_status 52 | 53 | 54 | :ende 55 | -------------------------------------------------------------------------------- /serverfs/srv/linbo/examples/win11.global.reg: -------------------------------------------------------------------------------- 1 | Windows Registry Editor Version 5.00 2 | 3 | ; linuxmuster.net 7 4 | ; thomas@linuxmuster.net 5 | ; 20250916 6 | 7 | ; to be applied once before domain join and image creation 8 | 9 | ; machine account password may not expire 10 | [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Netlogon\Parameters] 11 | "DisablePasswordChange"=dword:00000001 12 | "MaximumPasswordAge"=dword:000f4240 13 | "RefusePasswordChange"=dword:00000001 14 | "RequireSignOrSeal"=dword:00000001 15 | "RequireStrongKey"=dword:00000001 16 | 17 | ; needed for netlogon + sysvol (SMB hardening Ausnahmen) 18 | [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\NetworkProvider\HardenedPaths] 19 | "\\\\*\\netlogon"="RequireMutualAuthentication=0,RequireIntegrity=0,RequirePrivacy=0" 20 | "\\\\*\\sysvol"="RequireMutualAuthentication=0,RequireIntegrity=0,RequirePrivacy=0" 21 | 22 | ; disable hiberboot 23 | [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Power] 24 | "HiberbootEnabled"=dword:00000000 25 | [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power] 26 | "HiberbootEnabled"=dword:00000000 27 | 28 | ; allow users to install printer drivers 29 | [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrint] 30 | "RestrictDriverInstallationToAdministrators"=dword:00000000 31 | 32 | ; printer rpc compatibility 33 | [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC] 34 | "RpcUseNamedPipeProtocol"=dword:00000001 35 | 36 | [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print] 37 | "RpcAuthnLevelPrivacyEnabled"=dword:00000000 38 | 39 | ; don't show the username of the last login 40 | [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] 41 | "dontdisplaylastusername"=dword:00000001 42 | 43 | ; install win11 on incompatible hardware 44 | [HKEY_CURRENT_USER\SOFTWARE\Microsoft\PCHC] 45 | "UpgradeEligibility"=dword:00000001 46 | 47 | ; bypass tpm and secure boot checks 48 | [HKEY_LOCAL_MACHINE\SYSTEM\Setup\LabConfig] 49 | "BypassTPMCheck"=dword:00000001 50 | "BypassSecureBootCheck"=dword:00000001 51 | "BypassRAMCheck"=dword:00000001 52 | "BypassStorageCheck"=dword:00000001 53 | "BypassCPUCheck"=dword:00000001 54 | "BypassDiskCheck"=dword:00000001 55 | 56 | ; add your custom registry patches below 57 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_patch_registry: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_patch_registry 4 | # thomas@linuxmuster.net 5 | # 20230726 6 | # 7 | 8 | usage(){ 9 | local RC="$1" 10 | echo 11 | echo "Patches windows registry." 12 | echo 13 | echo "Usage:" 14 | echo " linbo_patch_registry [windowspartition] | [help]" 15 | echo 16 | echo "It is assumed that the windows partition is mounted under /mnt or" 17 | echo "specified as the second parameter." 18 | echo 19 | exit "$RC" 20 | } 21 | 22 | 23 | # print help 24 | [ -z "$1" -o "$1" = "help" ] && usage 0 25 | 26 | # get environment 27 | source /usr/share/linbo/shell_functions 28 | echo "### $timestamp $(basename "$0") $@ ###" 29 | 30 | # registryfile to process 31 | regfile="$1" 32 | [ -s "$regfile" ] || usage 1 33 | regtmp="/tmp/$(basename "$regfile")" 34 | mntpnt="/mnt" 35 | 36 | # check specified partition 37 | if [ -n "$2" ]; then 38 | [ -b "$2" ] || usage 1 39 | if ! ismounted "$2" /mnt rw; then 40 | mntpnt="/tmp/mnt" 41 | linbo_mount "$2" "$mntpnt" || usage 1 42 | mounted="yes" 43 | fi 44 | fi 45 | 46 | # hive directory 47 | hive_dir="$mntpnt/Windows/System32/config" 48 | if [ ! -d "$hive_dir" ]; then 49 | echo "$hive_dir does not exist!" 50 | [ -n "$mounted" ] && umount "$mntpnt" 51 | exit 1 52 | fi 53 | 54 | # registry file header 55 | header="Windows Registry Editor Version 5.00" 56 | 57 | # prefix for the created regfiles 58 | prefix="/tmp/reg.$$." 59 | 60 | # replace template with hostname & repair case of registry paths 61 | cp "$regfile" "$regtmp" 62 | sed -i 's|{\$HostName\$}|'"$HOSTNAME"'|g 63 | s|@@hostname@@|'"$HOSTNAME"'|g 64 | s|\\currentcontrolset\\|\\ControlSet001\\|Ig' "$regtmp" 65 | 66 | # split regfile into handy parts 67 | grep ^"[\[\"]" "$regtmp" | csplit -s -z -f "$prefix" - '/^\[/' '{*}' 68 | 69 | # iterate over regfiles 70 | for i in ${prefix}*; do 71 | # add windows registry header 72 | sed -i "1s/^/$header\n\n/" "$i" 73 | branch="$(grep -i ^'\[HKEY' "$i" | awk -F \\\\ '{print $1}' | awk -F \[ '{print $2}')" 74 | hive="$(grep -i ^'\[HKEY' "$i" | awk -F \\\\ '{print $2}')" 75 | hive_file="$hive_dir/$(echo "$hive" | tr a-z A-Z)" 76 | if [ ! -s "$hive_file" ]; then 77 | echo "Skipping invalid hive $(grep -i ^'\[HKEY' "$i")." 78 | continue 79 | fi 80 | reged -I -C "$hive_file" "$branch\\$hive" "$i" 81 | done 82 | 83 | [ -n "$mounted" ] && umount "$mntpnt" 84 | 85 | exit "$?" 86 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_format: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_format 4 | # thomas@linuxmuster.net 5 | # 20250423 6 | # 7 | 8 | usage(){ 9 | local RC="$1" 10 | echo 11 | echo "Formats a partition defined either by start.conf no. or by devicename." 12 | echo 13 | echo "Usage:" 14 | echo " linbo_format <#> | | [help]" 15 | echo 16 | exit "$RC" 17 | } 18 | 19 | # print help 20 | [ -z "$1" -o "$1" = "help" ] && usage 0 21 | 22 | # get environment 23 | source /usr/share/linbo/shell_functions 24 | echo "### $timestamp $(basename "$0") $@ ###" 25 | 26 | # partition number given 27 | if isinteger "$1"; then 28 | partnr="$1" 29 | # partition given 30 | else 31 | partnr="$(partnr_startconf "$1")" 32 | fi 33 | 34 | # get partition parameters 35 | source $(ls /conf/part.$partnr.* 2> /dev/null) &> /dev/null || usage 1 36 | 37 | # create label option per filesystem 38 | if [ -n "$label" ]; then 39 | case "$fstype" in 40 | swap|ext2|ext3|ext4|[Nn][Tt][Ff][Ss]*) label="-L $label" ;; 41 | *[Ff][Aa][Tt]*) label="-n $label" ;; 42 | *) ;; 43 | esac 44 | fi 45 | 46 | # create format command per filesystem 47 | case "$fstype" in 48 | [Ss][Ww][Aa][Pp]) fcmd="mkswap $label $dev" ;; 49 | [Rr][Ee][Ii][Ss][Ee][Rr][Ff][Ss]) fcmd="mkreiserfs $label -f -f $dev" ;; 50 | [Ee][Xx][Tt][234]) fcmd="mkfs.$fstype -F $label $dev" ;; 51 | [Nn][Tt][Ff][Ss]) fcmd="mkfs.ntfs $label -Q $dev" ;; 52 | *[Ff][Aa][Tt]*) fcmd="mkdosfs $label -F 32 $dev" ;; 53 | *) echo "Unknown fstype!" ; exit 1 ;; 54 | esac 55 | 56 | # start formatting 57 | echo -n "Formatting $dev with $fstype ..." 58 | [ -b "$dev" ] || sleep 5 59 | mount | grep -qw ^"$dev" && umount "$dev" 60 | $fcmd ; RC="$?" 61 | if [ "$RC" != "0" ]; then 62 | echo -n " Partition is not yet ready - trying again ..." 63 | sleep 2 64 | $fcmd ; RC="$?" 65 | fi 66 | if [ "$RC" = "0" ]; then 67 | echo " OK!" 68 | # issue 85 69 | [ -n "$label" ] && udevadm trigger 70 | # install linbo and grub in cache 71 | if [ "$cache" = "$dev" ]; then 72 | rm -f /tmp/.* &> /dev/null 73 | linbo_update &> /dev/null 74 | linbo_update_gui &> /dev/null 75 | mk_boot 76 | if linbo_mountcache &> /dev/null; then 77 | echo "Saving start.conf in cache." 78 | cp /start.conf /cache 79 | # save hostname for offline use 80 | echo "Saving hostname $FQDN in cache." 81 | echo "$FQDN" > /cache/hostname 82 | fi 83 | fi 84 | else 85 | echo " Failed!" 86 | fi 87 | 88 | exit "$RC" 89 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_upload: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_upload 4 | # thomas@linuxmuster.net 5 | # 20250423 6 | # 7 | 8 | usage(){ 9 | local RC="$1" 10 | echo 11 | echo "Uploads a file from the cache to the server. Linbo user password is necessary." 12 | echo 13 | echo "Usage:" 14 | echo " linbo_upload | [help]" 15 | echo 16 | echo "For compatibility reasons legacy options are also accepted:" 17 | echo " linbo_upload " 18 | echo 19 | exit "$RC" 20 | } 21 | 22 | # print help 23 | [ -z "$1" -o "$1" = "help" ] && usage 0 24 | 25 | # get environment 26 | source /usr/share/linbo/shell_functions 27 | 28 | # do not execute in localmode 29 | if localmode; then 30 | echo "Local mode detected, no upload possible!" 31 | exit 0 32 | fi 33 | 34 | # check params with legacy compatibility (serverip user password cache file) 35 | if [ -z "$1" ] || validip "$1"; then shift; fi 36 | [ -z "$1" -o "$1" = "linbo" ] && shift 37 | LINBOUSER="linbo" 38 | export RSYNC_PASSWORD="$1" ; shift 39 | [ -z "$1" -o -b "$1" ] && shift 40 | FILE="$1" 41 | 42 | echo "### $timestamp $(basename "$0") $FILE ###" 43 | 44 | linbo_mountcache &> /dev/null || exit 1 45 | cd /cache 46 | 47 | RC="0" 48 | if [ -e "$FILE" ]; then 49 | filelist="$FILE" 50 | ext="${FILE##*.}" 51 | # expand filelist in case of qcow2|qdiff file 52 | #echo "### filetype: $ext ###" 53 | if [ "$ext" = "qcow2" -o "$ext" = "qdiff" ]; then 54 | imagebase="${FILE%.$ext}" 55 | subdir="images/$imagebase/" 56 | for item in info desc torrent; do 57 | [ -s "${FILE}.${item}" ] && filelist="$filelist ${FILE}.${item}" 58 | done 59 | fi 60 | echo "Uploading $filelist to $LINBOSERVER ..." 61 | for item in $filelist; do 62 | interruptible rsync --skip-compress="$RSYNC_SKIP_COMPRESS" --log-file=/tmp/rsync.log --progress -Ha $RSYNC_PERMISSIONS --partial "$item" "$LINBOUSER@$LINBOSERVER::linbo-upload/${subdir}${item}" 63 | # because return code is always 0 this is necessary 64 | grep -q " rsync --skip-compress="$RSYNC_SKIP_COMPRESS" error" /tmp/rsync.log && RC=1 65 | cat /tmp/rsync.log >> /tmp/linbo.log 66 | rm /tmp/rsync.log 67 | [ "$RC" = "0" ] || break 68 | done 69 | else 70 | RC=1 71 | echo "File $FILE does not exist." 72 | fi 73 | 74 | if [ "$RC" = "0" ]; then 75 | echo "Successfully uploaded $filelist to $LINBOSERVER." 76 | else 77 | echo "Failed to upload $filelist to $LINBOSERVER." 78 | fi 79 | 80 | cd / 81 | sendlog 82 | 83 | exit "$RC" 84 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_label: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_label 4 | # thomas@linuxmuster.net 5 | # 20250425 6 | # 7 | 8 | 9 | #### functions begin #### 10 | 11 | usage(){ 12 | local RC="$1" 13 | echo 14 | echo "Labels all partitions or only one defined either by start.conf position" 15 | echo "number or by devicename." 16 | echo 17 | echo "Usage: linbo_label | <#> | | [help]" 18 | echo 19 | exit "$RC" 20 | } 21 | 22 | 23 | # mk_label partition 24 | mk_label(){ 25 | if [ -b "$1" ]; then 26 | local dev="$1" 27 | else 28 | echo "Partition $dev is no block device!" return 29 | fi 30 | local fstype="$(fstype_startconf "$dev")" 31 | if [ -z "$fstype" ]; then 32 | echo "Partition $dev has no fstype!" return 33 | fi 34 | local label="$(partlabel_startconf "$dev")" 35 | if [ -z "$label" ]; then 36 | echo "Partition $dev has no label!" return 37 | fi 38 | local RC="0" 39 | case "$fstype" in 40 | swap) mkswap -L "$label" "$dev" || RC=1 ;; 41 | ext2|ext3|ext4) e2label "$dev" "$label" || RC=1 ;; 42 | [Nn][Tt][Ff][Ss]*) ntfslabel -f "$dev" "$label" || RC=1 ;; 43 | *[Ff][Aa][Tt]*) fatlabel "$dev" "$label" 2> /dev/null || RC=1 ;; 44 | *) RC="1" ;; 45 | esac 46 | msg="Partition $dev - fstype $fstype --> label $label ... " 47 | if [ "$RC" = "0" ]; then 48 | echo "$msg OK!" 49 | else 50 | echo "$msg Failed!" 51 | fi 52 | return "$RC" 53 | } 54 | 55 | #### functions end #### 56 | 57 | 58 | # get environment 59 | source /usr/share/linbo/shell_functions 60 | echo "### $timestamp $(basename "$0") $@ ###" 61 | 62 | # print help 63 | [ -z "$1" -o "$1" = "help" ] && usage 0 64 | 65 | echo "linbo_label $@" 66 | FAILED="/tmp/.label.failed" 67 | rm -f "$FAILED" 68 | 69 | # partition number is given 70 | if isinteger "$1"; then 71 | source "$(ls /conf/part.$1.*)" &> /dev/null || usage 1 72 | mk_label "$dev" 2>&1 || usage 1 73 | 74 | # partition is given 75 | elif [ -b "$1" ]; then 76 | mk_label "$1" || usage 1 77 | 78 | # all partitions 79 | elif [ "$1" = "all" ]; then 80 | ls -1 /conf/part.* | awk -F\. '{print $3}' | sed 's|^|/dev/|' | while read dev; do 81 | mk_label "$dev" 2>&1 || touch "$FAILED" 82 | done 83 | 84 | else 85 | usage 1 86 | fi 87 | 88 | # trigger label recognition 89 | udevadm trigger 90 | 91 | if [ ! -e /dev/disk/by-label ]; then 92 | echo "No partition labels found!" touch "$FAILED" 93 | fi 94 | 95 | sendlog 96 | 97 | if [ -e "$FAILED" ]; then 98 | exit 1 99 | fi 100 | -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/make-linbo-iso.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # create bootable linbo isos 4 | # 5 | # thomas@linuxmuster.net 6 | # 20231122 7 | # GPL V3 8 | # 9 | 10 | # read linuxmuster environment 11 | source /usr/share/linuxmuster/environment.sh || exit 1 12 | 13 | curdir="$(pwd)" 14 | LINBOISO="$LINBODIR/linbo.iso" 15 | 16 | GRUBDIR="$LINBODIR/boot/grub" 17 | GRUBEFI64DIR="$GRUBDIR/x86_64-efi" 18 | GRUBBIOSDIR="$GRUBDIR/i386-pc" 19 | CORE64EFI="$GRUBEFI64DIR/core.iso" 20 | 21 | ISOCACHE="$LINBOCACHEDIR/iso" 22 | mkdir -p "$ISOCACHE" 23 | GRUBPREFIX="boot/grub" 24 | GRUBBIOSTGT="$GRUBPREFIX/i386-pc" 25 | GRUBTHEMETXT="$GRUBPREFIX/themes/linbo/theme.txt" 26 | 27 | GRUBCFG="$LINBOTPLDIR/grub.cfg.iso" 28 | LINBOCFG="$LINBOTPLDIR/linbo.cfg.iso" 29 | 30 | ISOLINUXCFG="$LINBOTPLDIR/isolinux" 31 | ISOLINUXSRC="/usr/lib/ISOLINUX" 32 | ISOLINUXBIN="$ISOLINUXSRC/isolinux.bin" 33 | ISOHDPFX="$ISOLINUXSRC/isohdpfx.bin" 34 | SYSLINUXSRC="/usr/lib/syslinux/modules/bios" 35 | SYSLINUXMODS="config ifcpu64 ldlinux libcom32 libutil vesamenu" 36 | 37 | EFIIMGSIZE="256M" 38 | EFIMOUNT="/var/tmp/efi.$$" 39 | mkdir -p "$EFIMOUNT" 40 | 41 | cd "$ISOCACHE" 42 | 43 | # clean cache 44 | rm -f efiboot.img 45 | rm -rf EFI 46 | rm -rf BOOT 47 | rm -rf isolinux 48 | 49 | # create iso content 50 | mkdir -p "$GRUBPREFIX" 51 | rsync -a -L --delete --delete-excluded --exclude=*.cfg* --exclude=spool "$GRUBDIR/" "$GRUBPREFIX/" 52 | cp "$GRUBCFG" "$GRUBPREFIX/grub.cfg" 53 | cp "$LINBOCFG" "$GRUBPREFIX/linbo.cfg" 54 | for i in linbo64 linbofs64 linbo_gui64_7.tar.lz linbo-version; do 55 | cp "$LINBODIR/$i" "$ISOCACHE" 56 | done 57 | cp "$GRUBDIR"/ipxe.* "$ISOCACHE" 58 | sed -i 's|"LINBO Start-Menue"|"LINBO Start-Menue (EFI-Modus)"|' "$GRUBTHEMETXT" 59 | 60 | # isolinux stuff 61 | mkdir -p isolinux 62 | cp "$ISOLINUXBIN" isolinux 63 | for i in $SYSLINUXMODS; do 64 | cp "$SYSLINUXSRC/$i.c32" isolinux 65 | done 66 | cp isolinux/ldlinux.c32 . 67 | cp "$ISOLINUXCFG"/*.cfg isolinux 68 | 69 | # make efi boot image 70 | dd if=/dev/zero of=efiboot.img bs=1 count=0 seek="$EFIIMGSIZE" 71 | mkdosfs efiboot.img 72 | mount -o loop efiboot.img "$EFIMOUNT" 73 | mkdir -p "$EFIMOUNT/EFI/BOOT" 74 | cp "$CORE64EFI" "$EFIMOUNT/EFI/BOOT/BOOTx64.EFI" 75 | cp "$CORE64EFI" "$EFIMOUNT/EFI/BOOT/grubx64.efi" 76 | cp -r boot "$EFIMOUNT" 77 | cp linbo* "$EFIMOUNT" 78 | mkdir -p EFI/BOOT 79 | cp "$EFIMOUNT/EFI/BOOT/"* EFI/BOOT/ 80 | umount "$EFIMOUNT" 81 | rm -rf "$EFIMOUNT" 82 | 83 | # create hybrid iso file 84 | xorriso -as mkisofs \ 85 | -o "$LINBOISO" \ 86 | -isohybrid-mbr "$ISOHDPFX" \ 87 | -c isolinux/boot.cat \ 88 | -b isolinux/isolinux.bin \ 89 | -no-emul-boot -boot-load-size 4 -boot-info-table \ 90 | -eltorito-alt-boot \ 91 | -e efiboot.img \ 92 | -no-emul-boot \ 93 | -isohybrid-gpt-basdat \ 94 | . 95 | 96 | isohybrid --uefi "$LINBOISO" 97 | -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/rsync-pre-upload.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # (C) Klaus Knopper 2007 4 | # Pre-Upload script for rsync/LINBO: 5 | # Moves old version of file out of the way, 6 | # and installs a new version. 7 | # 8 | # thomas@linuxmuster.net 9 | # 20250326 10 | # GPL v3 11 | # 12 | 13 | # read in linuxmuster specific environment 14 | source /usr/share/linuxmuster/helperfunctions.sh || exit 1 15 | 16 | # Debug 17 | LOGFILE="$RSYNC_MODULE_PATH/log/rsync-pre-upload.log" 18 | exec >>$LOGFILE 2>&1 19 | #echo "$0 $*, Variables:" ; set 20 | 21 | echo "### rsync pre upload begin: $(date) ###" 22 | 23 | # Needs Version 2.9 of rsync 24 | [ -n "$RSYNC_PID" ] || exit 0 25 | 26 | FILE="${RSYNC_MODULE_PATH}/${RSYNC_REQUEST##$RSYNC_MODULE_NAME/}" 27 | DIRNAME="$(dirname $FILE)" 28 | BASENAME="$(basename $FILE)" 29 | BACKUP="${FILE}.BAK" 30 | PIDFILE="/tmp/rsync.$RSYNC_PID" 31 | 32 | # Save filename for post-script and exit, if it is a new host data file 33 | EXT="${BASENAME##*.}" 34 | 35 | # fetch host & domainname 36 | do_rsync_hostname 37 | 38 | echo "HOSTNAME: $RSYNC_HOST_NAME" 39 | echo "IP: $RSYNC_HOST_ADDR" 40 | echo "RSYNC_REQUEST: $RSYNC_REQUEST" 41 | echo "FILE: $FILE" 42 | echo "PIDFILE: $PIDFILE" 43 | echo "EXT: $EXT" 44 | 45 | if [ "$EXT" = "new" ]; then 46 | [ -e "$PIDFILE" ] && rm -f "$PIDFILE" 47 | echo "$FILE" > "$PIDFILE" 48 | exit 0 49 | fi 50 | 51 | # create image directory in case of qcow2 52 | [ "$EXT" = "qcow2" -o "$EXT" = "qdiff" ] && mkdir -p "$DIRNAME" 53 | 54 | # Bailout with error if backup file exists (another process is uploading) 55 | if [ -e "$BACKUP" ]; then 56 | # check if there is another upload for the same file 57 | TMPFILE="$(ls -t ${DIRNAME}/.${BASENAME}.* 2> /dev/null | head -1)" 58 | if [ -n "$TMPFILE" ]; then 59 | # check if file grows 60 | size1="$(ls -l $TMPFILE | awk '{ print $5 }')" 61 | sleep 5 62 | size2="$(ls -l $TMPFILE | awk '{ print $5 }')" 63 | # if file is not growing remove it 64 | if [ "$size1" = "$size2" ]; then 65 | echo "Removing stale temp file $TMPFILE!" 66 | rm -f "$TMPFILE" 67 | else 68 | echo "Backup file exists for ${FILE##*/}, another upload in progress?" >&2 69 | exit 1 70 | fi 71 | fi 72 | fi 73 | if [ -e "$BACKUP" ]; then 74 | echo "Removing stale backup file $BACKUP!" 75 | rm -f "$BACKUP" 76 | fi 77 | 78 | # Create backups, if file exists, otherwise save only the filename. 79 | [ -d "$FILE" ] && exit 0 80 | if [ -e "$FILE" ]; then 81 | # Move file out of the way 82 | mv -fv "$FILE" "$BACKUP" ; RC="$?" 83 | else 84 | RC=0 85 | fi 86 | 87 | # Save filename for post-script and exit 88 | [ "$RC" = "0" ] && { rm -f "$PIDFILE" ; echo "$FILE" > "$PIDFILE"; } 89 | 90 | echo "RC: $RC" 91 | echo "### rsync pre upload end: $(date) ###" 92 | 93 | exit $RC 94 | # post-script will change the name of the backup to a more meaningful one, 95 | # or rename it back in case of a failed download. 96 | -------------------------------------------------------------------------------- /linbofs/linbo.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # linbo.sh - Start Linbo GUI (with optional debug shell before) 3 | # This is a busybox 1.1.3 script 4 | # (C) Klaus Knopper 2007 5 | # License: GPL V2 6 | # thomas@linuxmuster.net 7 | # 20250924 8 | # 9 | 10 | # Reset fb color mode 11 | RESET="]R" 12 | # Clear and reset Screen 13 | CLEAR="c" 14 | 15 | # get environment 16 | source /usr/share/linbo/shell_functions 17 | 18 | # plymouth 19 | if [ -x "/sbin/plymouthd" -a -n "$SPLASH" ]; then 20 | if ! plymouth --ping &> /dev/null; then 21 | plymouthd --mode=boot --tty="/dev/tty2" --attach-to-session 22 | plymouth show-splash message --text="$LINBOFULLVER" 23 | fi 24 | fi 25 | 26 | # update & extract linbo_gui 27 | linbo_update_gui &> /dev/null 28 | 29 | # quit plymouth 30 | plymouth quit 31 | 32 | # DEBUG mode 33 | if [ -n "$DEBUG" ]; then 34 | for item in /tmp/linbo_gui.*.log; do 35 | if [ -s "$item" ]; then 36 | echo "There is a logfile from a previous start of linbo_gui in $item:" 37 | cat "$item" 38 | echo -n "Press enter key to continue." 39 | read dummy 40 | rm -f "$item" 41 | fi 42 | done 43 | echo "Starting DEBUG shell, leave with 'exit'." 44 | sendlog 45 | ash >/dev/tty1 2>&1 < /dev/tty1 46 | 47 | # Start LINBO GUI 48 | elif [ -s /usr/bin/linbo_gui ]; then 49 | 50 | echo "### $timestamp linbo_gui ###" 51 | sendlog 52 | export XKB_DEFAULT_LAYOUT=de 53 | /usr/bin/linbo_gui -platform linuxfb 54 | 55 | else # handle missing gui problem 56 | 57 | # autostart if requested in start.conf 58 | linbo_autostart 59 | clear 60 | export myname="| Name: $HOSTNAME" 61 | source /.profile 62 | 63 | # print console menu 64 | if [ -s /conf/menu ]; then 65 | # print menu file, filter commands 66 | sed 's|] .* [1-9]|]|g' /conf/menu 67 | sendlog &> /dev/null 68 | while true; do 69 | answer=$(stty -icanon -echo; dd ibs=1 count=1 2>/dev/null) 70 | case "$answer" in 71 | c|C) linbo_login ;; 72 | r|R) /sbin/reboot ;; 73 | s|S) /sbin/poweroff ;; 74 | *) # interpret the commands assigned to the menu items 75 | isinteger $answer || continue 76 | [ -s /conf/menu ] || continue 77 | menucmd="$(grep "\[$answer\]" /conf/menu | awk '{print $2, $3}')" 78 | cmd="$(echo "$menucmd" | awk '{print $1}')" 79 | linbocmd="linbo_${cmd}" 80 | [ -z "$(which "$linbocmd")" ] && continue 81 | osnr="$(echo "$menucmd" | awk '{print $2}')" 82 | [ -s "/conf/os.$osnr" ] || continue 83 | $linbocmd $osnr || continue 84 | ;; 85 | esac 86 | done 87 | # no menu, message only 88 | else 89 | echo "----------------------------------------------" 90 | echo " This LINBO client is in remote control mode." 91 | echo "----------------------------------------------" 92 | echo 93 | while true; do 94 | answer=$(stty -icanon -echo; dd ibs=1 count=1 2>/dev/null) 95 | echo -n "X" 96 | done 97 | fi 98 | 99 | fi 100 | -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/rsync-post-download.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Post-Download script for rsync/LINBO 4 | # thomas@linuxmuster.net 5 | # 20250418 6 | # 7 | 8 | # read in paedml specific environment 9 | source /usr/share/linuxmuster/helperfunctions.sh || exit 1 10 | 11 | # Debug 12 | LOGFILE="$LINBOLOGDIR/rsync-post-download.log" 13 | exec >>$LOGFILE 2>&1 14 | #echo "$0 $*, Variables:" ; set 15 | 16 | echo "### rsync post download begin: $(date) ###" 17 | 18 | # Needs Version 2.9 of rsync 19 | [ -n "$RSYNC_PID" ] || exit 0 20 | 21 | PIDFILE="/tmp/rsync.$RSYNC_PID" 22 | 23 | # Check for pidfile, exit if nothing to do 24 | [ -s "$PIDFILE" ] || exit 0 25 | 26 | # read file created by pre-upload script 27 | FILE="$(<$PIDFILE)" 28 | BASENAME="$(basename "$FILE")" 29 | EXT="${BASENAME##*.}" 30 | 31 | # fetch host & domainname 32 | do_rsync_hostname 33 | 34 | echo "HOSTNAME: $RSYNC_HOST_NAME" 35 | echo "IP: $RSYNC_HOST_ADDR" 36 | echo "RSYNC_REQUEST: $RSYNC_REQUEST" 37 | echo "FILE: $FILE" 38 | echo "PIDFILE: $PIDFILE" 39 | echo "EXT: $EXT" 40 | 41 | # handle request for obsolete menu.lst 42 | if stringinstring "menu.lst." "$FILE"; then 43 | CACHE="$(grep -i ^cache "$LINBODIR/start.conf.$EXT" | awk -F\= '{ print $2 }' | awk '{ print $1 }' | tail -1)" 44 | [ -n "$CACHE" ] && EXT="upgrade" 45 | fi 46 | 47 | # recognize download request of local grub.cfg 48 | stringinstring ".grub.cfg" "$FILE" && EXT="grub-local" 49 | 50 | case "$EXT" in 51 | 52 | # remove linbocmd file after download 53 | cmd) 54 | echo "Removing onboot linbocmd file $FILE." 55 | rm -f "$FILE" 56 | ;; 57 | 58 | # remove dummy logfile after download 59 | log) 60 | echo "Removing dummy logfile $FILE." 61 | rm -f "$FILE" 62 | ;; 63 | 64 | # machine password file 65 | mpw) 66 | if [ -e "$FILE" ]; then 67 | echo "Removing machine password file $FILE." 68 | rm -f "$FILE" 69 | fi 70 | ;; 71 | 72 | winkey) 73 | if [ -e "$FILE" ]; then 74 | echo "Removing windows product key file $FILE." 75 | rm -f "$FILE" 76 | fi 77 | ;; 78 | 79 | # handle server based grub reboot in case of remote cache 80 | reboot) 81 | # get reboot parameters from filename 82 | rebootstr="$(echo "$FILE" | sed -e "s|^$LINBODIR/||")" 83 | bootpart="$(echo "$rebootstr" | awk -F\# '{ print $1 }' )" 84 | kernel="$(echo "$rebootstr" | awk -F\# '{ print $2 }' )" 85 | initrd="$(echo "$rebootstr" | awk -F\# '{ print $3 }' )" 86 | append="$(echo "$rebootstr" | awk -F\# '{ print $4 }' )" 87 | # grubenv template 88 | grubenv_tpl="$LINBOTPLDIR/grubenv.reboot" 89 | # create fifo socket 90 | fifo="$LINBODIR/boot/grub/spool/${compname}.reboot" 91 | rm -f "$fifo" 92 | mkfifo "$fifo" 93 | # create screen session 94 | screen -dmS "${compname}.reboot" "$LINBOSHAREDIR/reboot_pipe.sh" "$bootpart" "$kernel" "$initrd" "$append" "$grubenv_tpl" "$fifo" 95 | ;; 96 | 97 | grub-local) 98 | if [ -e "$FILE" ]; then 99 | echo "Removing $FILE." 100 | rm -f "$FILE" 101 | fi 102 | ;; 103 | 104 | *) ;; 105 | 106 | esac 107 | 108 | rm -f "$PIDFILE" 109 | -------------------------------------------------------------------------------- /serverfs/srv/linbo/examples/start.conf.win10: -------------------------------------------------------------------------------- 1 | # LINBO start.conf, example for windows 10 2 | # DON'T EDIT THIS FILE! MAKE A COPY AND ADAPT THE VALUES TO YOUR NEEDS! 3 | # operating system on partition 1 4 | # cache on partition 2 5 | # data on partition 3 6 | 7 | [LINBO] # global section 8 | Group = group # name of the hardware group 9 | Cache = /dev/sda2 # cache partition 10 | RootTimeout = 600 # logout from admin console after 600 secs 11 | AutoPartition = no # no partition repair during LINBO startup 12 | AutoFormat = no # no formatting of all partitions during LINBO startup 13 | AutoInitCache = no # no initial cache setup during LINBO startup 14 | DownloadType = torrent # image download method (torrent|multicast|rsync) 15 | GuiDisabled = no # disable gui 16 | UseMinimalLayout = no # gui layout style 17 | Locale = de-de # gui locale 18 | KernelOptions = quiet splash # linbo kernel options, space separated 19 | #KernelOptions = acpi=noirq irqpoll # linbo kernel options example for use with acpi problems 20 | #KernelOptions = server=10.0.0.5 # different pxe server ip, (needs device import to be activated) 21 | 22 | [Partition] # partition section (operating system) 23 | Dev = /dev/sda1 # device name of the partition 24 | Label = windows # partition label 25 | Size = 50G # partition size 50G, will use kiB if no unit (M, G or T) is set 26 | Id = 7 # partition id (7 = ntfs) 27 | FSType = ntfs # filesystem ntfs 28 | Bootable = yes # set bootable flag yes 29 | 30 | [Partition] # partition section (cache) 31 | Dev = /dev/sda2 # device name of the partition 32 | Label = cache # partition label 33 | Size = 50G # partition size 50G 34 | Id = 83 # partition id (83 = linux) 35 | FSType = ext4 # filesystem ext4 36 | Bootable = yes # set bootable flag yes 37 | 38 | [Partition] # partition section (data) 39 | Label = data # partition label 40 | Dev = /dev/sda3 # device name of the partition 41 | Size = # partition size (no value = remaining space of the disk) 42 | Id = 7 # partition id (7 = ntfs) 43 | FSType = ntfs # filesystem ntfs 44 | Bootable = no # set bootable flag no 45 | 46 | [OS] # os section 47 | Name = Windows 10 # os name 48 | Description = Windows 10 1903 # detailed description of os 49 | IconName = win10.svg # icon filename in /srv/linbo/icons 50 | BaseImage = win10.qcow2 # filename of main image (extension .qcow2) 51 | Root = /dev/sda1 # root partition of the os 52 | Kernel = auto # auto for windows 53 | Initrd = # empty for windows 54 | Append = # empty for windows 55 | StartEnabled = yes # show start button 56 | SyncEnabled = yes # show sync+start button 57 | NewEnabled = yes # show new+start button 58 | Autostart = no # automatic start of os (yes|no) 59 | AutostartTimeout = 5 # timeout in secs for user to cancel automatic start 60 | DefaultAction = sync # default action on automatic start: start|sync|new 61 | -------------------------------------------------------------------------------- /serverfs/usr/sbin/linbo-multicast: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | # 3 | # thomas@linuxmuster.net 4 | # 20250326 5 | # 6 | 7 | DESC="tmux multicast session" 8 | 9 | # lmn7 specific paths 10 | source /usr/share/linuxmuster/helperfunctions.sh || exit 1 11 | INTERFACE="$(LANG=C ip route show | grep ^default | awk '{ print $5 }')" 12 | SERVERIP="$serverip" 13 | DAEMON=$LINBOSHAREDIR/linbo-mcasthelper.sh 14 | 15 | # Gracefully exit if the package has been removed. 16 | test -x $DAEMON || exit 0 17 | 18 | # read cmdline 19 | action="$1" 20 | 21 | # default values for udpcast 22 | PORTBASE=9000 23 | MINCLIENTS=16 24 | MINSECONDS=60 25 | MAXSECONDS=90 26 | 27 | # override values for udpcast 28 | . /etc/default/linbo-multicast || exit 1 29 | 30 | # path to multicast filelist 31 | MULTICASTLIST=$LINBODIR/multicast.list 32 | 33 | images="$(find "$LINBODIR" -maxdepth 1 -name "*.cloop" ; \ 34 | find "$LINBOIMGDIR" -maxdepth 2 -name "*.q[cd][oi][wf][2f]")" 35 | 36 | create_multicast_list() { 37 | echo -n "Creating multicast.list" 38 | local i 39 | local image 40 | local p 41 | [ -e "$MULTICASTLIST" ] && mv $MULTICASTLIST $MULTICASTLIST.old 42 | [ -e "${MULTICASTLIST}.tmp" ] && rm -f "${MULTICASTLIST}.tmp" 43 | p=$PORTBASE 44 | for i in $images; do 45 | image="$(basename "$i")" 46 | echo "$image $SERVERIP:$p" >> $MULTICASTLIST 47 | echo "$i" "$SERVERIP:$p" >> ${MULTICASTLIST}.tmp 48 | p=$(( $p + 2 )) 49 | done 50 | echo . 51 | } 52 | 53 | start() { 54 | if [ -z "$images" ]; then 55 | echo "There exist no images yet!" 56 | rm -f "${MULTICASTLIST}*" 57 | exit 0 58 | fi 59 | 60 | create_multicast_list 61 | 62 | local imgdir 63 | local imgfile 64 | local session 65 | while read file serverport relax; do 66 | port="${serverport##*:}" 67 | if [ -s "$file" ]; then 68 | 69 | imgdir="$(dirname "$file")" 70 | imgfile="$(basename "$file")" 71 | session="${imgfile//./_}_mcast" 72 | cd "$imgdir" 73 | 74 | # start daemon stuff 75 | echo -n "Starting $DESC $session ... " 76 | 77 | if linbo-multicast status | grep -qw "$session"; then 78 | echo "already running. Skipped!" 79 | continue 80 | fi 81 | 82 | LOGFILE="$LINBODIR/log/${session}.log" 83 | 84 | tmux new -ds "$session" "$DAEMON $INTERFACE $port $MINCLIENTS $MINSECONDS $MAXSECONDS $imgfile $LOGFILE ; exec $SHELL" 85 | sleep 1 86 | if linbo-multicast status | grep -qw "$session"; then 87 | RC=0 88 | echo "done!" 89 | else 90 | RC=1 91 | echo "failed!" 92 | fi 93 | 94 | fi 95 | done < "${MULTICASTLIST}.tmp" 96 | rm -f "${MULTICASTLIST}.tmp" 97 | } 98 | 99 | stop(){ 100 | local session 101 | linbo-multicast status | awk -F\: '{print $1}' | while read session; do 102 | echo -n "Stopping $DESC $session ... " 103 | tmux kill-session -t "$session" ; RC="$?" 104 | if [ "$RC" = "0" ]; then 105 | echo "done!" 106 | else 107 | echo "failed!" 108 | fi 109 | done 110 | } 111 | 112 | status(){ 113 | tmux list-sessions | grep _mcast 114 | } 115 | 116 | case "$action" in 117 | start) start ;; 118 | stop) stop ;; 119 | restart) 120 | stop 121 | start ;; 122 | status) status ;; 123 | *) 124 | echo "Usage: $0 {start|stop|restart|status}" >&2 125 | exit 1 ;; 126 | esac 127 | 128 | exit 0 129 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_split_startconf: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # split start.conf in machine parseable chunks 4 | # thomas@linuxmuster.net 5 | # 20250924 6 | # 7 | 8 | 9 | # get environment 10 | source /usr/share/linbo/shell_functions 11 | echo "### $timestamp $(basename "$0") ###" 12 | 13 | # check for complete start.conf 14 | if grep -qi ^'\[os\]' /start.conf; then 15 | [ -z "$QUIET" ] && echo "Splitting start.conf to /conf." 16 | else 17 | [ -z "$QUIET" ] && echo "Not splitting minimal start.conf." 18 | exit 19 | fi 20 | 21 | prefix="/tmp/start.conf." 22 | pc=0 23 | oc=0 24 | 25 | # replace uniform device names with real ones 26 | grep -o /dev/disk\[0-9\]p\[0-9\]\* /start.conf | sort -ur | while read item; do 27 | sed -i "s|$item|$(get_real_partname "$item")|g" /start.conf 28 | done 29 | 30 | # split sections, remove comments 31 | grep ^"[\[a-zA-Z]" /start.conf | sed 's|# .*||' | awk '{$1=$1};1' | csplit -s -z -f "$prefix" - '/^\[/' '{*}' 32 | 33 | # where to place the chunks 34 | rm -rf /conf 35 | mkdir -p /conf 36 | 37 | # process chunks 38 | for item in "$prefix"*; do 39 | section="$(grep ^"\[" "$item" | awk -F\[ '{print $2}' | awk -F\] '{print $1}' | tr A-Z a-z)" 40 | case "$section" in 41 | linbo) cfgfile="/conf/linbo" ;; 42 | partition) 43 | pc=$(( pc + 1 )) 44 | dev="$(grep -iw ^dev "$item" | awk -F\= '{print $2}' | awk '{$1=$1};1')" 45 | cfgfile="/conf/part.$pc.${dev/\/dev\//}" 46 | ;; 47 | os) 48 | oc=$(( oc + 1 )) 49 | cfgfile="/conf/os.$oc" 50 | ;; 51 | *) continue ;; 52 | esac 53 | # write chunk 54 | [ -z "$QUIET" ] && echo " * $(basename $cfgfile)" 55 | grep -v ^"\[" "$item" | sed -e 's|[ ]*=[ ]*|="|' | awk -F= '{ st = index($0,"=");print tolower($1) "=" substr($0,st+1) "\""}' > "$cfgfile" 56 | done 57 | 58 | # write menufile for nogui mode 59 | [ -s /conf/linbo ] && source /conf/linbo 60 | rm -f /conf/menu 61 | if [ -n "$group" -a -n "$NOGUI" -a -z "$NOMENU" ]; then 62 | echo "----------------------------------------------" > /conf/menu 63 | echo " Console boot menu of group $group" >> /conf/menu 64 | echo "----------------------------------------------" >> /conf/menu 65 | # iterate start.conf os items and create menu entries and according start commands 66 | count=0 67 | for item in /conf/os.*; do 68 | [ -s "$item" ] || continue 69 | name="" 70 | source "$item" 71 | [ -z "$name" ] && continue 72 | osnr="${item#*.}" 73 | # create menu entry for start 74 | if [ "$startenabled" = "yes" -o -z "$startenabled" ]; then 75 | count=$(( count + 1 )) 76 | echo " [$count] start $osnr Start $name" >> /conf/menu 77 | fi 78 | # create menu entry for sync & start 79 | if [ "$syncenabled" = "yes" -o -z "$syncenabled" ]; then 80 | count=$(( count + 1 )) 81 | echo " [$count] syncstart $osnr Sync & start $name" >> /conf/menu 82 | fi 83 | # create menu entry for new & start 84 | if [ "$newenabled" = "yes" -o -z "$newenabled" ]; then 85 | count=$(( count + 1 )) 86 | echo " [$count] forcesyncstart $osnr New & start $name" >> /conf/menu 87 | fi 88 | done 89 | echo "----------------------------------------------" >> /conf/menu 90 | echo " [C] Console" >> /conf/menu 91 | echo " [R] Reboot" >> /conf/menu 92 | echo " [S] Shutdown" >> /conf/menu 93 | echo "----------------------------------------------" >> /conf/menu 94 | fi 95 | 96 | # write icons to linbo section 97 | icons="$(grep -w ^iconname /conf/os.* | awk -F\" '{print $2}' | sort -u | sed ':a;N;$!ba;s/\n/ /g')" 98 | echo "icons=\"$icons\"" >> /conf/linbo -------------------------------------------------------------------------------- /serverfs/srv/linbo/examples/start.conf.opensuse: -------------------------------------------------------------------------------- 1 | # LINBO start.conf, example for openSUSE 2 | # DON'T EDIT THIS FILE! MAKE A COPY AND ADAPT THE VALUES TO YOUR NEEDS! 3 | # operating system on partition 1 4 | # cache on partition 2 5 | # swap on partition 3 6 | # data on partition 4 7 | 8 | [LINBO] # global section 9 | Group = group # name of the hardware group 10 | Cache = /dev/sda2 # cache partition 11 | RootTimeout = 600 # logout from admin console after 600 secs 12 | AutoPartition = no # no partition repair during LINBO startup 13 | AutoFormat = no # no formatting of all partitions during LINBO startup 14 | AutoInitCache = no # no initial cache setup during LINBO startup 15 | DownloadType = torrent # image download method (torrent|multicast|rsync) 16 | GuiDisabled = no # disable gui 17 | UseMinimalLayout = no # gui layout style 18 | Locale = de-de # gui locale 19 | KernelOptions = quiet splash # linbo kernel options, space separated 20 | #KernelOptions = acpi=noirq irqpoll # linbo kernel options example for use with acpi problems 21 | #KernelOptions = server=10.0.0.5 # different pxe server ip, (needs device import to be activated) 22 | 23 | [Partition] # partition section (operating system) 24 | Dev = /dev/sda1 # device name of the partition 25 | Label = opensuse # partition label 26 | Size = 30G # partition size 30G, will use kiB if no unit (M, G or T) is set 27 | Id = 83 # partition id (83 = linux) 28 | FSType = ext4 # filesystem ext4 29 | Bootable = yes # set bootable flag yes 30 | 31 | [Partition] # partition section (cache) 32 | Dev = /dev/sda2 # device name of the partition 33 | Label = cache # partition label 34 | Size = 30G # partition size 30G 35 | Id = 83 # partition id (83 = linux) 36 | FSType = ext4 # filesystem ext4 37 | Bootable = yes # set bootable flag yes 38 | 39 | [Partition] # partition section (swap) 40 | Dev = /dev/sda3 # device name of the partition 41 | Label = swap # partition label 42 | Size = 8G # partition size 8G 43 | Id = 82 # partition id (82 = swap) 44 | FSType = swap # filesystem swap 45 | Bootable = no # set bootable flag no 46 | 47 | [Partition] # partition section (data) 48 | Label = data # partition label 49 | Dev = /dev/sda4 # device name of the partition 50 | Size = # partition size (no value = remaining space of the disk) 51 | Id = 83 # partition id (83 = linux) 52 | FSType = ext4 # filesystem ext4 53 | Bootable = no # set bootable flag no 54 | 55 | [OS] # os section 56 | Name = openSUSE # os name 57 | Description = openSUSE 42.1 # detailed description of os 58 | IconName = opensuse.svg # icon filename in /srv/linbo/icons 59 | BaseImage = opensuse.qcow2 # filename of main image (extension .qcow2) 60 | Root = /dev/sda1 # root partition of the os 61 | Kernel = boot/vmlinuz # relative path to kernel 62 | Initrd = boot/initrd # relative path to initrd 63 | Append = ro splash=silent # kernel append parameters 64 | StartEnabled = yes # show start button 65 | SyncEnabled = yes # show sync+start button 66 | NewEnabled = yes # show new+start button 67 | Autostart = no # automatic start of os (yes|no) 68 | AutostartTimeout = 5 # timeout in secs for user to cancel automatic start 69 | DefaultAction = sync # default action on automatic start: start|sync|new 70 | -------------------------------------------------------------------------------- /serverfs/srv/linbo/examples/start.conf.ubuntu: -------------------------------------------------------------------------------- 1 | # LINBO start.conf, example for ubuntu 2 | # DON'T EDIT THIS FILE! MAKE A COPY AND ADAPT THE VALUES TO YOUR NEEDS! 3 | # operating system on partition 1 4 | # cache on partition 2 5 | # swap on partition 3 6 | # data on partition 4 7 | 8 | [LINBO] # global section 9 | Group = group # name of the hardware group 10 | Cache = /dev/sda2 # cache partition 11 | RootTimeout = 600 # logout from admin console after 600 secs 12 | AutoPartition = no # no partition repair during LINBO startup 13 | AutoFormat = no # no formatting of all partitions during LINBO startup 14 | AutoInitCache = no # no initial cache setup during LINBO startup 15 | DownloadType = torrent # image download method (torrent|multicast|rsync) 16 | GuiDisabled = no # disable gui 17 | UseMinimalLayout = no # gui layout style 18 | Locale = de-de # gui locale 19 | KernelOptions = quiet splash # linbo kernel options, space separated 20 | #KernelOptions = acpi=noirq irqpoll # linbo kernel options example for use with acpi problems 21 | #KernelOptions = server=10.0.0.5 # different pxe server ip, (needs device import to be activated) 22 | 23 | [Partition] # partition section (operating system) 24 | Dev = /dev/sda1 # device name of the partition 25 | Label = ubuntu # partition label 26 | Size = 30G # partition size 30G, will use kiB if no unit (M, G or T) is set 27 | Id = 83 # partition id (83 = linux) 28 | FSType = ext4 # filesystem ext4 29 | Bootable = yes # set bootable flag yes 30 | 31 | [Partition] # partition section (cache) 32 | Dev = /dev/sda2 # device name of the partition 33 | Label = cache # partition label 34 | Size = 30G # partition size 30G 35 | Id = 83 # partition id (83 = linux) 36 | FSType = ext4 # filesystem ext4 37 | Bootable = yes # set bootable flag yes 38 | 39 | [Partition] # partition section (swap) 40 | Dev = /dev/sda3 # device name of the partition 41 | Label = swap # partition label 42 | Size = 8G # partition size 8G 43 | Id = 82 # partition id (82 = swap) 44 | FSType = swap # filesystem swap 45 | Bootable = no # set bootable flag no 46 | 47 | [Partition] # partition section (data) 48 | Label = data # partition label 49 | Dev = /dev/sda4 # device name of the partition 50 | Size = # partition size (no value = remaining space of the disk) 51 | Id = 83 # partition id (83 = linux) 52 | FSType = ext4 # filesystem ext4 53 | Bootable = no # set bootable flag no 54 | 55 | [OS] # os section 56 | Name = Ubuntu # os name 57 | Description = Ubuntu 18.04 # detailed description of os 58 | IconName = ubuntu.svg # icon filename in /srv/linbo/icons 59 | BaseImage = ubuntu.qcow2 # filename of main image (extension .qcow2) 60 | Root = /dev/sda1 # root partition of the os 61 | Kernel = boot/vmlinuz # relative path to kernel 62 | Initrd = boot/initrd.img # relative path to initrd 63 | Append = ro splash # kernel append parameters 64 | StartEnabled = yes # show start button 65 | SyncEnabled = yes # show sync+start button 66 | NewEnabled = yes # show new+start button 67 | Autostart = no # automatic start of os (yes|no) 68 | AutostartTimeout = 5 # timeout in secs for user to cancel automatic start 69 | DefaultAction = sync # default action on automatic start: start|sync|new 70 | -------------------------------------------------------------------------------- /serverfs/srv/linbo/examples/start.conf.ubuntu2004: -------------------------------------------------------------------------------- 1 | # LINBO start.conf, example for ubuntu 2 | # DON'T EDIT THIS FILE! MAKE A COPY AND ADAPT THE VALUES TO YOUR NEEDS! 3 | # operating system on partition 1 4 | # cache on partition 2 5 | # swap on partition 3 6 | # data on partition 4 7 | 8 | [LINBO] # global section 9 | Group = group # name of the hardware group 10 | Cache = /dev/sda2 # cache partition 11 | RootTimeout = 600 # logout from admin console after 600 secs 12 | AutoPartition = no # no partition repair during LINBO startup 13 | AutoFormat = no # no formatting of all partitions during LINBO startup 14 | AutoInitCache = no # no initial cache setup during LINBO startup 15 | DownloadType = torrent # image download method (torrent|multicast|rsync) 16 | GuiDisabled = no # disable gui 17 | UseMinimalLayout = no # gui layout style 18 | Locale = de-de # gui locale 19 | KernelOptions = quiet splash # linbo kernel options, space separated 20 | #KernelOptions = acpi=noirq irqpoll # linbo kernel options example for use with acpi problems 21 | #KernelOptions = server=10.0.0.5 # different pxe server ip, (needs device import to be activated) 22 | 23 | [Partition] # partition section (operating system) 24 | Dev = /dev/sda1 # device name of the partition 25 | Label = ubuntu # partition label 26 | Size = 30G # partition size 30G, will use kiB if no unit (M, G or T) is set 27 | Id = 83 # partition id (83 = linux) 28 | FSType = ext4 # filesystem ext4 29 | Bootable = yes # set bootable flag yes 30 | 31 | [Partition] # partition section (cache) 32 | Dev = /dev/sda2 # device name of the partition 33 | Label = cache # partition label 34 | Size = 30G # partition size 30G 35 | Id = 83 # partition id (83 = linux) 36 | FSType = ext4 # filesystem ext4 37 | Bootable = yes # set bootable flag yes 38 | 39 | [Partition] # partition section (swap) 40 | Dev = /dev/sda3 # device name of the partition 41 | Label = swap # partition label 42 | Size = 8G # partition size 8G 43 | Id = 82 # partition id (82 = swap) 44 | FSType = swap # filesystem swap 45 | Bootable = no # set bootable flag no 46 | 47 | [Partition] # partition section (data) 48 | Label = data # partition label 49 | Dev = /dev/sda4 # device name of the partition 50 | Size = # partition size (no value = remaining space of the disk) 51 | Id = 83 # partition id (83 = linux) 52 | FSType = ext4 # filesystem ext4 53 | Bootable = no # set bootable flag no 54 | 55 | [OS] # os section 56 | Name = Ubuntu # os name 57 | Description = Ubuntu 20.04 # detailed description of os 58 | IconName = ubuntu.svg # icon filename in /srv/linbo/icons 59 | BaseImage = ubuntu.qcow2 # filename of main image (extension .qcow2) 60 | Root = /dev/sda1 # root partition of the os 61 | Kernel = boot/vmlinuz # relative path to kernel 62 | Initrd = boot/initrd.img # relative path to initrd 63 | Append = ro splash # kernel append parameters 64 | StartEnabled = yes # show start button 65 | SyncEnabled = yes # show sync+start button 66 | NewEnabled = yes # show new+start button 67 | Autostart = no # automatic start of os (yes|no) 68 | AutostartTimeout = 5 # timeout in secs for user to cancel automatic start 69 | DefaultAction = sync # default action on automatic start: start|sync|new 70 | -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/templates/grub.cfg.os: -------------------------------------------------------------------------------- 1 | # group specific grub.cfg template for linbo net boot, should work with linux and windows operating systems 2 | # thomas@linuxmuster.net 3 | # 20201126 4 | # 5 | 6 | # start "@@osname@@" directly 7 | menuentry '@@osname@@ (Start)' --class @@ostype@@_start { 8 | 9 | set oslabel="@@oslabel@@" 10 | if [ -n "$oslabel" ]; then 11 | search --label "$oslabel" --set osroot 12 | fi 13 | if [ -n "$osroot" ]; then 14 | set root="$osroot" 15 | else 16 | set root="@@osroot@@" 17 | fi 18 | set win_efiloader="/EFI/Microsoft/Boot/bootmgfw.efi" 19 | 20 | terminal_output console 21 | if [ -e /boot/vmlinuz -a -e /boot/initrd.img ]; then 22 | linux /boot/vmlinuz @@append@@ 23 | initrd /boot/initrd.img 24 | elif [ -e /vmlinuz -a -e /initrd.img ]; then 25 | linux /vmlinuz @@append@@ 26 | initrd /initrd.img 27 | elif [ -e /boot/vmlinuz -a -e /boot/initrd ]; then 28 | linux /boot/vmlinuz @@append@@ 29 | initrd /boot/initrd 30 | elif [ -e /vmlinuz -a -e /initrd ]; then 31 | linux /vmlinuz @@append@@ 32 | initrd /initrd 33 | elif [ -e /@@kernel@@ -a -e /@@initrd@@ ]; then 34 | linux /@@kernel@@ @@append@@ 35 | initrd /@@initrd@@ 36 | elif [ -e /@@kernel@@ ]; then 37 | linux /@@kernel@@ @@append@@ 38 | elif [ -s /boot/grub/grub.cfg ] ; then 39 | configfile /boot/grub/grub.cfg 40 | elif [ "$grub_platform" = "pc" ]; then 41 | if [ -s /bootmgr ] ; then 42 | ntldr /bootmgr 43 | elif [ -s /ntldr ] ; then 44 | ntldr /ntldr 45 | elif [ -s /grldr ] ; then 46 | ntldr /grldr 47 | else 48 | chainloader +1 49 | fi 50 | elif [ -e "$win_efiloader" ]; then 51 | chainloader $win_efiloader 52 | boot 53 | fi 54 | terminal_output gfxterm 55 | 56 | } 57 | 58 | # boot LINBO and start "@@osname@@" 59 | menuentry '@@osname@@ (Linbo-Start)' --class @@ostype@@_start { 60 | 61 | if [ -e "$linbo_kernel" -a -e "$linbo_initrd" ]; then 62 | set bootflag=localboot 63 | elif [ -n "$pxe_default_server" ]; then 64 | set root="(tftp)" 65 | set bootflag=netboot 66 | fi 67 | 68 | if [ -n "$bootflag" ]; then 69 | echo LINBO $bootflag for group @@group@@ 70 | echo 71 | echo -n "Loading $linbo_kernel ..." 72 | linux $linbo_kernel @@kopts@@ linbocmd=start:@@osnr@@ $bootflag 73 | echo 74 | echo -n "Loading $linbo_initrd ..." 75 | initrd $linbo_initrd 76 | boot 77 | fi 78 | 79 | } 80 | 81 | # boot LINBO, sync and start "@@osname@@" 82 | menuentry '@@osname@@ (Sync+Start)' --class @@ostype@@_syncstart { 83 | 84 | if [ -e "$linbo_kernel" -a -e "$linbo_initrd" ]; then 85 | set bootflag=localboot 86 | elif [ -n "$pxe_default_server" ]; then 87 | set root="(tftp)" 88 | set bootflag=netboot 89 | fi 90 | 91 | if [ -n "$bootflag" ]; then 92 | echo LINBO $bootflag for group @@group@@ 93 | echo 94 | echo -n "Loading $linbo_kernel ..." 95 | linux $linbo_kernel @@kopts@@ linbocmd=sync:@@osnr@@,start:@@osnr@@ $bootflag 96 | echo 97 | echo -n "Loading $linbo_initrd ..." 98 | initrd $linbo_initrd 99 | boot 100 | fi 101 | 102 | } 103 | 104 | # boot LINBO, format os partition, sync and start "@@osname@@" 105 | menuentry '@@osname@@ (Neu+Start)' --class @@ostype@@_newstart { 106 | 107 | if [ -e "$linbo_kernel" -a -e "$linbo_initrd" ]; then 108 | set bootflag=localboot 109 | elif [ -n "$pxe_default_server" ]; then 110 | set root="(tftp)" 111 | set bootflag=netboot 112 | fi 113 | 114 | if [ -n "$bootflag" ]; then 115 | echo LINBO $bootflag for group @@group@@ 116 | echo 117 | echo -n "Loading $linbo_kernel ..." 118 | linux $linbo_kernel @@kopts@@ linbocmd=format:@@partnr@@,sync:@@osnr@@,start:@@osnr@@ $bootflag 119 | echo 120 | echo -n "Loading $linbo_initrd ..." 121 | initrd $linbo_initrd 122 | boot 123 | fi 124 | 125 | } 126 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_mountcache: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_mountcache [-r] | [help] 4 | # thomas@linuxmuster.net 5 | # 20250425 6 | # 7 | 8 | 9 | #### functions begin #### 10 | 11 | # read common shell functions 12 | source /usr/share/linbo/shell_functions 13 | echo "### $timestamp $(basename "$0") ###" 14 | 15 | 16 | usage(){ 17 | local RC="$1" 18 | echo 19 | echo "Mounts the cache partition. \"-r\" mounts/remounts readonly." 20 | echo 21 | echo "Usage: linbo_mountcache [-r] | [help]" 22 | echo 23 | exit "$RC" 24 | } 25 | 26 | 27 | # find cache partition 28 | findcache(){ 29 | local item 30 | local dev 31 | mkdir -p /tmp/mnt 32 | for item in /dev/disk/by-id/*part*; do 33 | dev="$(readlink "$item" | sed 's|../../|/dev/|')" 34 | if mount "$dev" /tmp/mnt &> /dev/null; then 35 | if [ -s /tmp/mnt/linbo64 ]; then 36 | export cache="$dev" 37 | umount /tmp/mnt &> /dev/null 38 | break 39 | fi 40 | umount /tmp/mnt &> /dev/null 41 | fi 42 | done 43 | } 44 | 45 | #### functions end #### 46 | 47 | 48 | # print help 49 | [ "$1" = "help" ] && usage 0 50 | 51 | # get cache partition, otherwise use environment variable 52 | if [ -b "$1" ]; then 53 | cache="$1" 54 | shift 55 | fi 56 | [ -z "$cache" -a -s /conf/linbo ] && source /conf/linbo 57 | [ -n "$cache" ] && realcache="$(get_realdev $cache)" 58 | [ -n "$realcache" ] && cache="$realcache" 59 | [ -z "$cache" ] && findcache 60 | [ -b "$cache" ] || usage 1 61 | 62 | # get readonly option 63 | [ "$1" = "-r" ] && ro="$1" 64 | 65 | RC="0" 66 | 67 | # Avoid duplicate mounts by just preparing read/write mode 68 | mount_opts="$(grep " /cache " /proc/mounts | awk '{ print $4 }')" 69 | if [ -n "$mount_opts" ]; then 70 | RW="" 71 | echo "$mount_opts" | grep -q ".*rw.*" && RW="true" 72 | case "$ro" in 73 | -r) [ -n "$RW" ] && mount -o remount,ro /cache ; RC="$?" ;; 74 | *) [ -n "$RW" ] || mount -o remount,rw /cache ; RC="$?" ;; 75 | esac 76 | exit "$RC" 77 | fi 78 | case "$cache" in 79 | *:*) # NFS 80 | server="${cache%%:*}" 81 | dir="${cache##*:}" 82 | echo "Mounting cache partition per nfs from $cache ..." 83 | # -o nolock is EXTREMELY important here, otherwise mount.nfs will timeout waiting for portmap 84 | mount $ro -t nfs4 -o nolock,relatime,rsize=1048576,wsize=1048576,hard,intr "$cache" /cache 85 | RC="$?" 86 | ;; 87 | \\\\*\\*|//*/*) # CIFS/SAMBA 88 | server="${cache%\\*}"; server="${server%/*}"; server="${server#\\\\}"; server="${server#//}" 89 | echo "Mounting cache partition per cifs from $cache ..." 90 | # unix extensions have to be disabled 91 | echo 0 > /proc/fs/cifs/LinuxExtensionsEnabled 2>/dev/null 92 | # mount.cifs (3) pays attention to $PASSWD 93 | # this does not work: $RSYNC_PASSWORD is not available and mount.cifs does not pay attention to $PASSWD 94 | #export PASSWD="$RSYNC_PASSWORD" 95 | #mount $2 -t cifs -o username=linbo,nolock "$cache" /cache 2>/dev/null 96 | # temporary workaround for password 97 | [ -s /tmp/linbo.passwd ] && PASSWD="$(cat /tmp/linbo.passwd 2>/dev/null)" 98 | [ -z "$PASSWD" -a -s /tmp/rsyncd.secrets ] && PASSWD="$(grep ^linbo /tmp/rsyncd.secrets | awk -F\: '{ print $2 }' 2>/dev/null)" 99 | mount $ro -t cifs -o username=linbo,password="$PASSWD",nolock "$cache" /cache 100 | RC="$?" 101 | if [ "$RC" != "0" ]; then 102 | echo "Authentication failure." 103 | mount $ro -t cifs -o nolock,guest,sec=none "$cache" /cache 104 | RC="$?" 105 | if [ "$RC" != "0" ]; then 106 | echo "Guest access does not work also." 107 | fi 108 | fi 109 | ;; 110 | /dev/*) # cache 111 | echo "Mounting cache partition $cache ..." 112 | linbo_mount "$cache" /cache $ro ; RC="$?" 113 | ;; 114 | *) # Yet unknown 115 | echo "Unknown source for cache partition: $cache." >&2 116 | ;; 117 | esac 118 | 119 | [ "$RC" = "0" ] || echo "Failed to mount cache partition $cache!" >&2 120 | 121 | exit "$RC" 122 | -------------------------------------------------------------------------------- /serverfs/srv/linbo/examples/start.conf.win10-efi: -------------------------------------------------------------------------------- 1 | # LINBO start.conf, example for windows 10 (efi, gpt) 2 | # DON'T EDIT THIS FILE! MAKE A COPY AND ADAPT THE VALUES TO YOUR NEEDS! 3 | # efi system partition 1 4 | # microsoft reserved partition 2 5 | # operating system on partition 3 6 | # cache on partition 4 7 | # data on partition 5 8 | 9 | [LINBO] # global section 10 | Group = group # name of the hardware group 11 | Cache = /dev/sda4 # cache partition 12 | RootTimeout = 600 # logout from admin console after 600 secs 13 | AutoPartition = no # no partition repair during LINBO startup 14 | AutoFormat = no # no formatting of all partitions during LINBO startup 15 | AutoInitCache = no # no initial cache setup during LINBO startup 16 | DownloadType = torrent # image download method (torrent|multicast|rsync) 17 | GuiDisabled = no # disable gui 18 | UseMinimalLayout = no # gui layout style 19 | Locale = de-de # gui locale 20 | KernelOptions = quiet splash # linbo kernel options, space separated 21 | #KernelOptions = acpi=noirq irqpoll # linbo kernel options example for use with acpi problems 22 | #KernelOptions = server=10.0.0.5 # different pxe server ip, (needs device import to be activated) 23 | 24 | [Partition] # efi system partition 25 | Dev = /dev/sda1 # device name of the partition 26 | Label = efi # partition label 27 | Size = 200M # partition size 200M, will use kiB if no unit (M, G or T) is set 28 | Id = ef # partition id (ef = efi) 29 | FSType = vfat # filesystem vfat 30 | Bootable = yes # set bootable flag yes 31 | 32 | [Partition] # microsoft reserved partition 33 | Dev = /dev/sda2 # device name of the partition 34 | Label = msr # partition label 35 | Size = 128M # partition size 128M 36 | Id = 0c01 # partition id (0c01 = msr) 37 | FSType = # no filesystem 38 | Bootable = no # set bootable flag no 39 | 40 | [Partition] # partition section (operating system) 41 | Dev = /dev/sda3 # device name of the partition 42 | Label = windows # partition label 43 | Size = 50G # partition size 50G 44 | Id = 7 # partition id (7 = ntfs) 45 | FSType = ntfs # filesystem ntfs 46 | Bootable = no # set bootable flag no 47 | 48 | [Partition] # partition section (cache) 49 | Dev = /dev/sda4 # device name of the partition 50 | Label = cache # partition label 51 | Size = 50G # partition size 50G 52 | Id = 83 # partition id (83 = linux) 53 | FSType = ext4 # filesystem ext4 54 | Bootable = no # set bootable flag no 55 | 56 | [Partition] # partition section (data) 57 | Label = data # partition label 58 | Dev = /dev/sda5 # device name of the partition 59 | Size = # partition size (no value = remaining space of the disk) 60 | Id = 7 # partition id (7 = ntfs) 61 | FSType = ntfs # filesystem ntfs 62 | Bootable = no # set bootable flag no 63 | 64 | [OS] # os section 65 | Name = Windows 10 # os name 66 | Description = Windows 10 1903 # detailed description of os 67 | IconName = win10.svg # icon filename in /srv/linbo/icons 68 | BaseImage = win10.qcow2 # filename of main image (extension .qcow2) 69 | Root = /dev/sda3 # root partition of the os 70 | Kernel = auto # auto for windows 71 | Initrd = # empty for windows 72 | Append = # empty for windows 73 | StartEnabled = yes # show start button 74 | SyncEnabled = yes # show sync+start button 75 | NewEnabled = yes # show new+start button 76 | Autostart = no # automatic start of os (yes|no) 77 | AutostartTimeout = 5 # timeout in secs for user to cancel automatic start 78 | DefaultAction = sync # default action on automatic start: start|sync|new 79 | -------------------------------------------------------------------------------- /serverfs/srv/linbo/examples/start.conf.ubuntu-efi: -------------------------------------------------------------------------------- 1 | # LINBO start.conf, example for ubuntu (efi, gpt) 2 | # DON'T EDIT THIS FILE! MAKE A COPY AND ADAPT THE VALUES TO YOUR NEEDS! 3 | # efi system partition 1 4 | # operating system on partition 2 5 | # cache on partition 3 6 | # swap on partition 4 7 | # data on partition 5 8 | 9 | [LINBO] # global section 10 | Group = group # name of the hardware group 11 | Cache = /dev/sda3 # cache partition 12 | RootTimeout = 600 # logout from admin console after 600 secs 13 | AutoPartition = no # no partition repair during LINBO startup 14 | AutoFormat = no # no formatting of all partitions during LINBO startup 15 | AutoInitCache = no # no initial cache setup during LINBO startup 16 | DownloadType = torrent # image download method (torrent|multicast|rsync) 17 | GuiDisabled = no # disable gui 18 | UseMinimalLayout = no # gui layout style 19 | Locale = de-de # gui locale 20 | KernelOptions = quiet splash # linbo kernel options, space separated 21 | #KernelOptions = acpi=noirq irqpoll # linbo kernel options example for use with acpi problems 22 | #KernelOptions = server=10.0.0.5 # different pxe server ip, (needs device import to be activated) 23 | 24 | [Partition] # efi system partition 25 | Dev = /dev/sda1 # device name of the partition 26 | Label = efi # partition label 27 | Size = 200M # partition size 200M, will use kiB if no unit (M, G or T) is set 28 | Id = ef # partition id (ef = efi) 29 | FSType = vfat # filesystem vfat 30 | Bootable = yes # set bootable flag yes 31 | 32 | [Partition] # partition section (operating system) 33 | Dev = /dev/sda2 # device name of the partition 34 | Label = ubuntu # partition label 35 | Size = 30G # partition size 30G 36 | Id = 83 # partition id (83 = linux) 37 | FSType = ext4 # filesystem ext4 38 | Bootable = no # set bootable flag no 39 | 40 | [Partition] # partition section (cache) 41 | Dev = /dev/sda3 # device name of the partition 42 | Label = cache # partition label 43 | Size = 30G # partition size 30G 44 | Id = 83 # partition id (83 = linux) 45 | FSType = ext4 # filesystem ext4 46 | Bootable = no # set bootable flag no 47 | 48 | [Partition] # partition section (swap) 49 | Dev = /dev/sda4 # device name of the partition 50 | Label = swap # partition label 51 | Size = 8G # partition size 8G 52 | Id = 82 # partition id (82 = swap) 53 | FSType = swap # filesystem swap 54 | Bootable = no # set bootable flag no 55 | 56 | [Partition] # partition section (data) 57 | Label = data # partition label 58 | Dev = /dev/sda5 # device name of the partition 59 | Size = # partition size (no value = remaining space of the disk) 60 | Id = 83 # partition id (83 = linux) 61 | FSType = ext4 # filesystem ext4 62 | Bootable = no # set bootable flag no 63 | 64 | [OS] # os section 65 | Name = Ubuntu # os name 66 | Description = Ubuntu 18.04 # detailed description of os 67 | IconName = ubuntu.svg # icon filename in /srv/linbo/icons 68 | BaseImage = ubuntu.qcow2 # filename of main image (extension .qcow2) 69 | Root = /dev/sda2 # root partition of the os 70 | Kernel = boot/vmlinuz # relative path to kernel 71 | Initrd = boot/initrd.img # relative path to initrd 72 | Append = ro splash # kernel append parameters 73 | StartEnabled = yes # show start button 74 | SyncEnabled = yes # show sync+start button 75 | NewEnabled = yes # show new+start button 76 | Autostart = no # automatic start of os (yes|no) 77 | AutostartTimeout = 5 # timeout in secs for user to cancel automatic start 78 | DefaultAction = sync # default action on automatic start: start|sync|new 79 | -------------------------------------------------------------------------------- /serverfs/srv/linbo/examples/start.conf.ubuntu2004-efi: -------------------------------------------------------------------------------- 1 | # LINBO start.conf, example for ubuntu (efi, gpt) 2 | # DON'T EDIT THIS FILE! MAKE A COPY AND ADAPT THE VALUES TO YOUR NEEDS! 3 | # efi system partition 1 4 | # operating system on partition 2 5 | # cache on partition 3 6 | # swap on partition 4 7 | # data on partition 5 8 | 9 | [LINBO] # global section 10 | Group = group # name of the hardware group 11 | Cache = /dev/sda3 # cache partition 12 | RootTimeout = 600 # logout from admin console after 600 secs 13 | AutoPartition = no # no partition repair during LINBO startup 14 | AutoFormat = no # no formatting of all partitions during LINBO startup 15 | AutoInitCache = no # no initial cache setup during LINBO startup 16 | GuiDisabled = no # disable gui 17 | UseMinimalLayout = no # gui layout style 18 | Locale = de-de # gui locale 19 | DownloadType = torrent # image download method (torrent|multicast|rsync) 20 | KernelOptions = quiet splash # linbo kernel options, space separated 21 | #KernelOptions = acpi=noirq irqpoll # linbo kernel options example for use with acpi problems 22 | #KernelOptions = server=10.0.0.5 # different pxe server ip, (needs device import to be activated) 23 | 24 | [Partition] # efi system partition 25 | Dev = /dev/sda1 # device name of the partition 26 | Label = efi # partition label 27 | Size = 200M # partition size 200M, will use kiB if no unit (M, G or T) is set 28 | Id = ef # partition id (ef = efi) 29 | FSType = vfat # filesystem vfat 30 | Bootable = yes # set bootable flag yes 31 | 32 | [Partition] # partition section (operating system) 33 | Dev = /dev/sda2 # device name of the partition 34 | Label = ubuntu # partition label 35 | Size = 30G # partition size 30G 36 | Id = 83 # partition id (83 = linux) 37 | FSType = ext4 # filesystem ext4 38 | Bootable = no # set bootable flag no 39 | 40 | [Partition] # partition section (cache) 41 | Dev = /dev/sda3 # device name of the partition 42 | Label = cache # partition label 43 | Size = 30G # partition size 30G 44 | Id = 83 # partition id (83 = linux) 45 | FSType = ext4 # filesystem ext4 46 | Bootable = no # set bootable flag no 47 | 48 | [Partition] # partition section (swap) 49 | Dev = /dev/sda4 # device name of the partition 50 | Label = swap # partition label 51 | Size = 8G # partition size 8G 52 | Id = 82 # partition id (82 = swap) 53 | FSType = swap # filesystem swap 54 | Bootable = no # set bootable flag no 55 | 56 | [Partition] # partition section (data) 57 | Label = data # partition label 58 | Dev = /dev/sda5 # device name of the partition 59 | Size = # partition size (no value = remaining space of the disk) 60 | Id = 83 # partition id (83 = linux) 61 | FSType = ext4 # filesystem ext4 62 | Bootable = no # set bootable flag no 63 | 64 | [OS] # os section 65 | Name = Ubuntu # os name 66 | Description = Ubuntu 20.04 # detailed description of os 67 | IconName = ubuntu.svg # icon filename in /srv/linbo/icons 68 | BaseImage = ubuntu.qcow2 # filename of main image (extension .qcow2) 69 | Root = /dev/sda2 # root partition of the os 70 | Kernel = boot/vmlinuz # relative path to kernel 71 | Initrd = boot/initrd.img # relative path to initrd 72 | Append = ro splash # kernel append parameters 73 | StartEnabled = yes # show start button 74 | SyncEnabled = yes # show sync+start button 75 | NewEnabled = yes # show new+start button 76 | Autostart = no # automatic start of os (yes|no) 77 | AutostartTimeout = 5 # timeout in secs for user to cancel automatic start 78 | DefaultAction = sync # default action on automatic start: start|sync|new 79 | -------------------------------------------------------------------------------- /linbofs/usr/share/plymouth/themes/linbo-splash/linbo-splash.script: -------------------------------------------------------------------------------- 1 | # linbo-splash.script for plymouth 2 | # thomas@linuxmuster.net 3 | # 20210206 4 | # 5 | # set font 6 | font = "sans-serif 11"; 7 | 8 | # set the background color 9 | Window.SetBackgroundTopColor (0.17, 0.27, 0.34); # Nice colour on top of the screen fading to 10 | Window.SetBackgroundBottomColor (0.17, 0.27, 0.34); # an equally nice colour on the bottom 11 | 12 | logo.image = Image("logo_no_arrows.png"); 13 | logo.sprite = Sprite(logo.image); 14 | logo.sprite.SetOpacity (0.0); 15 | logo_x = Window.GetWidth () / 2 - logo.image.GetWidth() / 2; 16 | logo_y = Window.GetHeight () / 2 - logo.image.GetHeight() / 1.33; 17 | logo.sprite.SetX(logo_x); 18 | logo.sprite.SetY(logo_y); 19 | logo.sprite.SetZ(10); 20 | logo.sprite.SetOpacity(1.0); 21 | 22 | circle[0].image = Image("arrows-1.png"); 23 | circle[0].sprite = Sprite(circle[0].image); 24 | circle[0].sprite.SetOpacity (0.0); 25 | circle_x = Window.GetWidth () / 2 - circle[0].image.GetWidth() / 2; 26 | circle_y = logo_y; 27 | 28 | for (i = 1; i < 18; i++){ 29 | circle[i].image = Image("arrows-" + (i + 1) + ".png"); 30 | circle[i].sprite = Sprite(circle[i].image); 31 | circle[i].sprite.SetOpacity (0.0); 32 | } 33 | 34 | x = 1; 35 | lasti = 0; 36 | loop = 0; 37 | 38 | fun refresh () { 39 | if (Math.Int (x/2) < 18) i = (Math.Int (x / 2)) % 18; 40 | else{ 41 | i = (Math.Int (x / 2) - 1) % 18; 42 | zoom = i; 43 | } 44 | circle[i].sprite.SetX(circle_x); 45 | circle[i].sprite.SetY(circle_y); 46 | circle[i].sprite.SetZ(10); 47 | circle[lasti].sprite.SetOpacity(0.0); 48 | circle[i].sprite.SetOpacity(1.0); 49 | lasti = i; 50 | x++; 51 | } 52 | 53 | Plymouth.SetRefreshFunction (refresh); 54 | 55 | #----------------------------------------- Quit -------------------------------- 56 | 57 | fun quit_callback () 58 | { 59 | } 60 | 61 | Plymouth.SetQuitFunction(quit_callback); 62 | 63 | #----------------------------------------- Linbo-Version -------------------------------- 64 | 65 | version_sprite = Sprite(); 66 | version_sprite.SetPosition(10, 10, 10000); 67 | 68 | fun message_callback (text) 69 | { 70 | version_image = Image.Text(text, 1.0, 1.0, 1.0, font); 71 | version_sprite.SetImage(version_image); 72 | version_y = logo_y + logo.image.GetHeight() + version_image.GetHeight() / 4 ; 73 | version_sprite.SetX(Window.GetWidth () / 2 - version_image.GetWidth() / 2); 74 | version_sprite.SetY(version_y); 75 | version.sprite.SetZ(11); 76 | } 77 | 78 | Plymouth.SetMessageFunction(message_callback); 79 | 80 | #----------------------------------------- Scrolling Boot Messages -------------------------------- 81 | 82 | NUM_SCROLL_LINES=3; 83 | LINE_WIDTH=55; 84 | 85 | // Initialising text images and their positions 86 | // 20 is the height (including line spacing) of each line 87 | for (i=0; i < NUM_SCROLL_LINES; i++) { 88 | lines[i]= Image.Text("", 1.0, 1.0, 1.0, status_font); 89 | message_y = logo_y + logo.image.GetHeight() + 50; 90 | message_sprite[i] = Sprite(); 91 | message_sprite[i].SetPosition(Window.GetWidth () * 0.2, (Window.GetHeight () * 0.6) + (i * 20), 10000); 92 | message_sprite[i].SetX(logo_x); 93 | message_sprite[i].SetY(message_y + (i* 20)); 94 | message_sprite[i].SetZ(20); 95 | } 96 | 97 | // From ubuntu-logo 98 | fun StringLength(string) { 99 | 100 | index = 0; 101 | str = String(string); 102 | while(str.CharAt(index)) index++; 103 | return index; 104 | } 105 | 106 | fun scroll_message_callback(text) { 107 | 108 | // Truncate the message if too long 109 | if (StringLength(text) > LINE_WIDTH) { 110 | text = text.SubString(0, LINE_WIDTH - 3); 111 | text += "..."; 112 | } 113 | 114 | // Shift message one up 115 | for (i = 0; i < NUM_SCROLL_LINES - 1; i++) { 116 | lines[i] = lines[i+1]; 117 | } 118 | 119 | // Create the image for the latest message 120 | lines[i] = Image.Text(text, 1.0, 1.0, 1.0); 121 | 122 | // Re-positioning the text images 123 | for (i = 0; i < NUM_SCROLL_LINES; i++) { 124 | message_sprite[i].SetImage(lines[i]); 125 | } 126 | } 127 | 128 | Plymouth.SetUpdateStatusFunction(scroll_message_callback); 129 | -------------------------------------------------------------------------------- /linbofs/usr/bin/linbo_register: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # linbo_register 4 | # thomas@linuxmuster.net 5 | # 20250423 6 | # 7 | 8 | 9 | usage(){ 10 | RC="$1" 11 | echo "Registers current client on the server." 12 | echo 13 | echo "Usage:" 14 | echo " linbo_register [role] | [help]" 15 | echo 16 | echo "Default value for role is \"classroom-studentcomputer\". can be" 17 | echo "\"DHCP\". The username is fixed to \"linbo\"." 18 | echo 19 | exit "$RC" 20 | } 21 | 22 | 23 | # print help 24 | [ -z "$1" -o "$1" = "help" ] && usage 0 25 | 26 | # get environment 27 | source /usr/share/linbo/shell_functions 28 | 29 | # check variables 30 | if [ "$MACADDR" = "OFFLINE" -o -z "$MACADDR" ]; then 31 | echo "Client is offline!" 32 | usage 1 33 | fi 34 | 35 | # check params with legacy compatibility (serverip user password room ...) 36 | if [ -z "$1" ] || validip "$1"; then shift; fi 37 | [ -z "$1" -o "$1" = "linbo" ] && shift 38 | USERNAME="linbo" 39 | export RSYNC_PASSWORD="$1" 40 | shift 41 | echo "### $timestamp $(basename "$0") $@ ###" 42 | [ "$1" = "linbo" ] && shift 43 | [ "$1" = "$LINBOSERVER" ] && shift 44 | if validhostname "$1"; then 45 | ROOM="$1" 46 | shift 47 | else 48 | echo "Room name $1 is not valid!" 49 | usage 1 50 | fi 51 | if validhostname "$1"; then 52 | CLIENTNAME="$1" 53 | shift 54 | else 55 | echo "Client name $1 is not valid!" 56 | usage 1 57 | fi 58 | if [ "$1" = "DHCP" ] || validip "$1"; then 59 | CLIENTIP="$1" 60 | shift 61 | else 62 | echo "Client ip $1 is not valid!" 63 | usage 1 64 | fi 65 | if validhostname "$1"; then 66 | HOSTGROUP="$1" 67 | shift 68 | else 69 | echo "Hostgroup name $1 is not valid!" 70 | usage 1 71 | fi 72 | if validhostname "$1"; then 73 | ROLE="$1" 74 | else 75 | ROLE="classroom-studentcomputer" 76 | fi 77 | 78 | csvline="$ROOM;$CLIENTNAME;$HOSTGROUP;$MACADDR;$CLIENTIP;;;;$ROLE;;1" 79 | 80 | echo "$csvline" > "/tmp/${CLIENTNAME}.new" 81 | 82 | echo "Uploading ${CLIENTNAME}.new to $LINBOSERVER ..." 83 | interruptible rsync --skip-compress="$RSYNC_SKIP_COMPRESS" --progress -HaP "/tmp/${CLIENTNAME}.new" "${USERNAME}@${LINBOSERVER}::linbo-upload/${CLIENTNAME}.new" 84 | 85 | exit "$?" 86 | -------------------------------------------------------------------------------- /serverfs/usr/share/linuxmuster/linbo/templates/grub.cfg.local: -------------------------------------------------------------------------------- 1 | # 2 | # default grub.cfg, local boot version (placed in linbo cache) 3 | # thomas@linuxmuster.net 4 | # 20250808 5 | # 6 | 7 | set default=0 8 | set fallback=1 9 | set timeout=0 10 | 11 | #loadfont "$prefix/unicode.pf2" 12 | if [ "$grub_platform" = "pc" ]; then 13 | insmod biosdisk 14 | insmod ntldr 15 | else 16 | insmod efi_gop 17 | insmod efi_uga 18 | fi 19 | insmod all_video 20 | insmod png 21 | insmod gfxterm 22 | insmod gfxmenu 23 | insmod chain 24 | insmod configfile 25 | insmod ext2 26 | insmod fat 27 | insmod ntfs 28 | insmod linux 29 | insmod loadenv 30 | insmod minicmd 31 | insmod part_msdos 32 | insmod part_gpt 33 | insmod progress 34 | insmod reiserfs 35 | insmod search 36 | insmod terminal 37 | insmod test 38 | 39 | # find cache partition and set it as root 40 | if search --set root --file /start.conf; then 41 | set linboroot="${root}" 42 | fi 43 | 44 | set prefix=/boot/grub 45 | 46 | # try to boot os directly if reboot is set 47 | menuentry 'OS localboot' { 48 | if [ -s $prefix/grubenv ] ; then 49 | echo -n Loading grub environment ... 50 | load_env 51 | echo 52 | fi 53 | 54 | if [ -n "${reboot_iso}" ]; then 55 | search --set tmproot --file "/${reboot_iso}" 56 | elif [ -n "${reboot_label}" ]; then 57 | search --label "$reboot_label" --set tmproot 58 | fi 59 | if [ -n "${reboot_grub}" -a -z "${tmproot}" ]; then 60 | set tmproot="${reboot_grub}" 61 | fi 62 | 63 | if [ -n "${tmproot}" ]; then 64 | terminal_output console 65 | echo Booting operating system ... 66 | echo 67 | 68 | set reboot_grub="" 69 | set reboot_label="" 70 | save_env reboot_grub 71 | save_env reboot_label 72 | set root="${tmproot}" 73 | set win_efiloader="/EFI/Microsoft/Boot/bootmgfw.efi" 74 | 75 | if [ -n "$reboot_iso" -a -e "/$reboot_iso" ]; then 76 | set isofile="${reboot_iso}" 77 | set reboot_iso="" 78 | save_env reboot_iso 79 | loopback loop /${isofile} 80 | linux (loop)/$reboot_kernel $reboot_append 81 | initrd (loop)/$reboot_initrd 82 | boot 83 | elif [ -e "$reboot_kernel" -a -e "$reboot_initrd" ]; then 84 | linux $reboot_kernel $reboot_append 85 | initrd $reboot_initrd 86 | boot 87 | elif [ -e /boot/vmlinuz -a -e /boot/initrd.img ]; then 88 | linux /boot/vmlinuz $reboot_append 89 | initrd /boot/initrd.img 90 | boot 91 | elif [ -e /boot/vmlinuz -a -e /boot/initrd ]; then 92 | linux /boot/vmlinuz $reboot_append 93 | initrd /boot/initrd 94 | boot 95 | elif [ -e /vmlinuz -a -e /initrd.img ]; then 96 | linux /vmlinuz $reboot_append 97 | initrd /initrd.img 98 | boot 99 | elif [ -e /vmlinuz -a -e /initrd ]; then 100 | linux /vmlinuz $reboot_append 101 | initrd /initrd 102 | boot 103 | elif [ -s /boot/grub/grub.cfg ] ; then 104 | configfile /boot/grub/grub.cfg 105 | elif [ "$grub_platform" = "pc" ]; then 106 | if [ -s /bootmgr ] ; then 107 | ntldr /bootmgr 108 | boot 109 | elif [ -s /ntldr ] ; then 110 | ntldr /ntldr 111 | boot 112 | elif [ -s /grldr ] ; then 113 | ntldr /grldr 114 | boot 115 | else 116 | chainloader +1 117 | boot 118 | fi 119 | elif [ -e "$win_efiloader" ]; then 120 | chainloader $win_efiloader 121 | boot 122 | fi 123 | 124 | # if no reboot is set load group specific custom.cfg if present 125 | elif [ -s /boot/grub/custom.cfg ] ; then 126 | configfile /boot/grub/custom.cfg 127 | fi 128 | } 129 | 130 | # boot linbo local from cache in failsafe mode 131 | menuentry 'LINBO' { 132 | # kernel & initrd 133 | set linbo_kernel=/linbo64 134 | set linbo_initrd=/linbofs64 135 | 136 | set root="${linboroot}" 137 | if [ -e "$linbo_kernel" -a -e "$linbo_initrd" ]; then 138 | set gfxpayload=640x480x16 139 | echo "LINBO localboot in failsafe mode" 140 | echo -n "Loading $linbo_kernel .." 141 | linux $linbo_kernel quiet localboot nomodeset 142 | echo 143 | echo -n "Loading $linbo_initrd .." 144 | initrd $linbo_initrd 145 | boot 146 | else 147 | echo -n "Initiating pxe boot ..." 148 | if [ "$grub_platform" = "pc" ]; then 149 | linux16 /ipxe.lkrn dhcp 150 | else 151 | chainloader /ipxe.efi 152 | fi 153 | boot 154 | fi 155 | } 156 | -------------------------------------------------------------------------------- /serverfs/usr/sbin/linbo-cloop2qcow2: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # convert cloop image to qcow2 format 4 | # thomas@linuxmuster.net 5 | # 20250326 6 | # 7 | 8 | # read environment 9 | source /usr/share/linuxmuster/helperfunctions.sh || exit 1 10 | 11 | usage(){ 12 | echo 13 | echo "Usage: `basename $0` [output_directory]" 14 | echo 15 | echo "Note:" 16 | echo " * If the cloop image is given without a path and resides not in the" 17 | echo " current directory then $LINBODIR is assumed as input directory." 18 | echo " * If output directory is omitted the output file is created in a" 19 | echo " subdirectory of $LINBOIMGDIR." 20 | echo " * Make sure there is enough space in the output directory." 21 | echo 22 | exit 1 23 | } 24 | 25 | # check inputfile 26 | CLOOPFILE="$1" 27 | inputdir="$(dirname $CLOOPFILE)" 28 | if [ "$inputdir" = "." -a ! -e "$CLOOPFILE" ]; then 29 | # assume inputfile is in LINBODIR 30 | CLOOPFILE="$LINBODIR/$CLOOPFILE" 31 | fi 32 | if [ ! -s "$CLOOPFILE" -o "${CLOOPFILE##*.}" != "cloop" ]; then 33 | [ -z "$CLOOPFILE" ] && CLOOPFILE="[none]" 34 | echo "$CLOOPFILE is no cloop image." 35 | usage 36 | fi 37 | 38 | # check output directory 39 | imagename="$(basename "$CLOOPFILE")" 40 | subdir="${imagename/.cloop/}" 41 | if [ -d "$2" ]; then 42 | TARGETDIR="$2" 43 | elif [ -z "$2" ]; then 44 | TARGETDIR="$LINBOIMGDIR/$subdir" 45 | mkdir -p "$TARGETDIR" 46 | else 47 | echo "Output directory $2 does not exist!" 48 | usage 49 | fi 50 | 51 | # output file 52 | QCOW2FILE="${CLOOPFILE/.cloop/.qcow2}" 53 | if [ -n "$TARGETDIR" ]; then 54 | QCOW2FILE="$TARGETDIR/$(basename $QCOW2FILE)" 55 | else 56 | TARGETDIR="$(dirname "$QCOW2FILE")" 57 | fi 58 | 59 | # get sizes from infofile 60 | infofile="${CLOOPFILE}.info" 61 | if [ -s "$infofile" ]; then 62 | psize_kb="$(grep ^partitionsize "${CLOOPFILE}.info" | awk -F\= '{print $2}')" 63 | psize="$(( $psize_kb / 1024 / 1024 ))" 64 | isize_b="$(grep ^imagesize "${CLOOPFILE}.info" | awk -F\= '{print $2}')" 65 | isize="$(( $isize_b / 1024 / 1024 / 1024 ))" 66 | isize_kb="$(( $isize_b / 1024 ))" 67 | fi 68 | 69 | # get image size from file 70 | if [ -z "$isize" ]; then 71 | isize_b="$(stat -t "$CLOOPFILE" | awk '{print $2}')" 72 | isize="$(( $isize_b / 1024 / 1024 / 1024 ))" 73 | fi 74 | 75 | sizefree_kb="$(LANG=C df -P "$TARGETDIR" | tail -1 | awk '{print $4}')" 76 | if [ $isize_kb -gt $sizefree_kb ]; then 77 | echo "Not enough free space in $TARGETDIR, needed ${isize_kb}K, available ${sizefree_kb}K!" 78 | exit 1 79 | fi 80 | 81 | isize="${isize}G" 82 | psize="${psize}G" 83 | 84 | echo "### $(basename $0) ###" 85 | echo "Input file : $CLOOPFILE" 86 | echo "Output file : $QCOW2FILE" 87 | echo "Image size : $isize" 88 | echo "Partition size: $psize" 89 | echo 90 | 91 | # convert raw image 92 | echo "Converting $(basename $CLOOPFILE) -> $(basename $QCOW2FILE) ..." 93 | if ! qemu-img convert -p -c -f cloop -O qcow2 "$CLOOPFILE" "$QCOW2FILE"; then 94 | rm -f "$QCOW2FILE" 95 | "Conversion to qcow2 image failed!" 96 | exit 1 97 | fi 98 | 99 | # copy supplemental files 100 | imagebase="${QCOW2FILE/.qcow2/}" 101 | for i in info desc postsync prestart reg macct; do 102 | srcfile="${CLOOPFILE/.cloop/}.$i" 103 | [ -e "$srcfile" ] || srcfile="${CLOOPFILE}.$i" 104 | [ -e "$srcfile" ] || continue 105 | case "$i" in 106 | info|desc|macct) cp "$srcfile" "${QCOW2FILE}.$i" ;; 107 | *) cp "$srcfile" "${imagebase}.$i" ;; 108 | esac 109 | done 110 | 111 | # change to targetdir 112 | if [ "$TARGETDIR" != "." ]; then 113 | cd "$TARGETDIR" 114 | QCOW2FILE="$(basename "$QCOW2FILE")" 115 | fi 116 | 117 | # update info file 118 | infofile="${QCOW2FILE}.info" 119 | if [ -s "$infofile" ]; then 120 | echo "Updating $infofile." 121 | sed -i 's|.cloop|.qcow2|g' "$infofile" 122 | tstamp="$(date +%Y%m%d%H%M)" 123 | sed -i "s|^timestamp=.*|timestamp=$tstamp|" "$infofile" 124 | size="$(stat -t "$QCOW2FILE" | awk '{print $2}')" 125 | sed -i "s|^imagesize=.*|imagesize=$size|" "$infofile" 126 | else 127 | echo "Skipping update for missing $infofile." 128 | fi 129 | 130 | # create torrent file 131 | echo "Creating $QCOW2FILE.torrent ..." 132 | ctorrent -t -u http://"$serverip":6969/announce -s "$QCOW2FILE.torrent" "$QCOW2FILE" 133 | 134 | # restart linbo-torrent if file is created in LINBOIMGDIR 135 | stringinstring "$LINBOIMGDIR" "$TARGETDIR" && linbo-torrent restart 136 | --------------------------------------------------------------------------------