活动公告

系统通知
05-18 21:22
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

Linux系统void编程与管理教程大全从零开始掌握开源操作系统包含安装配置系统管理编程等全方位内容助你快速上手成为专家

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

<font color=白金月票" /> 发表于 2025-9-10 11:10:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. Void Linux 简介

Void Linux 是一个独立的、滚动发布的通用操作系统发行版,它使用 runit 作为 init 系统,以及 XBPS 作为其默认的包管理器。Void Linux 支持多种架构,包括 x86、x86_64、ARM、ARMv6、ARMv7、aarch64、ppc64、ppc64le 等,并且同时提供 glibc 和 musl libc 两种版本。

Void Linux 的主要特点包括:

• 滚动发布模式:无需系统升级,系统始终保持最新状态
• 快速、轻量级:启动速度快,资源占用少
• 独特的包管理系统:XBPS (The X Binary Package System)
• 默认使用 runit 作为 init 系统,而不是 systemd
• 支持 glibc 和 musl libc 两种 C 库实现

Void Linux 适合那些寻求简单、高效、稳定操作系统的用户,特别是开发者和系统管理员。

2. Void Linux 安装

2.1 准备工作

在开始安装 Void Linux 之前,你需要准备以下内容:

1. 一台符合最低系统要求的计算机:x86_64 架构处理器至少 1GB RAM(推荐 2GB 或更多)至少 10GB 的磁盘空间(推荐 20GB 或更多)可引导的 USB 存储设备或 DVD
2. x86_64 架构处理器
3. 至少 1GB RAM(推荐 2GB 或更多)
4. 至少 10GB 的磁盘空间(推荐 20GB 或更多)
5. 可引导的 USB 存储设备或 DVD
6. 下载 Void Linux 安装镜像:访问 Void Linux 官方网站:https://voidlinux.org/下载页面:https://voidlinux.org/download/选择适合你系统架构的 ISO 镜像文件
7. 访问 Void Linux 官方网站:https://voidlinux.org/
8. 下载页面:https://voidlinux.org/download/
9. 选择适合你系统架构的 ISO 镜像文件
10. 创建可引导的安装介质:Linux 系统下可以使用dd命令:dd if=void-live-*.iso of=/dev/sdX bs=1M status=progress其中/dev/sdX是你的 USB 设备,请确保使用正确的设备名
11. Linux 系统下可以使用dd命令:dd if=void-live-*.iso of=/dev/sdX bs=1M status=progress其中/dev/sdX是你的 USB 设备,请确保使用正确的设备名

一台符合最低系统要求的计算机:

• x86_64 架构处理器
• 至少 1GB RAM(推荐 2GB 或更多)
• 至少 10GB 的磁盘空间(推荐 20GB 或更多)
• 可引导的 USB 存储设备或 DVD

下载 Void Linux 安装镜像:

• 访问 Void Linux 官方网站:https://voidlinux.org/
• 下载页面:https://voidlinux.org/download/
• 选择适合你系统架构的 ISO 镜像文件

创建可引导的安装介质:

• Linux 系统下可以使用dd命令:dd if=void-live-*.iso of=/dev/sdX bs=1M status=progress其中/dev/sdX是你的 USB 设备,请确保使用正确的设备名
  1. dd if=void-live-*.iso of=/dev/sdX bs=1M status=progress
复制代码

2.2 安装过程

1. 启动安装程序:将创建好的安装介质插入计算机并重启在 BIOS/UEFI 设置中选择从 USB/DVD 启动从启动菜单中选择 “Live” 环境启动
2. 将创建好的安装介质插入计算机并重启
3. 在 BIOS/UEFI 设置中选择从 USB/DVD 启动
4. 从启动菜单中选择 “Live” 环境启动
5. 连接网络:如果使用有线网络,系统通常会自动连接如果使用无线网络,可以使用以下命令:
“`bash查看无线网卡名称ip a# 启动无线网卡
ip link set wlan0 up# 连接到无线网络
wifi-menu
“`
6. 如果使用有线网络,系统通常会自动连接
7. 如果使用无线网络,可以使用以下命令:
“`bash查看无线网卡名称ip a
8. 分区磁盘:使用fdisk或cfdisk进行分区:cfdisk /dev/sda推荐的分区方案:/boot分区:至少 200MBswap分区:建议大小为 RAM 的 1-2 倍/根分区:剩余所有空间
9. 使用fdisk或cfdisk进行分区:cfdisk /dev/sda
10. 推荐的分区方案:/boot分区:至少 200MBswap分区:建议大小为 RAM 的 1-2 倍/根分区:剩余所有空间
11. /boot分区:至少 200MB
12. swap分区:建议大小为 RAM 的 1-2 倍
13. /根分区:剩余所有空间
14. 格式化分区:
“`bash格式化 boot 分区为 ext2/ext3/ext4mkfs.ext4 /dev/sda1

启动安装程序:

• 将创建好的安装介质插入计算机并重启
• 在 BIOS/UEFI 设置中选择从 USB/DVD 启动
• 从启动菜单中选择 “Live” 环境启动

连接网络:

• 如果使用有线网络,系统通常会自动连接
• 如果使用无线网络,可以使用以下命令:
“`bash查看无线网卡名称ip a

如果使用有线网络,系统通常会自动连接

如果使用无线网络,可以使用以下命令:
“`bash

ip a

# 启动无线网卡
ip link set wlan0 up

# 连接到无线网络
wifi-menu
“`

分区磁盘:

• 使用fdisk或cfdisk进行分区:cfdisk /dev/sda
• 推荐的分区方案:/boot分区:至少 200MBswap分区:建议大小为 RAM 的 1-2 倍/根分区:剩余所有空间
• /boot分区:至少 200MB
• swap分区:建议大小为 RAM 的 1-2 倍
• /根分区:剩余所有空间
  1. cfdisk /dev/sda
复制代码

• /boot分区:至少 200MB
• swap分区:建议大小为 RAM 的 1-2 倍
• /根分区:剩余所有空间

格式化分区:
“`bash

mkfs.ext4 /dev/sda1

# 格式化根分区
   mkfs.ext4 /dev/sda3

# 设置 swap 分区
   mkswap /dev/sda2
   swapon /dev/sda2
  1. 5. 挂载分区:
  2.    ```bash
  3.    # 挂载根分区
  4.    mount /dev/sda3 /mnt
  5.    
  6.    # 创建 boot 目录并挂载
  7.    mkdir /mnt/boot
  8.    mount /dev/sda1 /mnt/boot
复制代码

1.
  1. 安装基础系统:
  2. “`bash安装基础系统xbps-install -S -Rhttps://repo-default.voidlinux.org/current-r /mnt base-system
复制代码

安装基础系统:
“`bash

xbps-install -S -Rhttps://repo-default.voidlinux.org/current-r /mnt base-system

# 安装 Linux 内核
   xbps-install -r /mnt linux

# 安装引导程序
   xbps-install -r /mnt grub
  1. 7. 配置系统:
  2.    ```bash
  3.    # 生成 fstab 文件
  4.    chroot /mnt "xbps-reconfigure -f linux5.15; grub-install /dev/sda; grub-mkconfig -o /boot/grub/grub.cfg"
  5.    
  6.    # 进入 chroot 环境
  7.    chroot /mnt
  8.    
  9.    # 设置 root 密码
  10.    passwd
  11.    
  12.    # 设置主机名
  13.    echo voidlinux > /etc/hostname
  14.    
  15.    # 配置时区
  16.    ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  17.    
  18.    # 配置语言环境
  19.    echo "LANG=en_US.UTF-8" > /etc/locale.conf
  20.    echo "en_US.UTF-8 UTF-8" >> /etc/default/libc-locales
  21.    xbps-reconfigure -f glibc-locales
  22.    
  23.    # 退出 chroot 环境
  24.    exit
复制代码

1. 完成安装:
“`bash卸载分区umount /mnt/boot
umount /mnt

完成安装:
“`bash

umount /mnt/boot
umount /mnt

# 重启系统
   reboot
  1. ## 3. 系统配置
  2. ### 3.1 用户和权限管理
  3. 1. 创建新用户:
  4.    ```bash
  5.    # 添加新用户
  6.    useradd -m -G users,wheel,audio,video,storage -s /bin/bash username
  7.    
  8.    # 设置用户密码
  9.    passwd username
复制代码

1. 配置 sudo:
“`bash安装 sudoxbps-install -S sudo

配置 sudo:
“`bash

xbps-install -S sudo

# 配置 sudoers 文件
   visudo
  1. 在打开的文件中,取消以下行的注释:
复制代码

%wheel ALL=(ALL) ALL
  1. ### 3.2 网络配置
  2. 1. 有线网络配置:
  3.    ```bash
  4.    # 启用 DHCP
  5.    ln -s /etc/sv/dhcpcd /var/service/
  6.    
  7.    # 手动配置静态 IP
  8.    # 编辑 /etc/network/interfaces 文件
  9.    cat > /etc/network/interfaces << EOF
  10.    auto eth0
  11.    iface eth0 inet static
  12.        address 192.168.1.100
  13.        netmask 255.255.255.0
  14.        gateway 192.168.1.1
  15.    EOF
复制代码

1. 无线网络配置:
“`bash安装必要的软件包xbps-install -S wpa_supplicant iw

无线网络配置:
“`bash

xbps-install -S wpa_supplicant iw

# 配置 wpa_supplicant
   wpa_passphrase “SSID” “password” > /etc/wpa_supplicant/wpa_supplicant.conf

# 启用 wpa_supplicant 服务
   ln -s /etc/sv/wpa_supplicant /var/service/

# 启用 DHCP
   ln -s /etc/sv/dhcpcd /var/service/
  1. ### 3.3 图形界面安装
  2. 1. 安装 Xorg:
  3.    ```bash
  4.    xbps-install -S xorg
复制代码

1. 安装显示管理器(如 LightDM):
“`bash
xbps-install -S lightdm lightdm-gtk3-greeter

# 启用 LightDM 服务
   ln -s /etc/sv/lightdm /var/service/
  1. 3. 安装桌面环境(如 XFCE):
  2.    ```bash
  3.    xbps-install -S xfce4
  4.    
  5.    # 安装主题和其他实用工具
  6.    xbps-install -S xfce4-terminal xfce4-settings xfce4-panel thunar gvfs
复制代码

4. 软件包管理

4.1 XBPS 基础命令

Void Linux 使用 XBPS (The X Binary Package System) 作为其包管理系统。以下是一些常用的 XBPS 命令:

1. 同步软件包数据库:xbps-install -S
2. 搜索软件包:xbps-query -Rs package_name
3. 安装软件包:xbps-install -S package_name
4. 删除软件包:xbps-remove -R package_name
5. 更新系统:xbps-install -Su
6. 列出已安装的软件包:xbps-query -l
7. 查找文件属于哪个软件包:xbps-query -o /path/to/file

同步软件包数据库:
  1. xbps-install -S
复制代码

搜索软件包:
  1. xbps-query -Rs package_name
复制代码

安装软件包:
  1. xbps-install -S package_name
复制代码

删除软件包:
  1. xbps-remove -R package_name
复制代码

更新系统:
  1. xbps-install -Su
复制代码

列出已安装的软件包:
  1. xbps-query -l
复制代码

查找文件属于哪个软件包:
  1. xbps-query -o /path/to/file
复制代码

4.2 源码编译安装

除了使用二进制包外,你还可以从源码编译安装软件:

1. 安装编译工具:xbps-install -S base-devel
2.
  1. 下载源码:git clone https://github.com/void-linux/void-packages.git
  2. cd void-packages
复制代码
3. 配置编译环境:./xbps-src binary-bootstrap
4. 编译软件包:./xbps-src pkg package_name
5. 安装编译好的软件包:xi package_name

安装编译工具:
  1. xbps-install -S base-devel
复制代码

下载源码:
  1. git clone https://github.com/void-linux/void-packages.git
  2. cd void-packages
复制代码

配置编译环境:
  1. ./xbps-src binary-bootstrap
复制代码

编译软件包:
  1. ./xbps-src pkg package_name
复制代码

安装编译好的软件包:
  1. xi package_name
复制代码

5. 系统管理

5.1 服务管理

Void Linux 使用 runit 作为 init 系统,而不是 systemd。服务管理的方式也有所不同:

1. 查看已启用的服务:ls /var/service/
2. 启用服务:ln -s /etc/sv/service_name /var/service/
3. 禁用服务:rm /var/service/service_name
4. 查看服务状态:sv status service_name
5. 启动、停止、重启服务:sv up service_name    # 启动服务
sv down service_name  # 停止服务
sv restart service_name  # 重启服务

查看已启用的服务:
  1. ls /var/service/
复制代码

启用服务:
  1. ln -s /etc/sv/service_name /var/service/
复制代码

禁用服务:
  1. rm /var/service/service_name
复制代码

查看服务状态:
  1. sv status service_name
复制代码

启动、停止、重启服务:
  1. sv up service_name    # 启动服务
  2. sv down service_name  # 停止服务
  3. sv restart service_name  # 重启服务
复制代码

5.2 日志管理

Void Linux 使用 svlogd 进行日志管理:

1. 查看服务日志:tail -f /var/log/service_name/current
2. 配置日志轮转:
编辑/etc/sv/service_name/log/run文件,设置日志大小和保留数量:#!/bin/sh
exec logger -t service_name -p daemon.info

查看服务日志:
  1. tail -f /var/log/service_name/current
复制代码

配置日志轮转:
编辑/etc/sv/service_name/log/run文件,设置日志大小和保留数量:
  1. #!/bin/sh
  2. exec logger -t service_name -p daemon.info
复制代码

5.3 系统监控

1. 查看系统资源使用情况:
“`bash安装 htopxbps-install -S htop

查看系统资源使用情况:
“`bash

xbps-install -S htop

# 运行 htop
   htop
  1. 2. 查看磁盘使用情况:
  2.    ```bash
  3.    df -h
复制代码

1. 查看内存使用情况:free -h
2. 查看系统启动时间:uptime -p

查看内存使用情况:
  1. free -h
复制代码

查看系统启动时间:
  1. uptime -p
复制代码

6. Shell 脚本编程

6.1 Bash 基础

1. 创建简单的 Shell 脚本:
“`bash
#!/bin/bash

# 这是一个简单的 Shell 脚本示例
   echo “Hello, Void Linux!”

# 定义变量
   NAME=“Void Linux”

# 使用变量
   echo “Welcome to $NAME”

# 获取用户输入
   read -p “Enter your name: ” USER_NAME
   echo “Hello, $USER_NAME!”
  1. 2. 条件语句:
  2.    ```bash
  3.    #!/bin/bash
  4.    
  5.    read -p "Enter your age: " AGE
  6.    
  7.    if [ $AGE -lt 18 ]; then
  8.        echo "You are a minor."
  9.    elif [ $AGE -ge 18 ] && [ $AGE -lt 65 ]; then
  10.        echo "You are an adult."
  11.    else
  12.        echo "You are a senior citizen."
  13.    fi
复制代码

1. 循环语句:
“`bash
#!/bin/bash

# for 循环
   echo “Counting with for loop:”
   for i in {1..5}; do
  1. echo "Count: $i"
复制代码

done

# while 循环
   echo “Counting with while loop:”
   COUNT=1
   while [ $COUNT -le 5 ]; do
  1. echo "Count: $COUNT"
  2.    COUNT=$((COUNT + 1))
复制代码

done
  1. ### 6.2 实用脚本示例
  2. 1. 系统信息脚本:
  3.    ```bash
  4.    #!/bin/bash
  5.    
  6.    echo "===== System Information ====="
  7.    echo "Hostname: $(hostname)"
  8.    echo "OS: $(cat /etc/os-release | grep PRETTY_NAME | cut -d= -f2 | tr -d '"')"
  9.    echo "Kernel: $(uname -r)"
  10.    echo "Uptime: $(uptime -p)"
  11.    echo ""
  12.    
  13.    echo "===== CPU Information ====="
  14.    echo "Model: $(cat /proc/cpuinfo | grep 'model name' | head -1 | cut -d: -f2 | xargs)"
  15.    echo "Cores: $(nproc)"
  16.    echo ""
  17.    
  18.    echo "===== Memory Information ====="
  19.    free -h
  20.    echo ""
  21.    
  22.    echo "===== Disk Information ====="
  23.    df -h
复制代码

1. 备份脚本:
“`bash
#!/bin/bash

# 设置备份源目录和目标目录
   SOURCE_DIR=”/home/user”
   BACKUPDIR=“/mnt/backups”
   DATE=$(date +%Y%m%d%H%M%S)
   BACKUPNAME=“backup${DATE}.tar.gz”

# 创建备份目录(如果不存在)
   mkdir -p $BACKUP_DIR

# 创建备份
   echo “Creating backup of\(SOURCE_DIR..."
   tar -czf \)BACKUP_DIR/\(BACKUP_NAME \)SOURCE_DIR

# 检查备份是否成功
   if [ $? -eq 0 ]; then
  1. echo "Backup created successfully: $BACKUP_DIR/$BACKUP_NAME"
复制代码

else
  1. echo "Backup failed!"
  2.    exit 1
复制代码

fi

# 删除30天前的备份
   echo “Cleaning up old backups…”
   find $BACKUPDIR -name “backup*.tar.gz” -mtime +30 -delete
   echo “Done.”
  1. ## 7. 系统编程
  2. ### 7.1 C 语言编程
  3. 1. 安装开发工具:
  4.    ```bash
  5.    xbps-install -S gcc make libc-devel
复制代码

1. 编写简单的 C 程序:
“`c
// hello.c
#include

int main() {
  1. printf("Hello, Void Linux!\n");
  2.    return 0;
复制代码

}
  1. 3. 编译和运行:
  2.    ```bash
  3.    gcc -o hello hello.c
  4.    ./hello
复制代码

1. 更复杂的 C 程序示例(文件操作):
“`c
// file_io.c
#include#include

int main() {
  1. FILE *sourceFile, *targetFile;
  2.    char ch;
  3.    // 打开源文件
  4.    sourceFile = fopen("source.txt", "r");
  5.    if (sourceFile == NULL) {
  6.        printf("Cannot open source file.\n");
  7.        exit(1);
  8.    }
  9.    // 创建目标文件
  10.    targetFile = fopen("target.txt", "w");
  11.    if (targetFile == NULL) {
  12.        printf("Cannot create target file.\n");
  13.        fclose(sourceFile);
  14.        exit(1);
  15.    }
  16.    // 复制文件内容
  17.    while ((ch = fgetc(sourceFile)) != EOF) {
  18.        fputc(ch, targetFile);
  19.    }
  20.    printf("File copied successfully.\n");
  21.    // 关闭文件
  22.    fclose(sourceFile);
  23.    fclose(targetFile);
  24.    return 0;
复制代码

}
  1. ### 7.2 Python 编程
  2. 1. 安装 Python:
  3.    ```bash
  4.    xbps-install -S python3 python3-pip
复制代码

1.
  1. 编写简单的 Python 程序:
  2. “`pythonhello.pyprint(“Hello, Void Linux!”)
复制代码

编写简单的 Python 程序:
“`python

print(“Hello, Void Linux!”)

# 获取用户输入
   name = input(“Enter your name: “)
   print(f”Hello, {name}!“)
  1. 3. 运行 Python 程序:
  2.    ```bash
  3.    python3 hello.py
复制代码

1. 更复杂的 Python 程序示例(文件操作):
“`pythonfile_copy.pyimport sys

更复杂的 Python 程序示例(文件操作):
“`python

import sys

def copy_file(source, target):
  1. try:
  2.        with open(source, 'r') as src_file:
  3.            content = src_file.read()
  4.        with open(target, 'w') as tgt_file:
  5.            tgt_file.write(content)
  6.        print(f"File '{source}' copied to '{target}' successfully.")
  7.    except FileNotFoundError:
  8.        print(f"Error: Source file '{source}' not found.")
  9.    except Exception as e:
  10.        print(f"An error occurred: {str(e)}")
复制代码

ifname== “main”:
  1. if len(sys.argv) != 3:
  2.        print("Usage: python file_copy.py <source_file> <target_file>")
  3.        sys.exit(1)
  4.    source_file = sys.argv[1]
  5.    target_file = sys.argv[2]
  6.    copy_file(source_file, target_file)
复制代码
  1. ### 7.3 使用 Makefile 管理项目
  2. 1. 创建项目目录结构:
  3.    ```bash
  4.    mkdir myproject
  5.    cd myproject
  6.    mkdir src include
复制代码

1. 编写头文件:
“`c
// include/mylib.h
#ifndef MYLIB_H
#define MYLIB_H

void print_message(const char *message);
   int add_numbers(int a, int b);

#endif
  1. 3. 编写源文件:
  2.    ```c
  3.    // src/mylib.c
  4.    #include <stdio.h>
  5.    #include "mylib.h"
  6.    
  7.    void print_message(const char *message) {
  8.        printf("Message: %s\n", message);
  9.    }
  10.    
  11.    int add_numbers(int a, int b) {
  12.        return a + b;
  13.    }
复制代码

1. 编写主程序:
“`c
// src/main.c
#include#include “mylib.h”

int main() {
  1. print_message("Hello from mylib!");
  2.    int result = add_numbers(5, 7);
  3.    printf("5 + 7 = %d\n", result);
  4.    return 0;
复制代码

}
  1. 5. 创建 Makefile:
  2.    ```makefile
  3.    # Makefile
  4.    CC = gcc
  5.    CFLAGS = -Wall -I./include
  6.    SRCDIR = src
  7.    OBJDIR = obj
  8.    SOURCES = $(wildcard $(SRCDIR)/*.c)
  9.    OBJECTS = $(SOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
  10.    TARGET = myprogram
  11.    
  12.    .PHONY: all clean
  13.    
  14.    all: $(TARGET)
  15.    
  16.    $(TARGET): $(OBJECTS)
  17.        $(CC) $(OBJECTS) -o $(TARGET)
  18.    
  19.    $(OBJDIR)/%.o: $(SRCDIR)/%.c
  20.        @mkdir -p $(OBJDIR)
  21.        $(CC) $(CFLAGS) -c $< -o $@
  22.    
  23.    clean:
  24.        rm -rf $(OBJDIR) $(TARGET)
复制代码

1. 编译和运行:make
./myprogram
  1. make
  2. ./myprogram
复制代码

8. 网络配置与管理

8.1 基本网络配置

1. 查看网络接口:ip a
2. 配置静态 IP 地址:
“`bash创建网络配置文件cat > /etc/network/interfaces << EOF
auto eth0
iface eth0 inet static
   address 192.168.1.100
   netmask 255.255.255.0
   gateway 192.168.1.1
EOF

查看网络接口:
  1. ip a
复制代码

配置静态 IP 地址:
“`bash

cat > /etc/network/interfaces << EOF
auto eth0
iface eth0 inet static
   address 192.168.1.100
   netmask 255.255.255.0
   gateway 192.168.1.1
EOF

# 重启网络服务
   sv down dhcpcd
   sv up network
  1. 3. 配置 DNS:
  2.    ```bash
  3.    # 编辑 resolv.conf 文件
  4.    cat > /etc/resolv.conf << EOF
  5.    nameserver 8.8.8.8
  6.    nameserver 8.8.4.4
  7.    EOF
复制代码

8.2 防火墙配置

1. 安装防火墙工具:xbps-install -S iptables
2. 创建基本防火墙规则:
“`bash创建防火墙规则脚本cat > /etc/firewall.sh << EOF
#!/bin/bash

安装防火墙工具:
  1. xbps-install -S iptables
复制代码

创建基本防火墙规则:
“`bash

cat > /etc/firewall.sh << EOF
#!/bin/bash

# 清除现有规则
   iptables -F
   iptables -X
   iptables -t nat -F
   iptables -t nat -X
   iptables -t mangle -F
   iptables -t mangle -X

# 设置默认策略
   iptables -P INPUT DROP
   iptables -P FORWARD DROP
   iptables -P OUTPUT ACCEPT

# 允许本地回环
   iptables -A INPUT -i lo -j ACCEPT
   iptables -A OUTPUT -o lo -j ACCEPT

# 允许已建立的连接
   iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

# 允许 SSH
   iptables -A INPUT -p tcp –dport 22 -j ACCEPT

# 允许 HTTP 和 HTTPS
   iptables -A INPUT -p tcp –dport 80 -j ACCEPT
   iptables -A INPUT -p tcp –dport 443 -j ACCEPT

# 保存规则
   iptables-save > /etc/iptables/rules.v4
   EOF

# 使脚本可执行
   chmod +x /etc/firewall.sh

# 运行脚本
   /etc/firewall.sh
  1. 3. 创建服务以在启动时加载防火墙规则:
  2.    ```bash
  3.    # 创建服务目录
  4.    mkdir -p /etc/sv/iptables
  5.    
  6.    # 创建运行脚本
  7.    cat > /etc/sv/iptables/run << EOF
  8.    #!/bin/sh
  9.    
  10.    iptables-restore < /etc/iptables/rules.v4
  11.    exec sv once iptables
  12.    EOF
  13.    
  14.    # 使脚本可执行
  15.    chmod +x /etc/sv/iptables/run
  16.    
  17.    # 启用服务
  18.    ln -s /etc/sv/iptables /var/service/
复制代码

8.3 网络服务配置

1. 安装和配置 SSH 服务器:
“`bash安装 OpenSSH 服务器xbps-install -S openssh

安装和配置 SSH 服务器:
“`bash

xbps-install -S openssh

# 启用 SSH 服务
   ln -s /etc/sv/sshd /var/service/

# 配置 SSH 服务器
   cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
   cat > /etc/ssh/sshd_config << EOF
   Port 22
   Protocol 2
   HostKey /etc/ssh/ssh_host_rsa_key
   HostKey /etc/ssh/ssh_host_ed25519key
   PermitRootLogin no
   PasswordAuthentication yes
   ChallengeResponseAuthentication no
   UsePAM yes
   X11Forwarding yes
   PrintMotd no
   AcceptEnv LANG LC*
   Subsystem sftp /usr/libexec/sftp-server
   EOF

# 重启 SSH 服务
   sv restart sshd
  1. 2. 安装和配置 Web 服务器(Nginx):
  2.    ```bash
  3.    # 安装 Nginx
  4.    xbps-install -S nginx
  5.    
  6.    # 启用 Nginx 服务
  7.    ln -s /etc/sv/nginx /var/service/
  8.    
  9.    # 创建网站目录
  10.    mkdir -p /var/www/html
  11.    
  12.    # 创建测试页面
  13.    echo "<h1>Welcome to Void Linux Web Server</h1>" > /var/www/html/index.html
  14.    
  15.    # 配置 Nginx
  16.    cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
  17.    cat > /etc/nginx/nginx.conf << EOF
  18.    user nginx;
  19.    worker_processes auto;
  20.    
  21.    error_log /var/log/nginx/error.log;
  22.    
  23.    events {
  24.        worker_connections 1024;
  25.    }
  26.    
  27.    http {
  28.        include /etc/nginx/mime.types;
  29.        default_type application/octet-stream;
  30.       
  31.        sendfile on;
  32.        keepalive_timeout 65;
  33.       
  34.        server {
  35.            listen 80;
  36.            server_name localhost;
  37.            
  38.            root /var/www/html;
  39.            index index.html;
  40.            
  41.            location / {
  42.                try_files \$uri \$uri/ =404;
  43.            }
  44.            
  45.            error_page 404 /404.html;
  46.            error_page 500 502 503 504 /50x.html;
  47.            location = /50x.html {
  48.                root /var/www/html;
  49.            }
  50.        }
  51.    }
  52.    EOF
  53.    
  54.    # 重启 Nginx 服务
  55.    sv restart nginx
复制代码

9. 安全设置

9.1 系统安全加固

1. 更新系统:xbps-install -Su
2. 禁用 root 登录:
“`bash创建普通用户useradd -m -G users,wheel -s /bin/bash username
passwd username

更新系统:
  1. xbps-install -Su
复制代码

禁用 root 登录:
“`bash

useradd -m -G users,wheel -s /bin/bash username
passwd username

# 禁用 root 登录
   passwd -l root
  1. 3. 配置 sudo:
  2.    ```bash
  3.    # 安装 sudo
  4.    xbps-install -S sudo
  5.    
  6.    # 配置 sudoers
  7.    visudo
复制代码

在打开的文件中,取消以下行的注释:
  1. %wheel ALL=(ALL) ALL
复制代码

1. 配置 Fail2ban:
“`bash安装 Fail2banxbps-install -S fail2ban

配置 Fail2ban:
“`bash

xbps-install -S fail2ban

# 启用 Fail2ban 服务
   ln -s /etc/sv/fail2ban /var/service/

# 配置 SSH 保护
   cat > /etc/fail2ban/jail.local << EOF
   [sshd]
   enabled = true
   port = 22
   filter = sshd
   logpath = /var/log/sshd.log
   maxretry = 3
   bantime = 3600
   EOF

# 重启 Fail2ban 服务
   sv restart fail2ban
  1. ### 9.2 文件系统安全
  2. 1. 设置文件权限:
  3.    ```bash
  4.    # 设置重要目录权限
  5.    chmod 700 /root
  6.    chmod 750 /home
  7.    chmod 755 /var/www
  8.    
  9.    # 设置敏感文件权限
  10.    chmod 600 /etc/passwd-
  11.    chmod 600 /etc/shadow-
  12.    chmod 600 /etc/group-
  13.    chmod 600 /etc/gshadow-
复制代码

1. 查找没有所有者的文件:find / -nouser -o -nogroup
2. 查找 SUID/SGID 文件:find / -type f \( -perm -4000 -o -perm -2000 \) -ls

查找没有所有者的文件:
  1. find / -nouser -o -nogroup
复制代码

查找 SUID/SGID 文件:
  1. find / -type f \( -perm -4000 -o -perm -2000 \) -ls
复制代码

9.3 系统审计

1. 安装审计工具:xbps-install -S audit
2. 配置审计规则:
“`bash创建审计规则cat > /etc/audit/rules.d/audit.rules << EOF删除现有规则-D

安装审计工具:
  1. xbps-install -S audit
复制代码

配置审计规则:
“`bash

cat > /etc/audit/rules.d/audit.rules << EOF

-D

# 设置缓冲区大小
   -b 8192

# 监控文件访问
   -w /etc/passwd -p wa -k identity
   -w /etc/shadow -p wa -k identity
   -w /etc/group -p wa -k identity
   -w /etc/sudoers -p wa -k identity

# 监控系统调用
   -a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -k perm_mod
   -a always,exit -F arch=b64 -S chown -S fchown -S fchownat -S lchown -k perm_mod

# 使规则永久
   -e 1
   EOF

# 启用审计服务
   ln -s /etc/sv/auditd /var/service/
  1. 3. 查看审计日志:
  2.    ```bash
  3.    ausearch -k identity
  4.    ausearch -k perm_mod
复制代码

10. 性能优化

10.1 系统性能监控

1. 安装监控工具:xbps-install -S htop iotop sysstat
2. 使用 htop 监控系统资源:htop
3. 使用 iotop 监控磁盘 I/O:iotop
4. 配置 sysstat:
“`bash启用 sysstat 收集sed -i ’s/ENABLED=“false”/ENABLED=“true”/’ /etc/default/sysstat

安装监控工具:
  1. xbps-install -S htop iotop sysstat
复制代码

使用 htop 监控系统资源:
  1. htop
复制代码

使用 iotop 监控磁盘 I/O:
  1. iotop
复制代码

配置 sysstat:
“`bash

sed -i ’s/ENABLED=“false”/ENABLED=“true”/’ /etc/default/sysstat

# 启用 sysstat 服务
   ln -s /etc/sv/sysstat /var/service/

# 查看 CPU 使用统计
   sar -u

# 查看内存使用统计
   sar -r

# 查看磁盘 I/O 统计
   sar -b
  1. ### 10.2 内核参数优化
  2. 1. 编辑 sysctl 配置:
  3.    ```bash
  4.    # 创建 sysctl 配置文件
  5.    cat > /etc/sysctl.d/99-sysctl.conf << EOF
  6.    # 网络参数优化
  7.    net.core.rmem_max = 16777216
  8.    net.core.wmem_max = 16777216
  9.    net.ipv4.tcp_rmem = 4096 87380 16777216
  10.    net.ipv4.tcp_wmem = 4096 65536 16777216
  11.    net.ipv4.tcp_congestion_control = bbr
  12.    net.ipv4.tcp_fastopen = 3
  13.    net.core.netdev_max_backlog = 5000
  14.    
  15.    # 文件系统优化
  16.    vm.swappiness = 10
  17.    vm.vfs_cache_pressure = 50
  18.    vm.dirty_ratio = 30
  19.    vm.dirty_background_ratio = 10
  20.    
  21.    # 安全参数
  22.    net.ipv4.conf.all.rp_filter = 1
  23.    net.ipv4.conf.default.rp_filter = 1
  24.    net.ipv4.conf.all.accept_source_route = 0
  25.    net.ipv4.conf.default.accept_source_route = 0
  26.    net.ipv4.conf.all.accept_redirects = 0
  27.    net.ipv4.conf.default.accept_redirects = 0
  28.    net.ipv4.conf.all.secure_redirects = 0
  29.    net.ipv4.conf.default.secure_redirects = 0
  30.    net.ipv4.conf.all.send_redirects = 0
  31.    net.ipv4.conf.default.send_redirects = 0
  32.    net.ipv4.conf.all.log_martians = 1
  33.    net.ipv4.conf.default.log_martians = 1
  34.    net.ipv4.icmp_echo_ignore_broadcasts = 1
  35.    net.ipv4.icmp_ignore_bogus_error_responses = 1
  36.    net.ipv4.conf.all.rp_filter = 1
  37.    net.ipv4.conf.default.rp_filter = 1
  38.    net.ipv4.tcp_syncookies = 1
  39.    EOF
  40.    
  41.    # 应用 sysctl 配置
  42.    sysctl -p /etc/sysctl.d/99-sysctl.conf
复制代码

10.3 文件系统优化

1. 使用 noatime 挂载选项:
“`bash编辑 /etc/fstabcp /etc/fstab /etc/fstab.bak
sed -i ’s/defaults/defaults,noatime/’ /etc/fstab

使用 noatime 挂载选项:
“`bash

cp /etc/fstab /etc/fstab.bak
sed -i ’s/defaults/defaults,noatime/’ /etc/fstab

# 重新挂载所有文件系统
   mount -o remount /
  1. 2. 配置 I/O 调度器:
  2.    ```bash
  3.    # 创建 udev 规则
  4.    cat > /etc/udev/rules.d/60-ioscheduler.rules << EOF
  5.    ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline"
  6.    ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"
  7.    EOF
  8.    
  9.    # 重新加载 udev 规则
  10.    udevadm control --reload-rules
  11.    udevadm trigger
复制代码

11. 常见问题解决

11.1 系统启动问题

1. 修复 GRUB 引导:
“`bash从 Live USB 启动并挂载根分区mount /dev/sda2 /mnt
mount /dev/sda1 /mnt/boot

修复 GRUB 引导:
“`bash

mount /dev/sda2 /mnt
mount /dev/sda1 /mnt/boot

# 进入 chroot 环境
   chroot /mnt

# 重新安装 GRUB
   grub-install /dev/sda
   grub-mkconfig -o /boot/grub/grub.cfg

# 退出 chroot 并重启
   exit
   umount /mnt/boot
   umount /mnt
   reboot
  1. 2. 检查和修复文件系统:
  2.    ```bash
  3.    # 检查文件系统
  4.    fsck /dev/sda2
  5.    
  6.    # 修复文件系统(如果需要)
  7.    fsck -y /dev/sda2
复制代码

11.2 软件包管理问题

1. 清理 XBPS 缓存:
“`bash清理已下载的软件包xbps-remove -O

清理 XBPS 缓存:
“`bash

xbps-remove -O

# 清理孤立软件包
   xbps-remove -o
  1. 2. 修复损坏的软件包数据库:
  2.    ```bash
  3.    # 删除损坏的数据库
  4.    rm /var/db/xbps/*.plist
  5.    
  6.    # 重新同步软件包数据库
  7.    xbps-install -S
复制代码

11.3 网络连接问题

1. 重置网络配置:
“`bash停止网络服务sv down network

重置网络配置:
“`bash

sv down network

# 重置网络接口
   ip link set eth0 down
   ip addr flush dev eth0
   ip link set eth0 up

# 重新启动网络服务
   sv up network
  1. 2. 检查网络连接:
  2.    ```bash
  3.    # 检查网络接口状态
  4.    ip a
  5.    
  6.    # 检查路由表
  7.    ip r
  8.    
  9.    # 测试 DNS 解析
  10.    nslookup example.com
  11.    
  12.    # 测试网络连接
  13.    ping -c 4 example.com
复制代码

12. 进阶主题

12.1 容器化技术

1. 安装 Docker:
“`bash安装 Dockerxbps-install -S docker

安装 Docker:
“`bash

xbps-install -S docker

# 启用 Docker 服务
   ln -s /etc/sv/docker /var/service/

# 将用户添加到 docker 组
   usermod -aG docker username

# 重新登录或使用以下命令使更改生效
   newgrp docker
  1. 2. 使用 Docker 运行容器:
  2.    ```bash
  3.    # 拉取 Ubuntu 镜像
  4.    docker pull ubuntu:latest
  5.    
  6.    # 运行 Ubuntu 容器
  7.    docker run -it ubuntu:latest /bin/bash
  8.    
  9.    # 在容器中安装软件
  10.    apt update
  11.    apt install -y htop
  12.    
  13.    # 退出容器
  14.    exit
复制代码

12.2 虚拟化技术

1. 安装 KVM 和相关工具:
“`bash安装虚拟化软件包xbps-install -S qemu virt-manager libvirt

安装 KVM 和相关工具:
“`bash

xbps-install -S qemu virt-manager libvirt

# 启用 libvirt 服务
   ln -s /etc/sv/libvirtd /var/service/

# 将用户添加到 libvirt 组
   usermod -aG libvirt username

# 重新登录或使用以下命令使更改生效
   newgrp libvirt
  1. 2. 创建虚拟机:
  2.    ```bash
  3.    # 使用 virt-manager 创建虚拟机(图形界面)
  4.    virt-manager
  5.    
  6.    # 使用 virt-install 创建虚拟机(命令行)
  7.    virt-install \
  8.      --name vm1 \
  9.      --memory 2048 \
  10.      --vcpus 2 \
  11.      --disk size=20 \
  12.      --cdrom /path/to/iso/file.iso \
  13.      --os-variant ubuntu20.04
复制代码

12.3 系统自动化

1. 安装 Ansible:# 安装 Ansible
xbps-install -S ansible
2.
  1. 创建简单的 Ansible Playbook:
  2. “`yamlsite.ymlname: Configure Void Linux server
  3. hosts: localhost
  4. become: yestasks:- name: Update system
  5. xbps:
  6.    name: "*"
  7.    state: latest
  8.    update_cache: yes
  9.    - name: Install essential packages
  10. xbps:
  11.    name:
  12.      - htop
  13.      - vim
  14.      - git
  15.      - python3
  16.    state: present
  17.    - name: Create user
  18. user:
  19.    name: ansible
  20.    shell: /bin/bash
  21.    groups: users,wheel
  22.    append: yes
  23.    - name: Start and enable services
  24. service:
  25.    name: "{{ item }}"
  26.    enabled: yes
  27.    state: started
  28. with_items:
  29.    - sshd
  30.    - docker”`
复制代码
3.
  1. name: Configure Void Linux server
  2. hosts: localhost
  3. become: yes
复制代码
4. 运行 Ansible Playbook:ansible-playbook site.yml

安装 Ansible:
  1. # 安装 Ansible
  2. xbps-install -S ansible
复制代码

创建简单的 Ansible Playbook:
“`yaml

  1. name: Configure Void Linux server
  2. hosts: localhost
  3. become: yes
复制代码

tasks:
  1. - name: Update system
  2. xbps:
  3.    name: "*"
  4.    state: latest
  5.    update_cache: yes
  6.    - name: Install essential packages
  7. xbps:
  8.    name:
  9.      - htop
  10.      - vim
  11.      - git
  12.      - python3
  13.    state: present
  14.    - name: Create user
  15. user:
  16.    name: ansible
  17.    shell: /bin/bash
  18.    groups: users,wheel
  19.    append: yes
  20.    - name: Start and enable services
  21. service:
  22.    name: "{{ item }}"
  23.    enabled: yes
  24.    state: started
  25. with_items:
  26.    - sshd
  27.    - docker
复制代码

”`

运行 Ansible Playbook:
  1. ansible-playbook site.yml
复制代码

通过本教程,你已经从零开始学习了 Void Linux 的安装、配置、系统管理和编程等方面的知识。Void Linux 是一个强大而灵活的操作系统,适合开发者和系统管理员使用。随着你的深入学习和实践,你将能够更好地掌握这个优秀的开源操作系统,并成为一名真正的 Linux 专家。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则