放荡不羁的bug - Linux
type: channel
link: http://blog.bug-maker.com/category/linux/
description: Linux
items: Linux | /var/log/journal日志清理
items: 教程 | Linux下VirtualGL+TurboVNC远程桌面使用显卡
items: 教程 | PowerDNS的部署与使用
items: C++ | Linux下源码编译VTK6.1
items: 问题 | 安装Ubuntu server 之后，系统只识别了部分容量。
items: 教程 | debian安装ssh服务及配置root远程登陆
items: 教程 | boost在ubuntu上编译安装
items: Linux | Python3.10.13源码编译安装
items: OpenSSH | 更新到最新版本修复CVE-2023-38408
items: 软件 | Veracrypt开源加密软件-硬盘、U盘、文件夹加密

Linux | /var/log/journal日志清理
type: item
date: 2024-10-22T19:03:00+08:00
description: 说明简单来说 /var/log/journal 下面的日志是由systemd记录写入的日志，有时候该目录会占用比较多的空间，可以通过命令：journalctl --disk-usage或du -sh /var/log/journal/查看空间占用情况，也可以使用 journalctl 命令查看具体的日志信息。清理方法比较简单1、指定日志的大小journalctl --vacuum-size=100M日志指定100MB，超过的就删除2、指定保存时间journalctl --vacuum-time=10d10d为10天，1w为一周以上为手动清理如果要自动清理的话需要 编辑 /etc/systemd/journald.conf 文件 添加 SystemMaxUse=100M 可以指定日志大小超过100MB就自动清理修改保存完执行： systemctl restart systemd-journald 重启生效。

教程 | Linux下VirtualGL+TurboVNC远程桌面使用显卡
type: item
date: 2024-09-13T11:06:00+08:00
description: 背景这里使用的是国产统信UOS操作系统的实体机，显卡是Nvidia Quadro P620，默认源里是没有VirtualGL和TurboVNC两个软件的，所以需要编译安装。还测试了EXSI8.0情况下使用Nvidia Tesla V100直通安装的银河麒麟SP10虚拟机，这里需要注意一下，开机启动方式必须是EFI或者UEFI，并且勾选安全启动，要不直接使用BIdOS的方式启动你的驱动时怎么也安装不上的。安装显卡驱动更新系统及查看相关信息sudo apt update && sudo apt upgrade -y # 更新系统 sudo apt install dkms build-essential linux-headers-generic sudo lsmod | grep nouveau #查看nouveau的开源驱动是否被使用 sudo lspci | grep VGA #查看集成显卡 sudo lspci | grep NVIDIA #查看英伟达显卡 sudo lshw –c video | grep configuration #查看显卡驱动 sudo systemctl stop lightdm # 暂停界面禁用nouveau驱动打开或创建黑名单配置文件：通常，这个文件位于 /etc/modprobe.d/ 目录下。你可以创建一个新的配置文件专门用来禁用 nouveau，例如：sudo touch /etc/modprobe.d/blacklist-nvidia-nouveau.conf cat >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf << EOF blacklist nouveau options nouveau modeset=0 EOF以上作用是将 nouveau 驱动添加到黑名单，并设置 nouveau 不使用任何模式设置。如果时EXSI直通显卡的话需要启用对不支持的GPU的支持。sudo touch /etc/modprobe.d/nvidia.conf cat >> /etc/modprobe.d/nvidia.conf << EOF options nvidia NVreg_OpenRmEnableUnsupportedGpus=1 EOF禁用驱动后，需要重新生成initramfs，以确保在下一次启动时不加载 nouveau 驱动。sudo dracut --force # 重新生成初始化RAM磁盘Fedora、CentOS和RHEL的系统 sudo update-initramfs -u # 重新生成初始化RAM磁盘Debian或Ubuntu的系统 sudo apt --purge remove nvidia-* # 删除所有Nvidia的驱动 sudo reboot #重启系统官网解决此问题的大神回复1官网解决此问题的大神回复2安装Nvidia驱动Nvidia官网查好版本下载指定驱动：NVIDIA-Linux-x86_64-535.183.06.runwget https://us.download.nvidia.com/tesla/535.183.06/NVIDIA-Linux-x86_64-535.183.06.run chmod +x NVIDIA-Linux-x86_64-535.183.06.run # 给文件执行权限 sudo ./NVIDIA-Linux-x86_64-535.183.06.run # 运行后一路回车确认就行查看最终驱动安装结果：VirtualGL编译环境安装# 银河麒麟 yum install gcc gcc-c++ git cmake libstdc++-static # 统信 sudo apt install gcc g++依赖环境安装# 银河麒麟 yum install opencl-headers ocl-icd ocl-icd-devel libX11-devel libXext-devel libXrender-dev libXtst-devel libXt-devel xcb-util-keysyms-devel # 统信 sudo apt install opencl-headers ocl-icd-opencl-dev libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev libxcb-keysyms-dev下载源码编译安装git clone https://github.com/VirtualGL/virtualgl.git # 下载源码项目 cmake . # 配置项目 或者加上-DCMKAE_INSTALL_PREFI…

教程 | PowerDNS的部署与使用
type: item
date: 2024-04-16T18:24:00+08:00
description: PowerDNS简介PowerDNS是一个跨平台的开源DNS服务组件，成立于20世纪90年代末，是开源DNS软件、服务和支持的主要供应商。它提供了三个核心组件：Authoritative、Recursor和dnsdist，分别作为权威服务器、域名递归解析和DNS服务负载均衡来使用，每个服务独立存在，可根据需求进行部署。PowerDNS支持多种数据库后端，包括MySQL、PostgreSQL和SQLite等，以适应不同的实际需求。在Windows环境下，PowerDNS使用Access的mdb文件记录DNS信息，而在Linux/Unix环境下则使用MySQL来记录。PowerDNS的主要特点包括高性能、可扩展性、安全性和灵活性。它采用多线程和多进程的架构，能够处理大量的DNS查询请求，并提供快速的响应时间。同时，PowerDNS支持分布式部署，可以通过添加更多的服务器来扩展系统的容量和吞吐量。在安全性方面，PowerDNS具有DNSSEC（DNS安全扩展）支持和防止DNS缓存污染等功能。安装# 这边是用ubuntu。 sudo apt install pdns pdns-backend-mysql pdns-recursor配置mysqlmysql的服务上网找，我这里用的宝塔。创建pdns_server数据库CREATE TABLE domains ( id INT AUTO_INCREMENT, name VARCHAR(255) NOT NULL, master VARCHAR(128) DEFAULT NULL, last_check INT DEFAULT NULL, type VARCHAR(6) NOT NULL, notified_serial INT DEFAULT NULL, account VARCHAR(40) DEFAULT NULL, PRIMARY KEY (id) ) Engine=InnoDB; CREATE UNIQUE INDEX name_index ON domains(name); CREATE TABLE records ( id BIGINT AUTO_INCREMENT, domain_id INT DEFAULT NULL, name VARCHAR(255) DEFAULT NULL, type VARCHAR(10) DEFAULT NULL, content BLOB(64000) DEFAULT NULL, ttl INT DEFAULT NULL, prio INT DEFAULT NULL, change_date INT DEFAULT NULL, disabled TINYINT(1) DEFAULT 0, ordername VARCHAR(255) BINARY DEFAULT NULL, auth TINYINT(1) DEFAULT 1, PRIMARY KEY (id) ) Engine=InnoDB; CREATE INDEX nametype_index ON records(name,type); CREATE INDEX domain_id ON records(domain_id); CREATE INDEX recordorder ON records (domain_id, ordername); CREATE TABLE supermasters ( ip VARCHAR(64) NOT NULL, nameserver VARCHAR(255) NOT NULL, account VARCHAR(40) NOT NULL, PRIMARY KEY (ip, nameserver) ) Engine=InnoDB; CREATE TABLE comments ( id INT AUTO_INCREMENT, domain_id INT NOT NULL, name VARCHAR(255) NOT NULL, type VARCHAR(10) NOT NULL, modified_at INT NOT NULL, account VARCHAR(40) NOT NULL, comment BLOB(64000) NOT NULL, PRIMARY KEY (id) ) Engine=InnoDB; CREATE INDEX comments_domain_id_idx ON comments (domain_id); CREATE INDEX comments_name_type_idx ON comments (name, type); CREATE INDEX comments_order_idx ON comments (domai…

C++ | Linux下源码编译VTK6.1
type: item
date: 2024-02-04T11:28:00+08:00
description: 背景occ需要vtk依赖。过程添加cmake配置，c++标注指定11的版本CMAKE_CXX_STANDARD 11修改CMake文件，让其使用更高版本的gcc这边gcc版本为11.4的，所以3或4开头的需要修改11开头CMake/GenerateExportHeader.cmake内的169行CMake/vtkCompilerExtras.cmake内的30行[34]修改成[0-9]+修复error: ‘GLintptr’ has not been declared等报错/usr/include/GL/glxext.h文件先备份一下sudo cp /usr/include/GL/glxext.h /usr/include/GL/glxext.h.bak在此文件的474行添加下边两句话typedef ptrdiff_t GLsizeiptr; typedef ptrdiff_t GLintptr;编译及安装make -j8 && make install

问题 | 安装Ubuntu server 之后，系统只识别了部分容量。
type: item
date: 2024-01-09T11:30:00+08:00
description: 描述安装Ubuntu server 22.04之后，df -h发现/挂载的地方大小只有98G，但是硬盘的大小是300G，一大部分都没识别出来。解决办法查看现有的卷组sudo vgdisplay扩展现有的逻辑卷sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv注：注意一下后表的路基卷，跟你查看的挂载信息需要对应上。重新计算逻辑卷大小sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv重新查看一下磁盘的挂载情况(需要3步重新计算才能生效)df -h

教程 | debian安装ssh服务及配置root远程登陆
type: item
date: 2023-11-13T08:36:00+08:00
description: 描述这边用docker安装了一个debian系统，干净的不得了，需要用到远程链接，所以这边需要安装ssh服务更换源1.备份当前的源列表文件：sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak2.使用编辑器打开/etc/apt/sources.list文件：sudo nano /etc/apt/sources.list3.在文件中添加您所需要的更新源（以清华大学debian镜像源为例）：deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free4.保存并退出编辑器。5.更新软件包列表：sudo apt-get update6.升级所有可用的软件包：sudo apt-get upgrade检查apt search openssh-server如果安装会有以下提示root@c07e17c9af4d:~# apt search openssh-server Sorting... Done Full Text Search... Done openssh-server/oldstable,now 1:8.4p1-5+deb11u2 amd64 [installed] secure shell (SSH) server, for secure access from remote machines安装apt install openssh-server -y配置cd /etc/ssh cp sshd_config sshd_config.bak vim sshd_config以下参数需要开启Port 22 PermitRootLogin yes PasswordAuthentication yes开启对应服务service ssh start service ssh status # 查看服务状态最后链接成功，告一段落。。

教程 | boost在ubuntu上编译安装
type: item
date: 2023-10-16T11:23:00+08:00
description: 需求中望这边给的包依赖boost，还是指定1.65.1版本的，但是最新的ubuntu确实安装的1.74，这就很尴尬，直接创建软连接的话还是会报错。那就只能自己编译一下指定版本。boost下载地址boost官网boost指定版本下载定制解压文件tar -xvzf boost_1_65_1.tar.gzbjamboost库自带一套编译工具bjam，bjam本身也是跨平台的，也需要自行编译出来。解压我们下载的boost_1_65_1.zip文件，在目录下有bootstrap.sh和bootstrap.bat两个脚本文件，它们分别用来编译unix和windows下的bjam。编译bjam./bootstrap.sh编译及安装boost./b2 install --prefix="../boost1.65.1" --build-dir="build" --with-filesystem解释： 这里试安装boost，安装目录为上级目录的boost1.65.1，编译目录为build，只编译安装filesyste这个组件b2参数说明项参数说明stage生成链接库（动态库或静态库）到statedir中。（不含头文件）---stagedir=在stage生成模式下的输出目录，支持相对路径。install生成链接库（动态库或静态库）到prefix/lib中，并将头文件放到prefix/include中---prefix=在install生成模式下的输出目录。---build-type=构建指定的预定义库。complete构建所有可能的变体。---build-dir=设置编译过程中间产物的存放路径。---show-libraries显示需要构建和安装步骤的boost库列表，然后退出。---layout=确定是否选择库名和头位置，以便在同一系统上可以使用多版本的boost或多个编译器。versionedboost二进制文件的名称包括boost版本号、编译器的名称和版本以及编码的构建属性。---help帮助文档---with-编译哪些库，例如--with-wave --with-test，表示只编译wave和test库。---without-排除哪些库，例如--without-wave --without-test，表示除了wave库和test库其它都编译。-toolset=msvc-14.0/msvc-14.1/msvc-14.2/gcc指定编译器。b2.exe会自行检索当前系统下的编译器，如果该参数为缺省值，那么b2.exe将使用boost源码根目录下的project-config.jam文件中的第一个编译器。variant=debug/release设置生成的库是调试版本还是发布版本。默认值为release debug即两者都编译。link=static/shared设置生成的库是动态库还是静态库。默认值为satic。threading=single/multi设置是否支持多线程（线程安全）。默认值为multi(多线程)。runtime-link=static/shared设置运行时库的链接方式。默认shared（动态链接）。address-model=32/64设置生成的库地址模式，是32位还是64位。默认两者都编译。--project-config=project-config.jam加载指定项目配置文件。默认值为project-config.jam。

Linux | Python3.10.13源码编译安装
type: item
date: 2023-09-12T08:17:00+08:00
description: 需求最近再适配统信的机器，但是统信的源里的软件都不是最新的，python最高版本就能支持到3.7。然而这边的三方需要的python版本是3.10的，而且需要dev版本，就需要自己重新编译了。基础依赖环境安装sudo apt install libffi-dev tcl-dev tk-dev libbz2-dev zlib1g-dev libsqlit3-dev libxml2-dev libssl-dev libxslt1-dev liblzma-dev libreadline-dev llvm libncurses5-dev libncursesw5-dev xz-utils libgdbm-dev libncurses-dev编译及安装cas_user@casuser:/data/home/cas_user/code/$ tar -zxvf Python-3.10.13.tgz # 解压 cas_user@casuser:/data/home/cas_user/code/$ cd Python-3.10.13 cas_user@casuser:/data/home/cas_user/code/Python-3.10.13$ ./configure --prefix=/home/user/python_install_path --enable-shared CFLAGS=-fPIC # 配置参数 cas_user@casuser:/data/home/cas_user/code/Python-3.10.13$ make -j8 && sudo make install # 编译及安装配置参数解析配置项解释--prefix=path指定安装目录--enable-shared生成.so动态库CFLAGS=-fPIC编译选项--enable-optimizations启用优化其他参数以后补充。

OpenSSH | 更新到最新版本修复CVE-2023-38408
type: item
date: 2023-07-25T13:52:00+08:00
description: 描述2023年7月19日，OpenSSH发布紧急安全补丁，解决OpenSSH ssh-agent转发中存在安全漏洞远程执行CVE-2023-38408。CVE-2023-38408是一个远程代码执行漏洞，位于 ssh-agent 的转发功能内，特别是涉及提供PKCS#11相关服务的情况下。在某些条件下，可以操纵ssh-agent对PKCS#11的支持，以便通过转发的代理套接字来促进远程代码执行。利用的先决条件包括受害者系统上存在特定库以及需要将代理转发到攻击者控制的系统。解决办法1 . 升级到OpenSSH 9.3p2或更高版本：升级到最新版本的OpenSSH至关重要，因为它包含缓解漏洞的关键补丁。确保所有相关系统和服务器及时更新至推荐版本或更高版本。2 . 另外采取预防措施来避免被利用：建议在仅仅OpenSSH用于远程主机管理的机器，通过Openssh配置（sshd_config）、防火墙，安全组ACL等限制来源访问IP为白名单仅可信IP地址，同时，非必要，关闭SSH代理转发功能，禁止在有关主机启用ssh隧道等。关闭SSH代理转发功能方法为：配置/etc/ssh/sshd_configAllowTcpForwarding NO本人选择了更新Openssh的版本（头硬）这边是Centos7的系统，默认的Openssh版本是准备工作（保证编译安装不正确情况下能正常连接服务器）1 . 安装对应服务yum install telnet* xinetd # 安装telnet服务2 . 配置xinetd下面文件内容需要自己创建文件或者编辑vim /etc/xinetd.d/telnetservice telnet{flags=REUSE socket_type=stream wait=no user=root server=/usr/sbin/in.telnetd log_on_failure += USERID disable= no}3 . 启动相关服务# 设置服务开机自启及启动 systemctl enable xinetd.service systemctl enable xinetd.service systemctl enable telnet.socket systemctl start xinetd # 设置防火墙放通telnet firewall-cmd --zone=public --add-port=23/tcp --permanent firewall-cmd --complete-reload # 添加telnet用户（不能直接用root登录） useradd telnet passwd telnet编译安装1 . 使用telnet形式登录后su到管理员2 . 下载源码解压阿里云（官方推荐镜像站）：https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.3p2源码下载地址wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.3p2.tar.gz tar -zxvf openssh-9.3p2.tar.gz # 停止当前ssh服务 systemctl stop sshd3 . 备份相关信息# 备份当前ssh服务及配置 cp -a /etc/ssh /etc/ssh.bak cp -a /usr/sbin/sshd /usr/sbin/sshd.bak cp -a /usr/bin/ssh /usr/bin/ssh.bak # 删除老配置 rm -rf /etc/ssh/* # 卸载已安装的openssh相关软件包 rpm -e `rpm -qa | grep openssh` --nodeps4 . 配置#编译预配置 cd openssh-9.3p2 && ./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-zlib --with-ssl-dir=/usr/local/openssl --with-md5-passwords --with-pam5 . 编译及安装make make install这里编译安装会出现一些问题。提示Ubable to load host key "/etc/ssh/ssh_host_*_key": bad permission等文件权限的错误。问题解决办法：直接重新给文件附上权限chomd 0600 /etc/ssh/ssh_host_*_key6 . 启动# 检查并删除老版本启动脚本 ls /usr/lib/systemd/system…

软件 | Veracrypt开源加密软件-硬盘、U盘、文件夹加密
type: item
date: 2023-07-04T09:44:00+08:00
description: 描述VeraCrypt是一款适用于Windows、Mac OSX和Linux的免费开源磁盘加密软件。基于TrueCrypt 7.1a。主要功能在文件中创建虚拟加密磁盘，并将其作为真实磁盘装载。对整个分区或存储设备（如USB闪存驱动器或硬盘驱动器）进行加密。加密安装Windows的分区或驱动器（启动前身份验证）。加密是自动、实时（动态）和透明的。并行化和流水线技术使数据的读写速度与驱动器未加密时一样快。加密可以在现代处理器上进行硬件加速。提供合理的否认，以防对手强迫你透露密码：隐藏卷（隐写术）和隐藏操作系统。下载地址官方下载网址使用流程（加密文件夹，挂载成磁盘）安装的话就是普通软件的安装流程软件主界面点击创建加密卷选在创建文件型加密卷选择标准的加密卷，隐藏的文件描述特别逗，都能感觉到画面。。。选择加密卷存放的位置配置加密算法，对于我来说默认就行，没人没事闲的处理这些玩应设置加密卷的大小，这里是文件夹挂载磁盘，所以生成文件的大小就是设置的大小，也是挂载加密磁盘后的大小。配置加密卷的密码，下一步的时候密码太简单会有提示格式化加密卷，其中需要移动鼠标来构建随机加密的字符串最后格式化完成创建挂载加密卷文件为本地磁盘挂载成功，正常使用。创建加密磁盘/U盘流程（待处理）优先把U盘或磁盘的加密分区分出来格式化一下。我用的工具是DiskGenius软件主界面点击创建加密卷选在创建加密非系统分区/设备选择标准的加密卷(与加密卷一致)选择加密卷存放的位置配置加密算法，对于我来说默认就行，没人没事闲的处理这些玩应加密卷的大小不用设置，直接是磁盘大小。配置加密卷的密码，下一步的时候密码太简单会有提示格式化加密卷，其中需要移动鼠标来构建随机加密的字符串最后格式化完成创建挂载加密卷磁盘为本地磁盘(或者选中挂载符直接点全部加载)输入密码，挂载成功，正常使用。这里挂载需要注意一下，因为Veracrypt把磁盘变成里加密卷，所以window不能直接识别，每次插入都会提示【使用驱动器中的光盘之前需要将其格式化】，你说加密了你还不能格式话，格式完就成普通磁盘了。