1. 挂载 LTSP SquashFS 映像并将其内容复制到新的空原始硬盘

1. 挂载 LTSP SquashFS 映像并将其内容复制到新的空原始硬盘

我们有一个带有 LTSP 的 Ubuntu 映像,用于启动大约 60 台教室 PC(Ubuntu 胖客户端)。

我们面临的最困难的部分是维护可启动映像(保持最新的安全更改)以及让教授在校外测试映像。

我想知道老师是否可以使用 Virtualbox 设置定制的磁盘映像,并使用我们的 LTSP 服务器进行部署。

答案1

你的问题很有趣。

我在两栋楼里运行了大约 120 个 LTSP 胖客户端,使用的是 Ubuntu 16.04.6 LTS 服务器。
所有胖客户端都使用推荐 MATE DE

所以我的服务器拥有所有必要的 LTSP 组件。

我刚刚测试了是否可以将/opt/ltsp/images/amd64.imgSquashFS 映像转换为 VirtualBox 硬盘。
下面是我将其转换为 VM 所用的步骤。

1. 挂载 LTSP SquashFS 映像并将其内容复制到新的空原始硬盘

1.1. 主机系统上的操作

创建挂载点

mkdir ~/ltsp_sfs

并挂载 squashfs LTSP 映像文件:

sudo mount -o loop /opt/ltsp/images/amd64.img ~/ltsp_sfs

创建空的原始硬盘并将 squashfs 复制到其中。

分配 20 Gb 的空间:

fallocate -l 20G ~/ltsp.raw

使用任何软件在原始磁盘上创建分区。方法如下fdisk

(
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

~/ltsp.raw使用以下命令为文件创建循环设备kpartx

sudo kpartx -a -v ~/ltsp.raw

并格式化其第一个分区(使用 检查确切的设备名称losetup),标签为:

sudo mkfs.ext4 /dev/mapper/loop1p1 -L LTSP

然后挂载它

mkdir ~/ltsp_ext4
sudo mount /dev/mapper/loop1p1 ~/ltsp_ext4

将 squashfs 内容复制到新的 ext4 分区

sudo cp -a ~/ltsp_sfs/* ~/ltsp_ext4/

并设置正确的分区标签/etc/fstab

echo "LABEL=LTSP  /  ext4  noatime  0  1" | sudo tee ~/ltsp_ext4/etc/fstab

1.2. chroot 中的操作

Chroot 到复制的文件系统:

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/

将 GRUB 引导加载程序安装到虚拟驱动器中:

sudo grub-install /dev/loop1
grub-mkconfig -o /boot/grub/grub.cfg

创建新ltsp用户作为组成员sudo并设置密码:

useradd -m -G users,audio,sudo -s /bin/bash ltsp
passwd ltsp

退出 chroot

exit

卸载其分区并分离环回设备:

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. 在虚拟机中启动生成的虚拟硬盘

2.1. 使用 QEMU-KVM

使用 QEMU-KVM 启动 LTSP 映像:

kvm -m 1024 -drive file=~/ltsp.raw,format=raw

并以用户身份登录系统ltsp

不要触碰系统服务,以保持图像与 LTSP 启动脚本兼容。

2.2. 使用 VirtualBox 虚拟机

创建与我们的原始硬盘链接的新 VMDK 硬盘:

VBoxManage internalcommands createrawvmdk -filename ~/ltsp.vmdk -rawdisk ~/ltsp.raw

然后将其附加到 VirtualBox VM 并启动它。

3. 使用更改后的驱动器的内容创建新的 LTSP 映像

然后您可以尝试修改新虚拟硬盘的内容并将其复制回/opt/ltsp/amd64服务器。然后尝试调用sudo update-ltsp-images amd64以将其转换回 squashfs 文件系统。

抱歉,我没有资源来检查这一点。希望您明白了。

相关内容