![1. 挂载 LTSP SquashFS 映像并将其内容复制到新的空原始硬盘](https://linux22.com/image/910430/1.%20%E6%8C%82%E8%BD%BD%20LTSP%20SquashFS%20%E6%98%A0%E5%83%8F%E5%B9%B6%E5%B0%86%E5%85%B6%E5%86%85%E5%AE%B9%E5%A4%8D%E5%88%B6%E5%88%B0%E6%96%B0%E7%9A%84%E7%A9%BA%E5%8E%9F%E5%A7%8B%E7%A1%AC%E7%9B%98.png)
我们有一个带有 LTSP 的 Ubuntu 映像,用于启动大约 60 台教室 PC(Ubuntu 胖客户端)。
我们面临的最困难的部分是维护可启动映像(保持最新的安全更改)以及让教授在校外测试映像。
我想知道老师是否可以使用 Virtualbox 设置定制的磁盘映像,并使用我们的 LTSP 服务器进行部署。
答案1
你的问题很有趣。
我在两栋楼里运行了大约 120 个 LTSP 胖客户端,使用的是 Ubuntu 16.04.6 LTS 服务器。
所有胖客户端都使用推荐 MATE DE。
所以我的服务器拥有所有必要的 LTSP 组件。
我刚刚测试了是否可以将/opt/ltsp/images/amd64.img
SquashFS 映像转换为 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 文件系统。
抱歉,我没有资源来检查这一点。希望您明白了。