2025-04-24 10:09:15    21    0    0

1. 安装SCL源

SCL是Software Collections的缩写,由CentOS特别兴趣小组所维护。其收录了许多程序的新版本,例如gcc, PHP, git, python等。安装的软件可与旧版共存,包名多以rh-为前缀。

# 安装SCL源---建议手动配置国内源
# yum install -y centos-release-scl centos-release-scl-rh​

安装完成后在/etc/yum.repos.d目录下会出现CentOS-SCLo-scl.repo和CentOS-SCLo-scl-rh.repo两个文件。安装后源默认启用。

2. 配置SCL国内源

# 备份原有配置文件
cp /etc/yum.repos.d/CentOS-SCLo-scl.repo /etc/yum.repos.d/CentOS-SCLo-scl.repo.backup
cp /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo.backup
# 将 CentOS-SCLo-scl.repo 和 CentOS-SCLo-scl-rh.repo 中 baseurl 中的域名修改成 mirrors.aliyun.com
# 刷新缓存
yum clean all && yum makecache && yum repolist

3. 错误处理

错误:安装软件提示“14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"”看报错是无法解析mirrorlist.centos.org 这个域名,参考本文处理好了。

原因:Centos7.x系统在6月30日生命周期终止(EOL) 终止了,官方不在维护yum源了。

解决方法:好在官方并没有直接停止服务,而是将源中的文件都迁移到了vault.centos.org这个地址上,将yum源中的 “mirrorlist.centos.org”替换为“vault.centos.org”即可解决。

替代方法:

# 先备份原来yum文件,以防止改错还可以还原
cp -r /etc/yum.repos.d   /etc/yum.repos.d_backup
# 执行
2025-03-10 10:02:19    14    0    0

将以下脚本内容保存为文件 ping_log.sh

#!/bin/bash

if [ $# -ne 1 ]; then
    echo "Usage: $0 <IP_ADDRESS>"
    exit 1
fi

LOG_FOLDER=/var/log/ping

ip_address=$1

current_date=$(date +%Y%m%d)

log_file="${LOG_FOLDER}/${current_date}.ping"

mkdir -p "$(dirname "$log_file")"

while true; do
    current_time=$(date +"%Y-%m-%d %H:%M:%S")
    ping_result=$(ping -c 1 "$ip_address" | grep "seq=")
    echo "$current_time | $ping_result" >> "$log_file"
    sleep 1
done

添加执行权限

chmod +x ping_log.sh

命令行执行

./ping_log.sh 192.168.1.100

在日志文件夹 /var/log/ping 就可以找到对应的日志文件了,内容格式如下:

2025-03-10 09:56:39 | 64 bytes from 192.168.1.100: seq=0 ttl=64 time=0.000 ms
2025-03-10 09:56:40 | 64 bytes from 192.168.1.100: seq=0 ttl=64 time=4.000 ms
2025-03-10 09:56:41 | 64 bytes from 192.168.1.100: seq=0 ttl=64 time=4.000 ms
2025-03-10 09:56:42 | 64 bytes from 192.168.1.100: seq=0 ttl=64 time=4.000 ms
2025-03-10 09:56:43 | 64 bytes from 192.168.1.100: seq=0 ttl=64 time=0.000 ms


2025-03-07 11:17:32    38    0    0

1. Valgrind 介绍

Valgrind 是一款用于内存调试、内存泄漏检测和性能分析的软件开发工具。Valgrind 最初由 Julian Seward 设计,在发布之前的开发过程中曾被命名为 “Heimdall”,但因与一个安全软件包冲突而改名。其名称是对北欧神话中瓦尔哈拉主入口的参考。2006 年,Julian Seward 因其在 Valgrind 上的工作获得了第二届 Google-O'Reilly 开放源码奖。随着不断发展,有许多人对 Valgrind 做出了重要贡献。

2. 为社么要移植到 ARMv5 

目前我们的主要工作平台是基于 ARM926 的 CPU,架构为 ARMv5。但是 Valgrind 默认支持 ARMv7,不支持 ARMv5。即使正常编译过后,也不能正常运行。所以必须对源代码进行修改,以适配低版本的架构。

3. 准备工作

下载 Valgrind 的连接 https://sourceware.org/pub/valgrind​,里面有各个版本的 Valgrind 源代码包,我们要下载的是 3.14.0 版本的源码包(因为补丁包是针对这个版本的)。

# https://sourceware.org/pub/valgrind
wget https://sourceware.org/pub/valgrind/valgrind-3.14.0.tar.bz2
tar -xvjf valgrind-3.14.0.tar.bz2
cd valgrind-3.14.0
# https://bugs.kde.org/buglist.cgi?quicksearch=Valgrind%20ARMv5
# https://bugs.kde.org/show_bug.cgi?id=248998
wget https://bugsfiles.kde.org/attachment.cgi?id=117327 -O valgrind-armv5.patch
patch -p1 < valgrind-armv5.patch​

4. 交叉编译及安装

./configure --host=arm-linux-gnueabi --prefix=/user --enable-only32bit CC="arm-linux-gnueabi-gcc -march=armv5te -mcpu
2025-01-21 09:39:32    38    0    0

脚本文件 ping.ps1 内容:

IF ($args.Count -gt 0)
{
	$ip = $args[0]
	$count = $args[1]
	$logfile = "ping_$ip.log"
	while ($count)
	{
		$result = $(ping -n 1 $ip | Select-Object -Skip 2 | Select-Object -First 1 | Foreach {"{0} - {1}" -f (Get-Date),$_})
		echo $result >> $logfile
		echo $result
		Start-Sleep -Milliseconds 1000
		$count = $count - 1
	}
}
ELSEIF ($args.Count -gt 1)
{
	$ip = $args[0]
	$logfile = "ping_$ip.log"
	while (1)
	{
		# ping -n 1 $ip | Select-Object -Skip 2 | Select-Object -First 1 | Foreach {"{0} - {1}" -f (Get-Date),$_} >> $logfile
		$result = $(ping -n 1 $ip | Select-Object -Skip 2 | Select-Object -First 1 | Foreach {"{0} - {1}" -f (Get-Date),$_})
		echo $result >> $logfile
		echo $result
		Start-Sleep -Milliseconds 1000
	}
}

使用 PowerShell 运行脚本文件:

.\ping.ps1 www.baidu.com

 指定 Ping 的次数:

.\ping.ps1 www.baidu.com 4


2024-09-09 15:32:30    25    0    0

WSL 的 Linux 发行版都是储存在 vhdx 中的,而删除 vhdx 中的文件实际上不会减 小 vhdx 的体积,需要手动释放。

1. Linux 发行版的镜像文件默认安装在 "%USERPROFILE%\AppData\Local\Packages\" ,可通 过 Explorer 访问这个目录。

2. 搜索 vhdx,其中 ext4.vhdx 就是想要的文件。

3. 把 ext4.vhdx 剪贴到 C 盘根目录,这样方便操作。

4. PowerShell 依次如下代码:

wsl --shutdown
diskpart
 # open window Diskpart
 select vdisk file="C:\ext4.vhdx"
 attach vdisk readonly
 compact vdisk
 detach vdisk
 exit


2024-06-28 15:03:43    289    0    0

Windows 不支持直接挂载 EXT4 格式分区,但这可以通过 WSL2 实现。

通过 wmic.exe 查看硬盘与分区信息

通过 wmic 分别列举本机 Disk Drive 与 Partition 的信息:

wmic diskdrive list brief
wmic partition list brief​

根据信息找到需要挂载的分区,主要确定硬盘的 DeviceID

连接并挂载硬盘到 WSL

以 \\.\PHYSICALDRIVE2 分区 1 为例,将该分区挂载到 WSL(需要管理员权限):

wsl --mount \\.\PHYSICALDRIVE2 --bare
# wsl --mount \\.\PHYSICALDRIVE2 --partition 1

特别地,我们使用 --bare 表示希望仅仅将分区连接(attach)到 WSL,在 WSL 内部完成挂载。

登录 WSL,执行 lsblk,可以看到新的硬盘被挂载,此例中挂载到了 /dev/sdc

使用 mount 挂载分区。例如,若要将 /dev/sdc2 挂载到 /mnt/nvme

mount /dev/sdc2 /mnt/hd​

 此时硬盘已成功挂载。

从 Windows 资源管理器访问

当 WSL 启动时,可以通过 Windows 资源管理器访问 WSL 目录,从而访问该 EXT4 分区。

卸载硬盘

完成挂载后,在 WSL 中将挂载的分区 umount:

umount /dev/sdc2 

然后在 Windows 中将该硬盘卸载(需要管理员权限):

wsl --unmount \\.\PHYSICALDRIVE2​


2024-06-17 16:38:22    31    0    0

64 位 Ubuntu 系统运行 32 位程序:

sudo dpkg --add-architecture i386
sudo apt update
sudo apt install libc6:i386 libstdc++6:i386
# sudo apt install libncurses5-dev:i386 lib32z1:i386​​


2024-06-17 14:53:27    32    0    0

一、交叉编译

1. ncurses 库编译

仓库地址:http://ftp.gnu.org/pub/gnu/ncurses

# 编译宽字符库

./configure --host=arm-linux-gnueabihf --prefix=/root/cross-compile/armlibs CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ --with-shared --without-normal --without-debug --without-ada --with-cxx-binding --with-cxx-shared --enable-ext-colors --enable-ext-mouse --enable-overwrite --without-progs --enable-widec --with-termlib --enable-pc-files --with-pkg-config-libdir=/root/cross-compile/armlibs/lib/pkgconfig​

# 不编译宽字体支持

./configure --host=arm-linux-gnueabihf --prefix=/root/cross-compile/armlibs CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ --with-shared --without-normal --without-debug --without-ada --enable-pc-files --with-cxx-binding --with-cxx-shared --enable-ext-colors --enable-ext-mouse --enable-overwrite --without-progs​

# 编译及安装

make -j
make install

2. libevent 库编译

仓库地址: https://github.com/libevent/libevent

./configure --host=arm-linux-gnueabihf --prefix=/root/cross-compile/armlibs CC=arm-linux-gnueabihf
2024-05-31 15:57:40    180    0    0

对于大多数 Windows 用户来说,远程桌面协议(RDP)凭借其友好的图形界面,一直是远程管理的首选。但对于需要更精细控制的系统管理员而言,SSH 才是更适合的选择。它通过命令行实现与远程设备的交互,让管理工作变得更加高效。

过去,Windows 用户想要使用 SSH,通常需要借助像 PuTTY(开源)或 Xshell(商业)这样的第三方工具。现在,Microsoft 推出了内置于 Windows 的 OpenSSH 客户端和服务器,为我们带来了一种更加便捷的选择。

Windows 中的 OpenSSH 是一个可选功能(FoD),需要手动添加,它并不会随系统自动安装。本文将介绍如何在 Windows 11 或 Windows 10(1809 版本及以上)中安装、配置和使用 OpenSSH 客户端和服务器。

什么是 OpenSSH?

OpenSSH 是一款用于安全远程连接和计算机管理的工具套件,它通过加密技术来保障通信安全,其主要功能包括远程登录、命令执行、文件传输和端口转发等。

OpenSSH 包含客户端和服务器两部分,其中:

  • 客户端:用于连接远程服务器。
  • 服务器:在远程服务器上运行,接受客户端的连接请求。

OpenSSH 最初是为 Linux 系统开发的,现在也支持包括 Windows 和 macOS 在内的多种操作系统。

在 Windows 中安装 OpenSSH 客户端和/或服务器

准备条件

在开始安装 OpenSSH 之前,请确保你的电脑满足以下条件:

  • 操作系统:Windows 11 或 Windows 10(1809 版本或更高)。
  • PowerShell 版本:PowerShell 5.1 或以上。
  • 管理员权限:安装 OpenSSH 需要拥有管理员权限。

方法 1:通过「设置」安装

1. 使用Windows + I快捷键打开「设置」,依次选择「系统」>「可选功能」。

2. 点击「查看功能」,在搜索框中输入OpenSSH进行筛选。

3. 根据需要勾选:

  • OpenSSH 客户端:可以使用 ssh 命令连接到其他支持 SSH 的设备。
  • OpenSSH 服务器:允许其他设备通过 SSH 连接到你的电脑。

4. 选择好后点击「下一步」,然后点击「安装」开始安装过程。

方法 2:使用 PowerShell 安装

1. 使用Windows + R快捷键打开「运行」对话框,输入powershell,然后按Ctrl

2023-07-05 15:12:13    38    0    0
for name in `ls`; do mv $name ${name#xxxx}; done​  

${name#xxxx} 删除名字的前缀,这里使用了${var#str}的特殊用法,删除var中前面的str

1/3