cmake_note

Note of cmake quick start

1.Install cmake

1
sudo pacman -S cmake

2.Write your cpp program

1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>

int main()
{
std::cout << "Hello cpp!" << std::endl;

int a = 10;
int b = a * 2;
std::cout << "b is " << b << std::endl;

return 0;
}

3.Write CMakeLists.txt in project directory

1
2
3
4
5
6
7
8
cmake_minimum_required(VERSION 3.15)

# set the project name
project(Maintest)

# add the executable
add_executable(Maintest main.cpp)

4.Make directory build and into it to init cmake, then build the project.

1
2
3
4
mkdir build
cd build
cmake ..
cmake --build .

Now, you can see all the build files in build directory, you can run program like this

1
./Maintest

hexo_settings

文章的存放和静态资源的处理

静态资源的处理

对于我这种习惯于将文档引用的静态资源存放在一个单独的文件中的人, 则需要使用更组织化的方式来管理资源

需要在_config.yml启用配置

1
2
3
4
post_asset_folder: true
marked:
prependRoot: true
postAsset: true

skip static sources render

1
skip_render: /static/*/**
  • ‘*’: Any file or directory in parent folder.
  • ‘**’: All the file and directory in parent folder and its child folder.

关于文本文件乱码

将乱码文件的编码改为UTF-8就不乱码了。

archlinux安装配置KVM虚拟机

archlinux安装配置KVM虚拟机

一、检查硬件支持

  1. 虚拟化支持检测
    执行命令:
1
2
grep -E "(vmx|svm)" --color=always /proc/cpuinfo  # 直接检测CPU虚拟化标志[2](@ref)
lsmod | grep kvm # 验证内核模块是否加载[2](@ref)
  1. 若 lsmod 无输出,需手动加载模块

(二选一)

1
2
sudo modprobe kvm_intel  # Intel CPU
sudo modprobe kvm_amd # AMD CPU


二、安装必要软件包

  • 安装核心组件
    1
    sudo pacman -S qemu-desktop libvirt virt-manager virt-viewer dmidecode ebtables iptables-nft dnsmasq bridge-utils openbsd-netcat ovmf

三、配置服务与用户权限

  1. 配置 libvirt 规则
    1
    sudo nano /etc/polkit-1/rules.d/50-libvirt.rules
    内容:
1
2
3
4
5
6
7
/* 允许 kvm 用户组成员无需认证即可管理 libvirt 守护进程 */
polkit.addRule(function(action, subject) {
if (action.id == "org.libvirt.unix.manage" &&
subject.isInGroup("kvm")) {
return polkit.Result.YES;
}
});
  1. 将用户加入必要用户组

    1
    sudo usermod -aG libvirt,kvm $(whoami)

    完成后需 重新登录(或重启) 或执行 newgrp libvirt 使配置生效

  2. 配置 Libvirt 权限(可选)
    编辑 /etc/libvirt/libvirtd.conf ,确保以下配置:

    1
    2
    unix_sock_group = "libvirt"
    unix_sock_rw_perms = "0770"
  3. 启动并启用 libvirtd 和 virtlogd 服务,不要开机自启 dnsmasq 服务,因为 libvirt 在创建和开启虚拟机时自动实例化一个 dnsmasq 进程

    1
    sudo systemctl enable --now libvirtd virtlogd

四、创建虚拟机

  1. 使用图形化工具(推荐)
    启动 virt-manager
    1
    virt-manager
    • 点击“新建虚拟机”,选择 ISO 镜像或网络安装源。
    • 配置 CPU、内存、磁盘大小等参数。

五、管理虚拟机

常用命令

1
2
3
4
virsh list --all      # 查看所有虚拟机
virsh start arch-vm # 启动虚拟机
virsh shutdown arch-vm # 正常关机
virsh destroy arch-vm # 强制关闭


六、常见问题

  1. 网络桥接配置失败
    确保 bridge-utils 已安装,并配置 /etc/netctlsystemd-networkd 的网络桥接。

  2. 权限不足错误
    检查用户是否在 libvirtkvm 组,并重启服务。


通过以上步骤,您可以在 Arch Linux 上顺利安装和管理 KVM 虚拟机。如需更详细的网络配置或性能优化,可参考 Arch Wiki 的 KVM 专题文档。

Arch Linux 使用笔记

Arch Linux 使用笔记

1.Steam游戏使用NVIDIA显卡启动游戏

需要在启动参数里加入如下参数:

1
__NV_PRIME_RENDER_OFFLOAD=0 __GLX_VENDOR_LIBRARY_NAME=nvidia %command%

注意0还是1取决于独立显卡是GPU0还是GPO1,以上内容来自arch linux PRIME 相关内容。

2.bluetooth

安装bluez bluez-utils,提供bluetoothctl功能

1
sudo pacman -S bluez bluez-utils

启用btusb

1
modprobe btusb

启用bluetooth并启动:

1
2
sudo systemctl enable bluetooth
sudo systemctl start bluetooth

3.os-prober

注意第一步编辑/etc/default/grub 文件,启用探测其他操作系统

1
GRUB_DISABLE_OS_PROBER=false

使用os-prober探测windows启动项

1
sudo os-prober

生成grub配置文件

1
sudo grub-mkconfig -o /boot/grub/grub.cfg

4.fstab

在arch linux直接使用genfstab需要安装arch-install-scripts

1
sudo pacman -S arch-install-scirpts

生成fstab文件

1
sudo genfstab /

当然也可以直接修改/etc/fstab文件,我也推荐这么做
以下是fstab文件例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# UUID=4265f350-0ffa-4474-8bf8-b0dc9812ead9
/dev/nvme0n1p8 / ext4 rw,relatime 0 1

# UUID=2C7D-1124
/dev/nvme0n1p6 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2

# UUID=A62E-F384 LABEL=SYSTEM
/dev/nvme0n1p1 /boot2 vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2

# UUID=80d6aa7e-5b55-4c61-ac91-87df704f79a0
/dev/nvme0n1p7 none swap defaults 0 0

# UUID=10A70B5E10A70B5E
/dev/nvme0n1p3 /mnt/c_driver ntfs-3g defaults 0 0

# UUID=D850FD3A50FD2044
/dev/sda2 /mnt/HDD ntfs-3g defaults 0 0

# UUID=186a2a5a-ee28-a640-9a39-78467b6f2f49
/dev/sda3 /mnt/HDD2 ext4 defaults 0 0

注意:要挂在NTFS文件系统的磁盘需要安装ntfs-3g

1
sudo pacman -S ntfs-3g

然后编写/etc/fstab文件,每个挂载磁盘前面加上UUID,查询UUID的方法:
可以先使用lsblk查看所有的磁盘分区及挂在情况

1
lsblk

再查询指定分区UUID

1
sudo blkid /dev/nvme0n1p1

然后按照fstab文件格式将要挂在的分区写入后重启即可自动挂载。

5.关于更新arch

1
2
sudo pacman -S archlinux-keyring archlinuxcn-keyring
sudo pacman -Syu

6.openssh

安装openssh

1
sudo pacman -S openssh

查看openssh状态

1
sudo systemctl status sshd

如果 Open SSH 服务器未运行,终端应显示“inactive”。如果是这种情况,您可以通过输入以下命令来运行 Open SSH:

1
sudo systemctl start sshd

然后,通过再次输入以下内容来确保它是否正在运行:

1
sudo systemctl status sshd

如果 Open SSH 正在运行,提示符将以绿色显示“active”。如果要终止 SSH 服务器,请输入以下内容:

1
sudo systemctl stop sshd

7.vim剪切板与系统剪切板互通

查看vim是否支持与系统剪切板互通,可以用这个来检查clipboard那一项是 + 还是 - :

1
vim --version | grep clipboard

如果结果里出现-clipboard ,可以卸载vim安装gvim

1
2
sudo pacman -R vim
sudo pacman -S gvim

安装后再查看vim的剪切板特性,看到 +clipboard,表示支持与系统剪切板互通
然后不管你是 set clipboard = unnamed 还是用寄存器 “+p 和 “+y,应该都可以了