分类 各种DIY 下的文章

0 相关信息

Ubuntu Server 24.04

1 工具准备

sudo apt install network-manager wpasupplicant wireless-tools

2 过程

查看无线网卡名称:

ip addr

1.PNG
一般wl开头的为无线网卡。比如,我这里的无线网卡就是wlo1
扫描无线网络:

sudo iwlist wlo1 scan | grep ESSID  # 注意将 wlan0 换成实际无线网卡的设备名

结果如下:
2.PNG
记录下想要链接的wifi名称。
编辑配置文件:

cd /etc/netplan/
ls

通过以上命令查看配置文件,比如我这里显示配置文件名为50-cloud-init.yaml。然后执行以下命令:

sudo vim /etc/netplan/50-cloud-init.yaml

在下面添加wifis,将配置文件改为类似以下格式:

network:
  version: 2
  renderer: NetworkManager
  
  ethernets:
    eth0:
      dhcp4: true
      optional: true
      
  wifis:
    wlan0:
      dhcp4: true
      access-points:
        "wifi_name1":
          password: "mypassword"
        "666":
          password: "66666666"

修改完成后保存。
下面连接网络。首先使用以下命令进行检查:

sudo netplan try  # 检查配置文件中是否有语法错误、尝试用新的配置

注意:如果输入sudo netplan try卡顿了,退出了ssh连接,说明你的配置有误,可能需要重启服务器才能恢复,所以提交前请先检查。
结果如下,表示没有错误:
3.PNG
直接按下回车键,然后输入以下命令:

sudo netplan generate  # 生成 renderers 所需的配置文件
sudo netplan apply  # 应用 netplan 新配置,将自动重启 network-manager 使修改生效

连接网络即可成功。
使用以下命令检查是否连接到网络:

ip addr

如果已经连接到网络,输出内容中会有WiFi信息。
如果仍未连接到网络,请执行以下命令尝试启动无线网卡,然后遵循上述步骤重新配置:

sudo ip link set wlo1 up

参考链接

https://muzing.top/posts/9cbf7452/

1 思路

使用systemd用户服务

2 过程

1、创建用户服务文件:

mkdir -p ~/.config/systemd/user
vim ~/.config/systemd/user/my_app.service

用户服务文件模板:

[Unit]
Description=SSH_ct
After=default.target

[Service]
ExecStart=/home/wlg/Softwares/wyc/wyc_linux_64 -token=xx
Restart=always
Environment=PATH=/usr/bin:/bin
WorkingDirectory=/home/wlg/Softwares/wyc
StandardOutput=file:/home/wlg/Softwares/wyc/sshlog.out
StandardError=file:/home/wlg/Softwares/wyc/sshlog.err

[Install]
WantedBy=default.target

上述文件是我想使用的一个内网穿透服务开机自启的服务配置。
其中,比较重要的项目如下:
Description=SSH_ct:描述该服务的功能。
After=default.target:指定服务的启动顺序,表示此服务应该在 default.target 启动后再启动。default.target 通常是用户环境的默认目标.
ExecStart:指定启动服务时要执行的命令。同时根据命令的要求直接传递参数。
Restart:定义服务失败后的重启策略。always 表示服务无论是失败还是正常退出,都会自动重启。
Environment:设置服务运行时的环境变量。
WorkingDirectory:指定服务的工作目录。如果命令需要相对路径访问文件或其他资源,这一点很重要。
StandardOutput:将服务的标准输出 (stdout) 重定向到指定的文件
StandardError:将服务的标准错误输出 (stderr) 重定向到指定的文件
WantedBy:指定该服务在哪个目标(target)下启用。default.target 是系统的默认目标,通常对应于多用户图形界面或命令行登录环境。当启用服务时,会创建一个符号链接,将服务关联到 default.target.wants/ 目录中,从而实现开机启动。
2、刷新 systemd 配置:

systemctl --user daemon-reload

3、启动服务

systemctl --user start SSH_ct.service

4、设置开机自启动:

systemctl --user enable SSH_ct.service

5、检查服务状态:

systemctl --user status SSH_ct.service

3 整体流程

整体流程
当系统达到 default.target 时(通常是启动完成后,进入多用户环境),systemd 会检查 default.target.wants/ 下的服务列表。
它会按照 After=default.target 的依赖顺序启动 SSH_ct 服务。
服务会执行 ExecStart 定义的命令,日志会根据 StandardOutput 和 StandardError 重定向到对应文件。
如果服务意外退出,Restart=always 会让服务自动重启。

4 如何服务需要使用root权限

配置模板:

[Unit]
Description=Resume SLURM nodes on startup
After=network.target slurmctld.service
Requires=slurmctld.service

[Service]
Type=oneshot
ExecStart=/usr/bin/scontrol update NodeName=ubuntu_server State=RESUME
RemainAfterExit=true

[Install]
WantedBy=multi-user.target

注意服务配置文件放置位置不同:创建 systemd 服务文件 编辑 /etc/systemd/system/slurm_resume.service(需要 root 权限)

0 问题描述

在使用pip install -e . --no-build-isolation -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple安装和编译包时,报You're trying to build PyTorch with a too old version of GCC. We need GCC or later.问题,同时无权限安装GCC和G++

1 解决方案

1.1 激活虚拟环境

conda activate {myenv}

1.2 安装cxx-compiler

在安装前,可以先使用
conda search cxx-compiler -c conda-forge查找自己想要的版本。
然后使用命令conda install -c conda-forge cxx-compiler进行安装。

1.3 修改环境变量

export PATH=/{PATH_TO_YOUR_ENV}/bin/:$PATH
export PATH=/{PATH_TO_YOUR_ENV}/lib/:$PATH

1.4 查看gcc版本

使用gcc -v即可查看版本。

2 参考资料

https://blog.csdn.net/qq_43481884/article/details/135916205

简介

  我们经常使用ssh或telnet远程登陆到Linux服务器,而执行一些长时间任务如ftp传输,深度学习等任务时常常使我们感到头疼,因为我们不能关闭远程会话,否则进程会强制终止。screen可以很方便地处理这种情况,让我们可以放心地断开连接而让Linux服务器继续执行任务。下面介绍Linux非root用户如何安装配置screen。

安装screen

  root用户可以直接用yum install screen命令安装screen,但对于非root用户或无网络连接的情况,我们需要使用源码来安装screen。screen下载地址在这里,可选择最新版的下载。
  这里我选择最新版的screen-4.6.2.tar.gz下载,使用tar -zxvf screen-4.6.2.tar.gz -C screen-4.6.2解压到screen-4.6.2目录,目录下的INSTALL文件有安装教程。在该目录下,运行./configure --prefix=/home/username/screen_dir,其中--prefix后面是screen安装目录。执行该指令时,可能会出现如下错误:

configure: error: !!! no tgetent - no screen

这是没有安装ncurses依赖包的缘故,这时就需要先下载安装ncurses,其源码下载地址在这里。同样选择最新版的ncurses-6.1.tar.gz下载,下载后用tar指令解压,解压后用如下指令进行安装:

./configure --prefix=/home/username/ncurses_dir
make
make install
如果第一条命令运行后有Error,可用如下命令尝试替换:
./configure --prefix=/home/username/ncurses_dir --with-shared --without-debug --without-ada --enable-overwrite

这里安装到ncurses_dir,目录下有bin,include,lib,share目录,依赖包在lib目录下。接着切换到screen解压目录,执行如下指令:

export LDFLAGS=’-L/home/username/ncurses_dir/lib’
export CPPFLAGS=’-I/home/username/ncurses_dir/include’
./configure --prefix=’/home/username/screen_dir’
make
make install

这样就能将screen安装到screen_dir目录下了。接着在.bashrc文件里设置screen执行路径,加入export PATH=/home/username/screen_dir/bin:$PATH,接着执行source .bashrc更新PATH,在终端输入screen就能进入screen界面了。

screen使用相关
  screen用户手册可以查阅1或者2。

注意:本教程仅用于libcamera操作。如果使用OpenCV操作,请勿配置本文第三节的内容!在完成第1、2、4节后,OpenCV可正常使用!

背景

最近为新买的树莓派4B安装摄像头。然而网上的教程非常老旧,仍然使用旧版系统进行配置,仍然使用raspistill命令来进行操作,这对于新版树莓派系统来说,会产生command not found报错。同时,网上关于无法使用新命令libcamera调用摄像头的排错教程异常缺乏,同时很多教程互相抄,也许能解决问题,但是多了很多额外配置,是否会对今后产生影响不明确。本教程旨在解决上述问题。
本文可解决以下问题:

  • 树莓派4B配置CSI摄像头
  • 使用libcamera命令操作树莓派摄像头
  • 解决raspistill command not found问题
  • 解决安装摄像头后VNC黑屏并显示Cannot currently show the desktop问题

1 安装摄像头

1、将摄像头安装到树莓派上
首先,查看排线最底部,会发现一面有蓝色胶带,另一面有纹路。
蓝色胶带一面:
有蓝色胶带一面

纹路一面:
有纹路一面

注意,本示意图为3B的示意图,4B的部件有所不同,请根据实际情况调整)找到红圈中的CSI接口,向上轻轻拉黑色的部分,打开CSI接口。然后将蓝色胶带一面朝向网线接口,有纹路一面朝向电源接口,插入到CSI接口中。如示意图所示:
示意图

其中,蓝圈1表示网线接口,蓝圈2右侧为电源接口(注意,本示意图为3B的示意图,4B的部件有所不同,请根据实际情况调整),中间红圈表示CSI接口

2 打开摄像头模块

1、在树莓派终端中输入以下命令,打开配置:

sudo raspi-config

效果如图所示:

然后选择上图中的第三项。
打开如下图所示的新界面,然后选择第一项,如图所示:

在新界面中选择Yes。返回后选择Finish,然后Reboot。此时摄像头已经打开,但还不能使用。

3 配置摄像头

注意:本教程仅用于libcamera操作。如果使用OpenCV操作,请勿配置本文第三节的内容!在完成第1、2、4节后,OpenCV可正常使用!
1、在终端中输入:

sudo nano /boot/config

在最下面添加下面的语句:

dtoverlay=ov5647

注意,上面的命令仅适用于用长长尾巴的CSI摄像头(如上面的图片),非此摄像头,在命令中替换成其他参数,如下表所示。

保存后重启。
重启后,在VNC下使用下面两个命令进行测试:

libcamera-hello
libcamera-jpeg -o test.jpg

其中第一个命令是检测摄像头,会打开界面,显示几秒摄像头拍摄内容后就关闭了。第二个命令是拍摄一张图片,保存在当前目录下面。

4 解决安装摄像头后VNC打不开的问题

使用如下命令

sudo nano /boot/config.txt

将hdmi_force_hotplug=1前面的#删掉即可。如图所示:

然后,输入以下命令进入配置:

sudo raspi-config

效果如图所示:

然后选择上图中的第二项。进去后,将分辨率调到最大,然后保存后reboot树莓派,问题顺利解决。