Your question is very interesting.
I'm running about 120 LTSP fat clients in two buildings using Ubuntu 16.04.6 LTS server.
All fat clients use recommended MATE DE.
So my server has all necessary LTSP components.
I have just tested that it is possible to convert /opt/ltsp/images/amd64.img
SquashFS image to VirtualBox harddrive.
Below is the procedure I have used to convert it to VM.
1. Mount LTSP SquashFS image and copy its contents to new empty raw harddisk
1.1. Operations on host system
Create mount point
mkdir ~/ltsp_sfs
and mount squashfs LTSP image file:
sudo mount -o loop /opt/ltsp/images/amd64.img ~/ltsp_sfs
Create empty raw hard disk and copy squashfs to it.
Allocate 20 Gb of space:
fallocate -l 20G ~/ltsp.raw
Create partitions on raw disk with any software. Below is fdisk
method:
(
echo n # new partition
echo p # it is primary
echo # and first
echo # starts at default
echo # ends at end
echo w # write changes
) | fdisk ~/ltsp.raw
Create loop-devices for ~/ltsp.raw
file using kpartx
:
sudo kpartx -a -v ~/ltsp.raw
and format its first partition (check exact device name with losetup
) with label:
sudo mkfs.ext4 /dev/mapper/loop1p1 -L LTSP
then mount it
mkdir ~/ltsp_ext4
sudo mount /dev/mapper/loop1p1 ~/ltsp_ext4
Copy squashfs contents to new ext4 partition
sudo cp -a ~/ltsp_sfs/* ~/ltsp_ext4/
and set correct partition label in /etc/fstab
:
echo "LABEL=LTSP / ext4 noatime 0 1" | sudo tee ~/ltsp_ext4/etc/fstab
1.2. Operations in chroot
Chroot to copied filesystem:
sudo mount --types proc /proc ~/ltsp_ext4/proc
sudo mount --bind /sys ~/ltsp_ext4/sys
sudo mount --bind /dev ~/ltsp_ext4/dev
sudo chroot ~/ltsp_ext4/
Install GRUB bootloader into virtual drive:
sudo grub-install /dev/loop1
grub-mkconfig -o /boot/grub/grub.cfg
Create new ltsp
user as member of sudo
group with password:
useradd -m -G users,audio,sudo -s /bin/bash ltsp
passwd ltsp
Exit from chroot
exit
unmount its partition and detach loopback devices:
sudo umount ~/ltsp_ext4/proc
sudo umount ~/ltsp_ext4/sys
sudo umount ~/ltsp_ext4/dev
sudo umount ~/ltsp_ext4/
sudo kpartx -d -v ltsp.raw
2. Boot resulting virtual harddrive in virtual machine
2.1. Using QEMU-KVM
Launch LTSP image using QEMU-KVM:
kvm -m 1024 -drive file=~/ltsp.raw,format=raw
and login to system as ltsp
user.
Do not touch system services, to keep image compatible with LTSP init-scripts.
2.2. Using VirtualBox VM
Create new VMDK harddisk as linked to our raw harddisk:
VBoxManage internalcommands createrawvmdk -filename ~/ltsp.vmdk -rawdisk ~/ltsp.raw
then attach it to VirtualBox VM and boot it.
3. Use contents of changed drive to create new LTSP image
Then you can try to modify the contents of new virtual hardrive and copy them back to /opt/ltsp/amd64
of the server. Then try to call sudo update-ltsp-images amd64
to get it converted back to squashfs file-system.
I'm sorry I do not have resources to check this. I hope you got the idea.