Paper plane - Linux
type: channel
link: https://blog.ttoof.xyz/index.php/tag/Linux/
items: CentOS Stream 9 网卡配置及多IP段配置
items: Centos7停止维护后更换阿里云yum源(境内外服务器都可以使用)
items: CentOS 7 结束了生命周期（EOL），Yum源切换到vault为CentOS 7续命
items: Debian/Ubuntu启用/etc/rc.local增加开机启动
items: Debian 11和12 批量加ip
items: 使用netboot.xyz重装Linux
items: Linux：CPU频率调节模式
items: aaPanel panel 关闭首页强制广告和首页软件推荐
items: CentOS 7和8 访问 Let's Encrypt 网站“证书不受信任、已过期”解决办法
items: Linux访问 Let's Encrypt 网站“证书不受信任、已过期”解决办法

CentOS Stream 9 网卡配置及多IP段配置
type: item
date: 2024-08-02T00:23:00+08:00
description: CentOS Stream 9和CentOS Stream 8默认的网络管理工具是NetworkManager在Linux CentOS Stream 9中，NetworkManager是一个非常重要的组件，它为系统自动连接到网络提供了强大的检测和配置功能。是一个开源的网络管理工具，它旨在简化网络配置和管理过程，为用户提供更加稳定、可靠的网络连接体验。在Linux操作系统中得到了广泛应用，并逐渐在其他操作系统中也赢得了认可。nmcli命令作为NetworkManager的命令行接口，nmtui命令为文本图形化为，用户提供了丰富的网络配置选项1、可以使用nmtui文本图形化配置IP，适用于配置1-5个IP。 输入nmtui回车即可进去文本图形化配置界面2、手动设置网卡从DHCP切换到static并配置IP 网关 DNS 保存重启网卡。适用于配置1个IP命令语法：nmcli connection modify <interface_name> ipv4.address <ip/prefix> 复制代码注意: 为了简化语句，在 nmcli 命令中，我们通常用 con 关键字替换 connection，并用 mod 关键字替换 modifynmcli con mod eno1 ipv4.method manual nmcli con mod eno1 ipv4.address 192.168.1.2/24 nmcli con mod eno1 ipv4.gateway 192.168.1.1 nmcli con mod eno1 ipv4.dns 1.1.1.1,8.8.8.8 nmcli con up eno1 3、使用脚本批量添加IP段以下脚本是把192.168.1.2-254和192.168.2.2-254批量加到网卡eno1内，别名IP序号从eno1:2开始分别保存为.sh文件。例如 c1ip.sh c2ip.sh 后执行bash c1ip.sh bash c2ip.sh.然后重启网卡即可请注意以下几点：--- 这个脚本假定你的网卡接口名为 eno1。如果你的实际网卡接口名不同，请相应地修改脚本中的接口名。-- 需要在使用脚本前在网卡eno1.nmconnection新一行添加[ipv4]echo "[ipv4]" >> /etc/NetworkManager/system-connections/eno1.nmconnection --- 脚本会将 IP 地址添加到 /etc/NetworkManager/system-connections/eno1.nmconnection 文件中。确保在执行脚本之前备份该文件。批量添加192.168.1.2-254#!/bin/bash # Add IPs in the range 192.168.1.2-254 for i in {2..254}; do echo "address$i=192.168.1.$i/24" >> /etc/NetworkManager/system-connections/eno1.nmconnection done 批量添加192.168.2.2-254#!/bin/bash # Add IPs in the range 192.168.2.2-254 for i in {2..254}; do echo "address$((i + 253))=192.168.2.$i/24" >> /etc/NetworkManager/system-connections/eno1.nmconnection done 重新加载配置文件和重启网卡生效后，如果不通，重启服务器后就通。nmcli c reload nmcli c up eno1 脚本批量添加完IP后的网卡配置文件示例NetworkManager命令详解推荐查看NetworkManagerCentOS Stream 9 批量添加IP段及连续IP的一键脚本，主要适用于需要添加连续IP或IP段的站群服务器。bash <(curl -sSL https://dd.fzz7.com/sh/centos9_add_ips.sh) 智简魔方DCMI自动化系统安装的CentOS Stream 9 批量添加IP段及连续IP的一键脚本请使用bash <(curl -sSL https://dd.fzz7.com/sh/centos9_add_ips_v0.1.sh) 在智简魔方DCMI自动化系统安装的CentOS Stream 9中，智简魔方将 nmcli IP配置命令写入了/etc/rc.d/rc.local并赋予了执行权限。这导致在后续配置IP后，服务器重启时会自动恢复为默认IP配置。为了解决此问题，请使用 cent…

Centos7停止维护后更换阿里云yum源(境内外服务器都可以使用)
type: item
date: 2024-07-17T01:47:00+08:00
description: Centos7停止维护后更换阿里云yum源(境内外服务器都可以使用)备份本地yum源mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 获取阿里yum源配置文件curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 部署阿里epel(RHEL 7)源curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 注意非阿里云ECS服务器用户会出现 Couldn't resolve host 'mirrors.cloud.aliyuncs.com' 信息，不影响使用。也可自行修改相关配置:sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo 清理并更新yum缓存yum clean all yum makecache 也可以直接使用一键脚本更换为阿里云源curl -sSL http://dd.fzz7.com/sh/centos7_change_aliyun_yum_repo.sh | bash 或者curl -sSL http://dd.fzz7.com/sh/centos7_update_aliyun_yum_repo.sh | bash PS：Linux系统添加swap文件bash <(curl -sSL https://dd.fzz7.com/sh/add_swap.sh) Linux系统修改SSH端口bash <(curl -sSL https://dd.fzz7.com/sh/change_ssh_port.sh)

CentOS 7 结束了生命周期（EOL），Yum源切换到vault为CentOS 7续命
type: item
date: 2024-07-17T01:46:31+08:00
description: CentOS 7 结束了生命周期（EOL），切换yum源为CentOS 7续命CentOS 7 EOLLinux操作系统CentOS 7结束了生命周期（EOL），并且CentOS 官方删除了原 mirrorlist 子域名的解析。建议切换到RockyLinux、Fedora或AlmaLinux。如果您的业务过渡期仍需要使用CentOS 7系统中的一些安装包，请根据下文切换CentOS 7的源。2024年6月30日CentOS 7 EOL。按照社区规则，CentOS 7的源地址http://mirror.centos.org/centos/7/内容已移除。为CentOS 7续命1、登录CentOS 7系统的服务器。2、运行以下命令备份之前的repo文件。cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 3、使用官方vault源替换默认源 （适用于国外服务器）sed -i -r -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#?baseurl=http://mirror.centos.org/centos|baseurl=https://vault.centos.org/centos|g' -e 's|^#?baseurl=http://mirror.centos.org/altarch|baseurl=https://vault.centos.org/altarch|g' -e 's|^#?baseurl=http://download.fedoraproject.org|baseurl=http://download.fedoraproject.org|g' /etc/yum.repos.d/CentOS-*.repo 4、运行以下命令重新创建缓存。yum clean all && yum makecache

Debian/Ubuntu启用/etc/rc.local增加开机启动
type: item
date: 2024-07-13T00:06:00+08:00
description: Debian/Ubuntu启用/etc/rc.local增加开机启动1、创建服务文件/etc/systemd/system/rc-local.servicenano /etc/systemd/system/rc-local.service[Unit] Description=/etc/rc.local ConditionPathExists=/etc/rc.local [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes SysVStartPriority=99 [Install] WantedBy=multi-user.target 2、创建脚本文件/etc/rc.local（并给予执行权限）： 在exit 0前1行添加需要启动命令。 示例：给某些机型不会自启网卡添加开机自启网卡命令；nano /etc/rc.local#!/bin/sh -e ifup eno1 ifup eno1:1 exit 0 EOF /etc/rc.local文件添加执行权限chmod +x /etc/rc.local 3、设置rc-local开机启动，并启动服务systemctl enable rc-local.service systemctl start rc-local 查看启动状态是Active:active，则成功systemctl status rc-local

Debian 11和12 批量加ip
type: item
date: 2024-07-12T23:09:00+08:00
description: Debian重启网络服务systemctl restart networking 或者 /etc/init.d/networking restart 适用于debian和ubuntu （ubuntu需要替换修改对应的网卡配置文件），eno1 请修改为需要加IP的网卡名字。方法一针对多C段的IP添加，掩码位数方式，i填入网卡不重复起-始数字序号，j填入IP的开始数字示例：加IP 192.186.1.2-192.168.1.10，eno1:$iIP序号从1开始到9结束#!/bin/bash #i is iface, j is ip j=2 for ((i=1;i<=9;i=i+1)) do echo "auto eth0:$i">>/etc/network/interfaces echo "iface eth0:$i inet static">>/etc/network/interfaces echo "address 192.168.1.$j/24">>/etc/network/interfaces echo " ">>/etc/network/interfaces let j=$j+1 done # end 方法二针对多C段的IP添加，网络掩码方式。i填入网卡不重复起始数字，j填入IP的开始数字示例：加IP 192.186.1.2-192.168.1.10，eno1:$iIP序号从1开始到9结束#!/bin/bash #i is iface, j is ip j=2 for ((i=1;i<=9;i=i+1)) do echo "auto eno1:$i">>/etc/network/interfaces echo "iface eno1:$i inet static">>/etc/network/interfaces echo "address 192.186.1.$j">>/etc/network/interfaces echo "netmask 255.255.255.0">>/etc/network/interfaces echo " ">>/etc/network/interfaces let j=$j+1 done # end 方法三也可以使用临时加IP 192.186.1.2-192.168.1.10 重启就没了示例：临时加IP 192.186.1.2-192.168.1.10#!/bin/bash # 定义网络接口名称 INTERFACE="eno1" # 定义IP地址范围 START_IP=2 END_IP=10 # 批量添加IP地址的函数 function add_ips { local ip="192.186.1.$1/24" ip addr add $ip dev $INTERFACE ip link set dev $INTERFACE up } # 遍历IP地址范围并添加 for i in $(seq $START_IP $END_IP) do add_ips $i done 方法四推荐使用一键交互式IP段添加脚本bash <(curl -sSL https://files.fzz7.com/sh/debian_add_ip_interactive.sh) 1、核心功能灵活适配网卡：支持自定义网卡（如 eth0/eno1），自动检测网卡是否存在智能编号管理：读取现有最大子接口编号，新接口从 “最大编号 + 1” 递增，避免冲突精细化 IP 配置：支持多 IP 段输入（格式 x.x.x.x-x.x.x.x），每段可单独设掩码（0-32），内置 IP 合法性校验安全保障：自动备份原配置文件（带时间戳），关键操作二次确认清晰反馈：实时显示添加进度，最终汇总新增数量、配置路径及生效命令2、使用步骤前置条件：Debian 系统，sudo /root 权限，目标网卡已启用执行脚本：./脚本文件名.sh按提示操作：输入网卡名（如 eno1）逐行输入 IP 段（空回车结束），每段后输入对应掩码等待配置完成，执行systemctl restart networking生效3、示例流程plaintext输入网卡：eno1 → 确认输入IP段：192.168.1.2-192.168.1.20 → 输入掩码：24 → 确认空回车 结束IP输入 → 脚本自动添加IP（从eno1:5开始）执行生效命令systemctl restart networking生效 → 完成

使用netboot.xyz重装Linux
type: item
date: 2023-03-12T00:08:00+08:00
description: netboot.xyz可以让你通过网络从一个工具中PXE启动各种操作系统安装程序或工具。这让你可以用一个介质来处理多种类型的操作系统或工具。iPXE项目用于从BIOS内提供一个用户友好的菜单，让你轻松地选择你想要的操作系统以及任何特定类型的版本或可启动标志。你可以将ISO远程附加到服务器上，将其设置为Grub中的救援选项，甚至可以将你的家庭网络设置为默认启动，这样它就一直可用。启动netboot.xyz后 静态IP网络需要手动输入IP掩码网关，DHCP网络无需手动配置IP，从网络引导加载镜像。注意:必须使用IPMI或打开VNC控制台，执行系统重装操作。1、使用GRUB从ISO文件启动适用于debian系# Install grub-imageboot apt install grub-imageboot # Download netboot.xyz ISO mkdir /boot/images cd /boot/images wget https://boot.netboot.xyz/ipxe/netboot.xyz.iso # Update GRUB menu to include this ISO update-grub2 reboot重启后，就可以在 GRUB 菜单中看到netboot.xyz启动选项。2、如果服务器使用UEFI方式启动，可以直接使用 UEFI 固件。mkdir /boot/efi/EFI/rescue cd /boot/efi/EFI/rescue # for x86_64 machine wget https://boot.netboot.xyz/ipxe/netboot.xyz-snp.efi # for arm64 machine wget https://boot.netboot.xyz/ipxe/netboot.xyz-arm64.efi 重启进入 BIOS，可以通过选择启动文件的方式，启动 netboot.xyz3、直接覆盖磁盘镜像,开机启动wget https://boot.netboot.xyz/ipxe/netboot.xyz.img dd if=netboot.xyz.img of=/dev/sda此方法最适合在救援模式模式下重装Linux系统其他启动方法可以参看https://netboot.xyz/docs/说明

Linux：CPU频率调节模式
type: item
date: 2023-03-11T23:52:00+08:00
description: 在Linux中，内核的开发者定义了一套框架模型来完成CPU频率动态调整这一目的，它就是CPU Freq系统。如下为CPU的几种模式（governor参数）： ondemand： 系统默认的超频模式，按需调节，内核提供的功能，不是很强大，但有效实现了动态频率调节，平时以低速方式运行，当系统负载提高时候自动提高频率。以这种模式运行不会因为降频造成性能降低，同时也能节约电能和降低温度。一般官方内核默认的方式都是ondemand。 interactive： 交互模式，直接上最高频率，然后看CPU负荷慢慢降低，比较耗电。Interactive 是以 CPU 排程数量而调整频率，从而实现省电。InteractiveX 是以 CPU 负载来调整 CPU 频率，不会过度把频率调低。所以比 Interactive 反应好些，但是省电的效果一般。 conservative： 保守模式，类似于ondemand，但调整相对较缓，想省电就用他吧。Google官方内核，kang内核默认模式。 smartass： 聪明模式，是I和C模式的升级，该模式在比interactive 模式不差的响应的前提下会做到了更加省电。 performance： 性能模式！只有最高频率，从来不考虑消耗的电量，性能没得说，但是耗电量。 powersave 省电模式，通常以最低频率运行。 userspace： 用户自定义模式，系统将变频策略的决策权交给了用户态应用程序，并提供了相应的接口供用户态应用程序调节CPU 运行频率使用。也就是长期以来都在用的那个模式。可以通过手动编辑配置文件进行配置 Hotplug： 类似于ondemand, 但是cpu会在关屏下尝试关掉一个cpu，并且带有deep sleep，比较省电。 在不同的系统上，并不是所有的策略都是可用了，可以通过/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors查看支持的策略cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors查看当前生效的策略cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 查看当前CPU频率cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq cpupower 是一组为辅助 CPU 调频而设计的用户空间工具。1、查看当前所有CPU的信息cpupower -c all frequency-info 2、设置所有CPU为性能模式cpupower -c all frequency-set -g performance 或者cpupower frequency-set -g performance 3、设置所有CPU为节能模式cpupower -c all frequency-set -g powersave 查看当前cpu运行频率：cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 或者cat /proc/cpuinfo | grep -i "cpu mhz"

aaPanel panel 关闭首页强制广告和首页软件推荐
type: item
date: 2022-10-03T10:40:00+08:00
description: aaPanel panel 6.8.26 首页也有了强制广告和首页软件推荐，对首页加入了aaPanel的付费软件推广，放在一个特别明显的位置实在是碍眼。关闭首页强制广告和首页软件推荐文件位置：/www/server/panel/BTPanel/static/js/index.js 使用宝塔编辑器搜索1、搜索setTimeout(function () { index.get_cloud_list() }, 800); 取消 // 注释2、搜索product_recommend.init 函数，注释如下内容。/*product_recommend.init(function(){ index.get_product_status(function(){ index.recommend_paid_version() }); index.get_index_list(); })*/ 清除浏览器缓存或更换浏览器 重新访问登录aaPanel panel即可

CentOS 7和8 访问 Let's Encrypt 网站“证书不受信任、已过期”解决办法
type: item
date: 2021-10-22T22:00:00+08:00
description: Let's Encrypt 网站“证书不受信任、已过期”解决办法用 wget 下载任何由 Let's Encrypt 签发证书的 https 网站的内容，发生报错：The certificate of 'www.xxx.xxx' is not trusted.The certificate of 'www.xxx.xxx' has expired.使用 curl 等工具连接也会报错。CentOS 7 解决方法：sudo yum install ca-certificates -y sudo update-ca-trust force-enable CentOS 8 解决方法：sudo dnf install ca-certificates -y sudo update-ca-trust force-enable 原因：问题出在 OpenSSL 1.0.X，它会优先使用长度更短的“DST Root CA X3”与HTTPS网站做验证交换，该证书自从2021年9月30日后过期，一旦验证失效，就会报错终止。后续不再尝试用新的根证书“ISRG Root X1”做验证。OpenSSL 1.1.X 已修复该 Bug。

Linux访问 Let's Encrypt 网站“证书不受信任、已过期”解决办法
type: item
date: 2021-10-22T08:50:00+08:00
description: Let's Encrypt 网站“证书不受信任、已过期”解决办法 最近需要在服务器里部署一些项目，系统环境是 Debian 9 x64，运行脚本后，无故终止。排除网络问题，查看报错，定位到是与某些必要组件的网站连接出现了错误。用 wget 下载任何由 Let's Encrypt 签发证书的 https 网站的内容，发生报错：The certificate of 'www.xxx.xxx' is not trusted.The certificate of 'www.xxx.xxx' has expired.使用 curl 等工具连接也会报错。即使按网传方法，安装“ca-certificates”也无解。大量旧 Linux 系统，在2021年9月30日之后，都会面临此问题。Ubuntu 16.04 解决方法：有用户在2021年5月19日反馈了这个 bug，官方发布重新编译过的 OpenSSL 1.0.2g 解决了这个问题。通过官方源将 OpenSSL 组件更至最新即可。在2021年7月28日之后全新安装的 Ubuntu 16.04，也不会再碰到此问题。apt-get update apt-get install openssl -y Debian 8 Debian 9 解决方法：在证书配置文件中，删除“DST_Root_CA_X3”证书，并重载根证书配置：sed -i '/^mozilla\/DST_Root_CA_X3/s/^/!/' /etc/ca-certificates.conf && update-ca-certificates -f 原因：问题出在 OpenSSL 1.0.X，它会优先使用长度更短的“DST Root CA X3”与HTTPS网站做验证交换，该证书自从2021年9月30日后过期，一旦验证失效，就会报错终止。后续不再尝试用新的根证书“ISRG Root X1”做验证。OpenSSL 1.1.X 已修复该 Bug。Debian 9 附带的“libcurl3”软件包中，有一个名为“libssl1.0.2”的共享库依赖，该依赖使 OpenSSL 强制以 1.0.2 版本运行。所以即使 Debian 9 内置了 OpenSSL 1.1.0l，它还是会重现这个问题。并且由于“libcurl3”是 Debian 9 默认源中“curl 7.52.1”的必要依赖，所以只要通过官方源安装 curl 组件，就会出现这个问题。CentOS 6/7 解决方法：sudo yum install ca-certificates -y sudo update-ca-trust force-enable CentOS 8 解决方法：sudo dnf install ca-certificates -y sudo update-ca-trust force-enable 可能涉及到的 Linux 发行版：CentOS 7 与 RHEL 7 及更旧版本；Amazon Linux 和 Amazon Linux 2；Ubuntu 14.04 及更旧版本；Debian 8、Debian 9 等更旧版本；Android 4.0 及更旧版本；任何使用 OpenSSL 1.0.X 版本，且官方源未发布针对 OpenSSL 1.0.X bug 修复的二进制编译文件的其他 Linux 衍生版本。对于其他 Linux 发行版，解决问题的核心思路就是：删除系统内置根证书信任区，或证书管理器配置文件中的“DST_Root_CA_X3”证书；重载证书管理器配置。后果同样为失去兼容旧系统，具体命令和方法请自行探究。