Dec 5, 2024
TechnologyHardware/OS/Software info:
dash@i9server:~$ cat /etc/issue
Ubuntu 22.04.5 LTS \n \l
dash@i9server:~$ uname -a
Linux i9server 6.8.0-49-generic
dash@i9server:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 64M 1 loop /snap/core20/2379
loop1 7:1 0 63.7M 1 loop /snap/core20/2434
loop2 7:2 0 87M 1 loop /snap/lxd/29351
loop3 7:3 0 89.4M 1 loop /snap/lxd/31333
loop4 7:4 0 38.8M 1 loop /snap/snapd/21759
loop5 7:5 0 44.3M 1 loop /snap/snapd/23258
sda 8:0 0 1.8T 0 disk
└─sda1 8:1 0 1.8T 0 part
sr0 11:0 1 1024M 0 rom
nvme0n1 259:0 0 476.9G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot/efi
└─nvme0n1p2 259:2 0 475.9G 0 part /
dash@i9server:~$ free -m
total used free shared buff/cache available
Mem: 64079 565 60533 2 2981 62859
Swap: 8191 0 8191
dash@i9server:~$ cat /proc/cpuinfo | grep -i model
model : 165
model name : Intel(R) Core(TM) i9-10900 CPU @ 2.80GHz
Install ltsp:
sudo add-apt-repository ppa:ltsp
sudo apt update
sudo apt install
sudo gpasswd -a dash epoptes
Prepare the image:
# ls *.img -l -h
-rw-r--r-- 1 dash dash 4.0G Dec 5 02:33 kylin.img
-rw-r--r-- 1 dash dash 2.6G Dec 5 02:35 ubuntu2004.img
-rw-r--r-- 1 dash dash 3.2G Dec 5 02:34 uos613.img
-rw-r--r-- 1 dash dash 4.4G Dec 5 02:34 zkfd613.img
Create the dns/dhcp, import the images:
ltsp dnsmasq --proxy-dhcp=0
vim /etc/dnsmasq.d/ltsp-dnsmasq.conf
dhcp-range=192.168.1.34,192.168.1.250,600h
mkdir /srv/ltsp && cd /srv/ltsp
ln -s /home/dash/ubuntu2004.img .
ltsp image ubuntu2004
ltsp ipxe
ltsp nfs
Installed /usr/share/ltsp/server/nfs/ltsp-nfs.exports in /etc/exports.d/ltsp-nfs.exports
ltsp initrd
useradd -m test1
useradd -m test2
passwd test1
passwd test2
more images:
rm -f *.img
ln -s /home/dash/uos613.img .
ltsp image uos613 && ltsp ipxe && ltsp initrd
rm -f *.img
ln -s /home/dash/zkfd613.img .
ltsp image zkfd613 && ltsp ipxe && ltsp initrd
rm -f *.img
ln -s /home/dash/kylin.img .
ltsp image kylin && ltsp ipxe && ltsp initrd
Result: zkfd behaves bad
deepin image:
cd /srv/ltsp
ln -s /var/lib/libvirt/trueimages/deepin.img .
ltsp image deepin && ltsp ipxe && ltsp initrd
Dec 3, 2024
Technology安装ltspserver
Configuration:

Installation:

选择正常安装:

用户名创建:

配置:
sudo apt update
sudo apt install -y openssh-server vim nethogs iotop
sudo add-apt-repository ppa:ltsp && sudo apt update
sudo apt install
sudo usermod -aG epoptes test
sudo apt upgrade -y && sudo shutdown -h now
添加一个isolated网卡:

在网络管理下,配置其ip地址为10.17.18.18:

sudo ltsp dnsmasq --proxy-dhcp=0
sudo vim /etc/dnsmasq.d/ltsp-dnsmasq.conf
dhcp-range=10.17.18.20,10.17.18.250,12h
sudo ltsp image /
sudo ltsp ipxe
sudo ltsp nfs
sudo ltsp initrd
sudo useradd -m test1
sudo useradd -m test2
sudo ltsp initrd
测试

4C 4G:

命名:
网络:

引导:

virtualbox创建镜像





pre-allocate Full size:

10G size:


enable 3d acceleration.
虚机分区:

其他按默认安装完毕。
gnome桌面:

进入系统后,关闭lock/sleep等选项。
cd /srv/ltsp/
ls
rm -f debian12_1.img
ln -s /home/test/ubuntu1-flat.vmdk ./ubuntu1.img
ltsp image ubuntu1
ltsp ipxe
Next time reboot then you could enter ubuntu1.
debian got some errors.
kylin problem:
root@ltscserver:/srv/ltsp
root@ltscserver:/srv/ltsp
Running: losetup -rP /dev/loop6 /srv/ltsp/kylin.img
Running: mount -t tmpfs -o mode=0755 tmpfs /tmp/tmp.sV6xy2UAD1/tmpfs
Running: mount -t ext4 -o ro,noload /dev/loop6p1 /tmp/tmp.sV6xy2UAD1/tmpfs/0/looproot
Running: mount -t overlay -o upperdir=/tmp/tmp.sV6xy2UAD1/tmpfs/0/up,lowerdir=/tmp/tmp.sV6xy2UAD1/tmpfs/0/looproot,workdir=/tmp/tmp.sV6xy2UAD1/tmpfs/0/work /tmp/tmp.sV6xy2UAD1/tmpfs /tmp/tmp.sV6xy2UAD1/root/
Cleaning up kylin before mksquashfs...
Traceback (most recent call last):
File "/usr/share/ltsp/client/login/pwmerge", line 440, in <module>
main(sys.argv)
File "/usr/share/ltsp/client/login/pwmerge", line 434, in main
pwm = PwMerge(args[0], args[1], args[2], **dopts)
File "/usr/share/ltsp/client/login/pwmerge", line 117, in __init__
self.dpasswd, self.dgroup = self.read_dir(ddir, dur or dgr)
File "/usr/share/ltsp/client/login/pwmerge", line 151, in read_dir
with open("{}/passwd".format(xdir), "r") as file:
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmp.sV6xy2UAD1/root/etc/passwd'
LTSP command failed: /usr/share/ltsp/client/login/pwmerge --ltsp --quiet /tmp/tmp.sV6xy2UAD1/root/tmp/pwempty /tmp/tmp.sV6xy2UAD1/root/etc /tmp/tmp.sV6xy2UAD1/root/tmp/pwmerged
Aborting ltsp
kylin tips
Add repository:
wget https://ltsp.org/misc/ltsp-ubuntu-ppa-focal.list -O /etc/apt/sources.list.d/ltsp-ubuntu-ppa-focal.list
wget https://ltsp.org/misc/ltsp_ubuntu_ppa.gpg -O /etc/apt/trusted.gpg.d/ltsp_ubuntu_ppa.gpg
apt update
sudo apt install --install-recommends ltsp ltsp-binaries dnsmasq nfs-kernel-server openssh-server squashfs-tools ethtool net-tools epoptes
sudo gpasswd -a test epoptes
Nov 28, 2024
Technologyconfig for lxc common:
lxc.tty.dir = lxc
lxc.pty.max = 1024
lxc.tty.max = 4
lxc.cap.drop = mac_admin mac_override sys_time sys_module sys_rawio
lxc.hook.clone = /usr/share/lxc/hooks/clonehostname
lxc.cgroup.devices.deny = a
lxc.cgroup.devices.allow = c *:* m
lxc.cgroup.devices.allow = b *:* m
lxc.cgroup.devices.allow = c 1:3 rwm
lxc.cgroup.devices.allow = c 1:5 rwm
lxc.cgroup.devices.allow = c 1:7 rwm
lxc.cgroup.devices.allow = c 5:0 rwm
lxc.cgroup.devices.allow = c 5:1 rwm
lxc.cgroup.devices.allow = c 5:2 rwm
lxc.cgroup.devices.allow = c 1:8 rwm
lxc.cgroup.devices.allow = c 1:9 rwm
lxc.cgroup.devices.allow = c 136:* rwm
lxc.cgroup.devices.allow = c 10:229 rwm
lxc.cgroup.devices.allow = c 226:0 rwm
lxc.cgroup.devices.allow = c 226:128 rwm
lxc.cgroup.devices.allow = c 29:0 rwm
lxc.cgroup.devices.allow = c 4:0 rwm
lxc.cgroup.devices.allow = c 4:1 rwm
lxc.cgroup.devices.allow = c 4:7 rwm
lxc.cgroup.devices.allow = c 4:8 rwm
lxc.cgroup.devices.allow = c 116:* rwm
lxc.cgroup.devices.allow = c 13:* rwm
lxc.cgroup2.devices.deny = a
lxc.cgroup2.devices.allow = c *:* m
lxc.cgroup2.devices.allow = b *:* m
lxc.cgroup2.devices.allow = c 1:3 rwm
lxc.cgroup2.devices.allow = c 1:5 rwm
lxc.cgroup2.devices.allow = c 1:7 rwm
lxc.cgroup2.devices.allow = c 5:0 rwm
lxc.cgroup2.devices.allow = c 5:1 rwm
lxc.cgroup2.devices.allow = c 5:2 rwm
lxc.cgroup2.devices.allow = c 1:8 rwm
lxc.cgroup2.devices.allow = c 1:9 rwm
lxc.cgroup2.devices.allow = c 136:* rwm
lxc.cgroup2.devices.allow = c 10:229 rwm
lxc.cgroup2.devices.allow = c 226:0 rwm
lxc.cgroup2.devices.allow = c 226:128 rwm
lxc.cgroup2.devices.allow = c 29:0 rwm
lxc.cgroup2.devices.allow = c 4:0 rwm
lxc.cgroup2.devices.allow = c 4:1 rwm
lxc.cgroup2.devices.allow = c 4:7 rwm
lxc.cgroup2.devices.allow = c 4:8 rwm
lxc.cgroup2.devices.allow = c 116:* rwm
lxc.cgroup.devices.allow = c 13:* rwm
lxc.mount.auto = cgroup:mixed proc:rw sys:mixed
lxc.mount.entry = /sys/fs/fuse/connections sys/fs/fuse/connections none bind,optional 0 0
lxc.mount.entry = /dev/snd dev/snd none bind,optional,create=dir
lxc.seccomp.profile = /usr/share/lxc/config/common.seccomp
lxc.include = /usr/share/lxc/config/common.conf.d/
config added :
lxc.mount.entry = /dev/fb0 dev/fb0 none bind,optional,create=file
lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry = /dev/dri/renderD128 dev/renderD128 none bind,optional,create=file
### allow tty8
lxc.mount.entry = /dev/tty7 dev/tty7 none bind,optional,create=file
lxc.mount.entry = /dev/tty8 dev/tty8 none bind,optional,create=file
lxc.mount.entry = /dev/tty0 dev/tty0 none bind,optional,create=file
#lxc.mount.entry = /dev/tty1 dev/tty1 none bind,optional,create=file
#lxc.mount.entry = /dev/tty2 dev/tty2 none bind,optional,create=file
#lxc.mount.entry = /dev/tty3 dev/tty3 none bind,optional,create=file
### allow all of the input
lxc.mount.entry = /dev/input dev/input none bind,optional,create=dir
### allow all of the snd
lxc.mount.entry = /dev/snd dev/snd none bind,optional,create=dir
The others are the same as previous ones.
Nov 22, 2024
Technology1. Host侧准备
安装必要的包,禁止ipv6后重启.
sudo apt update
sudo apt-get install -y lxc lxcfs
sudo vim /etc/default/grub
...
ipv6.disable=1
...
sudo update-grub2
sudo reboot
更换subuid/subgid:
idvnext@idvnext-PC:~$ cat /etc/subuid
idvnext:100000:65536
root:100000:65536
idvnext@idvnext-PC:~$ cat /etc/subgid
idvnext:100000:65536
root:100000:65536
编辑 /usr/share/lxc/config/common.conf
:
......
lxc.cgroup.devices.allow = a
......
lxc.cgroup.devices.allow = c 1:8 rwm
lxc.cgroup.devices.allow = c 4:0 rwm
lxc.cgroup.devices.allow = c 4:1 rwm
lxc.cgroup.devices.allow = c 4:7 rwm
lxc.cgroup.devices.allow = c 4:8 rwm
lxc.cgroup.devices.allow = c 116:* rwm
......
lxc.cgroup2.devices.allow = a
......
lxc.cgroup2.devices.allow = c 10:229 rwm
lxc.cgroup2.devices.allow = c 226:0 rwm
lxc.cgroup2.devices.allow = c 226:128 rwm
lxc.cgroup2.devices.allow = c 29:0 rwm
lxc.cgroup2.devices.allow = c 4:0 rwm
lxc.cgroup2.devices.allow = c 4:1 rwm
lxc.cgroup2.devices.allow = c 4:7 rwm
lxc.cgroup2.devices.allow = c 4:8 rwm
lxc.cgroup2.devices.allow = c 116:* rwm
lxc.mount.auto = cgroup:mixed proc:rw sys:mixed
lxc.mount.entry = /dev/snd dev/snd none bind,optional,create=dir
......
因为容器中需要对tty的完整控制,在host侧添加以下命令:
$ sudo crontab -e
......
@reboot chmod 777 /dev/tty* && chmod 777 -R /dev/dri/ && chmod 777 /dev/fb0
2. zkfd
创建一个名为zkfd
的lxc实例:
# lxc-create -t local -n zkfdlxc
Unpacking the rootfs
You just created an Ubuntu jammy amd64 (20241021_07:42) container.
To enable SSH, run: apt install openssh-server
No default root or user password are set by LXC.
手动添加透传设备规则:
......
lxc.mount.entry = /dev/fb0 dev/fb0 none bind,optional,create=file
lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry = /dev/dri/renderD128 dev/renderD128 none bind,optional,create=file
lxc.mount.entry = /dev/tty7 dev/tty7 none bind,optional,create=file
lxc.mount.entry = /dev/tty8 dev/tty8 none bind,optional,create=file
lxc.mount.entry = /dev/tty0 dev/tty0 none bind,optional,create=file
lxc.mount.entry = /dev/input dev/input none bind,optional,create=dir
lxc.mount.entry = /dev/snd dev/snd none bind,optional,create=dir
更改lightdm:
......
[LightDM]
......
minimum-vt=8
......
更改events:
# mv /var/lib/lxc/zkfdlxc/rootfs/etc/acpi/events /var/lib/lxc/zkfdlxc/rootfs/etc/acpi/events.bak
2.1 鼠标输入
此时可以看到界面,但是无法用鼠标操作,需要进行修改:
cat >/usr/local/bin/preX-populate-input.sh << __EOF__
#!/usr/bin/env bash
cat >/etc/X11/xorg.conf.d/10-lxc-input.conf << _EOF_
Section "ServerFlags"
Option "AutoAddDevices" "False"
EndSection
_EOF_
cd /dev/input
for input in event*
do
cat >> /etc/X11/xorg.conf.d/10-lxc-input.conf <<_EOF_
Section "InputDevice"
Identifier "\$input"
Option "Device" "/dev/input/\$input"
Option "AutoServerLayout" "true"
Driver "evdev"
EndSection
_EOF_
done
__EOF__
chmod +x /usr/local/bin/preX-populate-input.sh
mkdir -p /etc/systemd/system/lightdm.service.d
cat > /etc/systemd/system/lightdm.service.d/override.conf << __EOF__
[Service]
ExecStartPre=/bin/sh -c '/usr/local/bin/preX-populate-input.sh'
SupplementaryGroups=video render input audio tty
__EOF__
reboot
此时,鼠标应该是可以使用的状态。
2.2 音频配置
安装测试软件:
sudo apt install -y smplayer mplayer
添加:
usermod -aG audio test
/usr/bin/pactl load-module module-alsa-card device_id=1 ; /usr/bin/pactl load-module module-alsa-card device_id=0
2.3 快速创建记录
via:
vim /var/lib/lxc/zkfdlxc1/config
cp preX-populate-input.sh /var/lib/lxc/zkfdlxc1/rootfs/usr/local/bin/
chmod 777 /var/lib/lxc/zkfdlxc1/rootfs/usr/local/bin/preX-populate-input.sh
mkdir -p /var/lib/lxc/zkfdlxc1/rootfs/etc/systemd/system/lightdm.service.d
mkdir -p /var/lib/lxc/zkfdlxc1/rootfs/etc/X11/xorg.conf.d/
cp override.conf /var/lib/lxc/zkfdlxc1/rootfs/etc/systemd/system/lightdm.service.d
mv /var/lib/lxc/zkfdlxc1/rootfs/etc/acpi/events /var/lib/lxc/zkfdlxc1/rootfs/etc/acpi/events.back
3. kylin
创建:
lxc-create -t local -n kylinlxc
仿照2.3
创建相关目录并拷贝相关文件。
创建成功后,需要手动安装:
lxc-attach -n kylinlxc
Nov 21, 2024
Technology安装编译内核所需要的所有依赖:
sudo dnf install fedpkg
git config --global http.proxy 'socks5://192.168.1.6:21080'
fedpkg clone -a kernel
cd kernel
sudo dnf builddep kernel.spec
FEdora dist-git内核包:
mkdir fc_dist-git
cd fc_dist-git
git clone https://src.fedoraproject.org/rpms/kernel.git
根据发行版的版本号,切换到对应的分支:
root@localhost:~/Code/fc_dist-git
Fedora release 40 (Forty)
root@localhost:~/Code/fc_dist-git
root@localhost:~/Code/fc_dist-git/kernel
分支 'f40' 设置为跟踪 'origin/f40'。
切换到一个新分支 'f40'
为了防止与现有的内核版本冲突,设置一个自定义的buildid, 为了加速编译,最好可以全局fanqiang:
...
%define buildid .fucktyy
...

这里需要注意,之前安装过较低版本的手动编译的pahole, 需要恢复之前的:
rm -f /usr/lib/libdwarves* /usr/lib64/libdwarves*
yum reinstall libdwarves1 dwarves
pahole --version
v1.26