1.安装包
sudo apt install gcc g++ make # 安装依赖
sudo apt update
2.安装nvidia显卡:
1.禁用原有驱动
运行下面代码
sudo gedit /etc/modprobe.d/blacklist.conf
在尾部添加
blacklist nouveau
options nouveau modeset=0
sudo update-initramfs –u
sudo reboot #重启电脑
#重启后执行
lsmod | grep nouveau #输出内容为空,则表示成功禁用
#没有输出则禁用成功
######
在一次重装过程中,我禁用了nouveau重启后发现黑屏,进不去
重启在等待界面按shift进入recover模式,选择ubuntu并进入
在quiet splash 后面加上nomodeset(前置空格),按f10保存
2.下载nvidia驱动
更换ppa源
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
在nvidia官网找到对应版本进行下载
sudo apt install nvidia-driver-xxx #xxx为指定的驱动版本号
sudo reboot #重启
nvidia-smi #查看是否生效
设置显卡
sudo dpkg-reconfigure unattended-upgrades#选择no,不自动更新
3.lxd容器
配置
下载并初始化
sudo snap install lxd # 安装lxd
sudo apt install zfsutils-linux bridge-utils # 用于搭建网桥
sudo lxc init # 初始化lxd
#选错也没关系,还能使用下面命令改
#sudo lxc profile edit default
若无法安装lxd,是snap的原因,重新安装snap
初始化
Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]: no#先不创建
Name of the new storage pool [default=default]: default
Name of the storage backend to use (btrfs, dir, lvm, zfs) [default=zfs]: zfs
Create a new ZFS pool? (yes/no) [default=yes]: yes
Would you like to use an existing block device? (yes/no) [default=no]: yes
# 这里输入我们刚刚做的分区
Path to the existing block device:/dev/sda1
# 每个容器的默认大小
Size in GB of the new loop device (1GB minimum) [default=30GB]: 1024G
Would you like to connect to a MAAS server? (yes/no) [default=no]:
# 是否创建桥接网络
Would you like to create a new local network bridge? (yes/no) [default=yes]: yes
What should the new bridge be called? [default=lxdbr0]: lxdbr0
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: auto#一定
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: auto
Would you like the LXD server to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:
创建存储池和容器
重装是安装存储池报错,说是sda1已经有了一个激活的存储池,(这是因为之前的系统并没有动固态,所以下次可以先不删除容器和存储池),强行清理sda1上的zfpool文件:
sudo zpool labelclear /dev/sda1 -f
lxc storage create zfs-pool zfs source=/dev/nvme0n1p1
#创建存储池,路径根据自己的卡
lxc storage list #列出存储池
sudo lxc launch ubuntu:20.04 paige -s zfs-pool#创建名为paige的容器,ubuntu版本与宿主机一致,并挂载到共享存储池中
lxc exec paige bash #进入容器,进去之后是root用户,实际上还自带一个ubuntu用户
passwd root #设置root密码
passwd ubuntu #设置ubuntu密码,最好与root密码相同
# 设置ssh
sudo vim /etc/ssh/sshd_config #将 PasswordAuthentication 改为yes
systemctl restart sshd #重启ssh服务
#用lxc list查看容器ip
#通过上诉步骤后返回宿主机,建立端口与容器的映射关系,这里宿主机的6002端口映射到了容器的22端口,ssh连接宿主机的6002端口即可进入容器
sudo lxc config device add paige proxy0 proxy listen=tcp:192.168.2.85:6002 connect=tcp:10.228.141.116:22 bind=host
ssh ubuntu@192.168.2.85 -p 6002#直连容器
#若错误,删除proxy0
sudo lxc config device remove paige proxy0
容器配置:
#分给容器gpu
lxc config device add xiaohua gpu gpu
#否则容器里的nvidia驱动没用
需要给容器也下载nvidia驱动
lxd联网问题
1.permiss deny
进入容器,cd/etc/ssh vim sshd_config:
修改里面的passwoardauto 为yes
再重启ssh服务
********
进入容器 输入vi /etc/ssh/sshd_config.d/60-cloudimg_setting.conf
将pas改为yes
2.不能为容器设置两个proxy,如果设置两个,容器关闭再打开时会报错吗,因为只能一个proxy联网,另一个没连的情况下打不开容器
文件系统故障
强制重启后发现进不去图形界面,进入了紧急模式:
问题在于磁盘挂载,enter进入root模式$ journalctl -xb,输入/fsck failed 若找不到问题,退出输入vim /etc/fstab,找到挂载的盘,注释掉,强制重启 reboot-f
宿主机拷贝文件到容器
scp -r /path/to/local/file user@localhost:/path/to/container/
请将/path/to/local/file
替换为您要复制的本地文件路径,将user
替换为LXD容器的用户名,将localhost
替换为LXD服务器的IP地址或主机名,将/path/to/container/
替换为容器内要复制到的路径。
例如,如果您要复制名为myfile.txt
的文件,该文件位于/home/user/documents/
目录中,并且您要将文件复制到名为mycontainer
的容器中,则命令应如下所示:
scp -r /home/user/documents/myfile.txt user@localhost:/home/
若出现permission denied 表明路径不对,放在/home/ubuntu/
相关链接
you are in emergency mode解决办法-CSDN博客
vim命令大全-CSDN博客
基于LXD搭建多人共用GPU服务器,简单易用,全网最详细!_lxd部署-CSDN博客lxd常用命令_Paige Norton的博客-CSDN博客
【精选】Ubuntu20.04安装CUDA+CUDNN+Conda+PyTorch_ubuntu20.04安装cuda和cudnn_帅帅气气的黑猫警长的博客-CSDN博客