分类目录归档:技术笔记

Paralles Desktop 修改虚拟机用户密码

最近在使用 Paralles Desktop 过程中,发现一旦忘记用户密码,是一件挺麻烦的事情。尝试各种方法打不开 grub 启动菜单。

后来发现可以使用其提供的命令工具修改用户密码,很好用,在此记录:

# 首先获取虚拟机 UUID
$ prlctl list
UUID                                    STATUS       IP_ADDR         NAME
{fdf05394-dc61-4d07-b6e5-e81ef5277a64}  running      -               Ubuntu 22.04 ARM64

# 设定用户密码
$ prlctl set fdf05394-dc61-4d07-b6e5-e81ef5277a64 --userpasswd 
<USERNAME>:<PASSWORD>
Authentication tokens updated successfully.
Success. The operation was successfully completed.

The VM has been successfully configured.

参考文献

m1 MacBook 安装 asahi linux 磁盘调整失败解决

尝试在 MacBook Air m1 安装 asahi linux ,在磁盘分区过程遭遇报错,具体过程没有留下来,是类似这样的报错:

error: doc-id tree: record exists for doc-id 64, file-id 9665861 but no inode references this doc-id

大致解决是要进恢复模式,之后使用急救程序尝试修复。

尝试后发现还是报错,后来在 asahi linux 的 github 找到一个类似问题,使用下列方法解决:

I had a similar issue, where /dev/disk3s5 had warnings that wouldn’t go away, and I solved it as follows:

Boot into recovery and open a terminal
`diskutil unmountdisk /dev/disk3`
`fsck_apfs /dev/disk3` (and hit y in response to the various prompts)

I believe unmounting was the important part.

之后磁盘分区就不报错了。

参考文献: https://github.com/AsahiLinux/asahi-installer/issues/88#issuecomment-1095019173

Linux 使用 chrony 进行 NTP 时间同步及自建方法

chrony是网络时间协议的实现。它可以替代ntpd,后者是NTP的参考实现。它在类Unix操作系统上运行,并在GNU GPL v2下发布。

服务端和客户端配置文件都是同一个,分别配置为服务器和客户端即可使用, 配置文件在 /etc/chrony.conf or /etc/chrony/chrony.conf ,具体看版本, 可以使用 man chrony 确认一下。

服务端配置

服务端配置:

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server s1a.time.edu.cn iburst
server ntp.aliyun.com iburst

# Allow NTP client access from local network.
allow 192.168.8.0/24

开启同步

systemctl enable chronyd
systemctl restart chronyd

# 查看时间同步状态
timedatectl status
# 开启网络时间同步
timedatectl set-ntp true

客户端配置

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 192.168.8.5 iburst

# Allow NTP client access from local network.

开启同步

systemctl enable chronyd
systemctl restart chronyd

# 查看时间同步状态
timedatectl status
# 开启网络时间同步
timedatectl set-ntp true

常用命令

# 查看 ntp_servers
chronyc sources -v

# 查看 ntp_servers 状态
chronyc sourcestats -v

# 查看 ntp_servers 是否在线
chronyc activity -v

# 查看 ntp 详细信息
chronyc tracking -v

参考文献

Linux 删除 LVM 步骤

以下为删除 LVM 步骤,需要按照顺序执行:

Step1. 卸载文件系统

卸载 LV 上的文件系统。

a.执行命令 mount –l 命令查看目前LV挂载到本地的目录。 b. 执行 umount 挂载的目录卸载挂载在LV上的文件系统。

Step2. 移除 LV

使用 lvdisplay 命令查询LV信息,获取需要删除 LV 的 LV name

使用 lvremove LV name 命令删除LV

# lvremove /dev/vg0/lv0

提示是否删除:

Do you really want to remove active logical volume "lv0"? [y/n]:

输入y 确认后显示如下信息,说明LV删除成功。

Logical volume "lv0" successfully removed

Step3. 移除 VG

删除VG。

# vgremove /dev/vg0

显示如下信息,说明PV删除成功。

Labels on physical volume "/dev/sda1" successfully wipedd

Step4. 移除 PG

使用 pvremove 命令移除 PV

最后使用 fdisk 修改 ID

参考文献

Linux 禁用 SWAP

在服务器和容器平台建议关闭 SWAP,避免内存交换影响服务器性能,甚至引发数据丢失。

一、不重启电脑,禁用启用swap,立刻生效

# 禁用命令

sudo swapoff -a

# 启用命令

sudo swapon -a

# 查看交换分区的状态
sudo free -m

二、重新启动电脑,永久禁用Swap

把根目录文件系统设为可读写

sudo mount -n -o remount,rw /

用vi修改/etc/fstab文件,在swap分区这行前加 # 禁用掉,保存退出

vi /etc/fstab

i      #进入insert 插入模式

:wq   #保存退出
mount -a
# 使 fstab 文件生效

重新启动电脑,使用free -m查看分区状态

reboot

sudo free -m

参考文献

pkg-config 自动补全 C 编译库依赖

pkg-config 是一个在源代码编译时查询已安装的库的使用接口的计算机工具软件。

工作原理

其工作原理如下: 当安装一个库时(例如从RPMdeb或其他二进制包管理系统),会包括一个后缀名为 pc 的文件,它会放入某个文件夹下(依赖于你的系统设置)。 例如,在 Linux 为该软件的库文件所在文件夹 lib 之下的子文件夹 pkgconfig 。 并把该子文件夹加入 pkg-config 的环境变量 PKG_CONFIG_PATH 作为搜索路径,例如在 bash 配置文件中加入一行:

$ export PKG_CONFIG_PATH=/usr/local/`库的名字`/lib/pkgconfig:$PKG_CONFIG_PATH

在这个.pc文件里包含有数个条目。这些条目通常包含用于其他使用这个库的程序编译时需要的库设置,以及头文件的位置,版本信息和一个简介。

这是一个用于libpng的.pc文件的样例:

prefix=/usr/local  
 exec_prefix=${prefix}  
 libdir=${exec_prefix}/lib  
 includedir=${exec_prefix}/include  
    
 Name: libpng12  
 Description: Loads and saves PNG files  
 Version: 1.2.8  
 Libs: -L${libdir} -lpng12 -lz  
 Cflags: -I${includedir}/libpng12

这个文件告诉我们这些库可以在/usr/local/lib找到,头文件可以在/usr/local/include里找到,库的名字是libpng12并且版本号是1.2.8。它也提供了用于编译依赖于libpng的源代码时需要的链接器参数。

这儿是一个编译时使用pkg-config的样例:

gcc -o test test.c $(pkg-config --libs --cflags libpng)

pkg-config 同其他命令一样,有很多选项,不过我们一般只会用到 --libs--cflags 选项,分别用于搜索指定头文件和库文件。

在 Makefile 中则是这样来用:

...
DEPENDENCIES=libcpg libcmap libquorum libqb glib-2.0 fuse sqlite3 librrd

CFLAGS += -I.
CFLAGS += $(shell pkg-config --cflags ${DEPENDENCIES})

LDFLAGS += $(shell pkg-config --libs ${DEPENDENCIES})

.c.o:
        $(CC) $(CFLAGS) -c -o $@ $< -MMD -MT $@ -MF $@.d
...

参考文献

在 linux 中解析 lib 文件

解析 lib 文件可以获取一些二进制库的版本历史信息,例如解析 /usr/lib64/libc.so.6 即可解析到 glibc 的版本历史。

在Linux中,有许多工具可以用来解析库文件( .lib 文件)。 可以使用工具如 nmobjdumpreadelf 来查看库文件的符号表,包含在库文件中的对象文件的信息,以及库文件的其他信息。

下面是一些常用的命令:

`nm`: 这个命令可以显示符号表信息。你可以运行 `nm <library-name>.lib` 来查看库文件的符号表信息。

`objdump`: 这个命令可以显示包含在库文件中的对象文件的信息。你可以运行 `objdump -p <library-name>.lib` 来查看库文件的信息。

`readelf`: 这个命令可以显示库文件的其他信息,包括符号表信息和对象文件信息。你可以运行 `readelf -a <library-name>.lib` 来查看库文件的信息。

这些命令可以帮助你解析库文件并查看其中包含的信息。

内容参考自 ChatGPT

阿里云域名续费优惠口令(com和cn续费优惠)- 2022

购买/续费云产品之前,找找优惠码是一个好习惯。

最近续费自己的 .com 域名,发现官方提供了优惠码,可以便宜一些。

获取方法是: 关注公众号“阿里云企航”,在输入框中输入“优惠口令”,即可自动回复当前最新可用的优惠口令 ,下面是我在2022年12月获取到的。

商品 行为 口令
com英文域名 续费 商标优选即买即用
cn英文域名 续费 商标智能在线检索
xin(普通词) 注册 只争朝夕
xin(普通词) 续费 不负韶华
xin(溢价词) 续费 抱诚守信

使用优惠码优惠前续费 .com 需要 75 :

使用优惠码后便宜了 6 块钱:

省的少也是钱,这是最近发现的省钱技巧,欢迎一起交流~

参考文献

查询谷歌账号注册时间方法(2022)

谷歌查看注册时间 具体方法如下:

打开“管理您的 Google 帐号”

打开“数据和隐私设置”

打开“您使用的应用和服务中的数据”-“下载或删除您的数据”-“下载您的数据”

选择 “Google 导出”选择“Google 帐号”

下载压缩包后,就可以查看html数据内容了

参考文献