|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
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 设备,请确保使用正确的设备名
- 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 倍
• /根分区:剩余所有空间
• /boot分区:至少 200MB
• swap分区:建议大小为 RAM 的 1-2 倍
• /根分区:剩余所有空间
格式化分区:
“`bash
mkfs.ext4 /dev/sda1
# 格式化根分区
mkfs.ext4 /dev/sda3
# 设置 swap 分区
mkswap /dev/sda2
swapon /dev/sda2
- 5. 挂载分区:
- ```bash
- # 挂载根分区
- mount /dev/sda3 /mnt
-
- # 创建 boot 目录并挂载
- mkdir /mnt/boot
- mount /dev/sda1 /mnt/boot
复制代码
1. - 安装基础系统:
- “`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
- 7. 配置系统:
- ```bash
- # 生成 fstab 文件
- chroot /mnt "xbps-reconfigure -f linux5.15; grub-install /dev/sda; grub-mkconfig -o /boot/grub/grub.cfg"
-
- # 进入 chroot 环境
- chroot /mnt
-
- # 设置 root 密码
- passwd
-
- # 设置主机名
- echo voidlinux > /etc/hostname
-
- # 配置时区
- ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
-
- # 配置语言环境
- echo "LANG=en_US.UTF-8" > /etc/locale.conf
- echo "en_US.UTF-8 UTF-8" >> /etc/default/libc-locales
- xbps-reconfigure -f glibc-locales
-
- # 退出 chroot 环境
- exit
复制代码
1. 完成安装:
“`bash卸载分区umount /mnt/boot
umount /mnt
完成安装:
“`bash
umount /mnt/boot
umount /mnt
# 重启系统
reboot
- ## 3. 系统配置
- ### 3.1 用户和权限管理
- 1. 创建新用户:
- ```bash
- # 添加新用户
- useradd -m -G users,wheel,audio,video,storage -s /bin/bash username
-
- # 设置用户密码
- passwd username
复制代码
1. 配置 sudo:
“`bash安装 sudoxbps-install -S sudo
配置 sudo:
“`bash
xbps-install -S sudo
# 配置 sudoers 文件
visudo
%wheel ALL=(ALL) ALL
- ### 3.2 网络配置
- 1. 有线网络配置:
- ```bash
- # 启用 DHCP
- ln -s /etc/sv/dhcpcd /var/service/
-
- # 手动配置静态 IP
- # 编辑 /etc/network/interfaces 文件
- 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. 无线网络配置:
“`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/
- ### 3.3 图形界面安装
- 1. 安装 Xorg:
- ```bash
- xbps-install -S xorg
复制代码
1. 安装显示管理器(如 LightDM):
“`bash
xbps-install -S lightdm lightdm-gtk3-greeter
# 启用 LightDM 服务
ln -s /etc/sv/lightdm /var/service/
- 3. 安装桌面环境(如 XFCE):
- ```bash
- xbps-install -S xfce4
-
- # 安装主题和其他实用工具
- 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
同步软件包数据库:
搜索软件包:
- xbps-query -Rs package_name
复制代码
安装软件包:
- xbps-install -S package_name
复制代码
删除软件包:
- xbps-remove -R package_name
复制代码
更新系统:
列出已安装的软件包:
查找文件属于哪个软件包:
- xbps-query -o /path/to/file
复制代码
4.2 源码编译安装
除了使用二进制包外,你还可以从源码编译安装软件:
1. 安装编译工具:xbps-install -S base-devel
2. - 下载源码:git clone https://github.com/void-linux/void-packages.git
- cd void-packages
复制代码 3. 配置编译环境:./xbps-src binary-bootstrap
4. 编译软件包:./xbps-src pkg package_name
5. 安装编译好的软件包:xi package_name
安装编译工具:
- xbps-install -S base-devel
复制代码
下载源码:
- git clone https://github.com/void-linux/void-packages.git
- cd void-packages
复制代码
配置编译环境:
- ./xbps-src binary-bootstrap
复制代码
编译软件包:
- ./xbps-src pkg 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 # 重启服务
查看已启用的服务:
启用服务:
- ln -s /etc/sv/service_name /var/service/
复制代码
禁用服务:
- rm /var/service/service_name
复制代码
查看服务状态:
启动、停止、重启服务:
- sv up service_name # 启动服务
- sv down service_name # 停止服务
- 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
查看服务日志:
- tail -f /var/log/service_name/current
复制代码
配置日志轮转:
编辑/etc/sv/service_name/log/run文件,设置日志大小和保留数量:
- #!/bin/sh
- exec logger -t service_name -p daemon.info
复制代码
5.3 系统监控
1. 查看系统资源使用情况:
“`bash安装 htopxbps-install -S htop
查看系统资源使用情况:
“`bash
xbps-install -S htop
# 运行 htop
htop
- 2. 查看磁盘使用情况:
- ```bash
- df -h
复制代码
1. 查看内存使用情况:free -h
2. 查看系统启动时间: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!”
- 2. 条件语句:
- ```bash
- #!/bin/bash
-
- read -p "Enter your age: " AGE
-
- if [ $AGE -lt 18 ]; then
- echo "You are a minor."
- elif [ $AGE -ge 18 ] && [ $AGE -lt 65 ]; then
- echo "You are an adult."
- else
- echo "You are a senior citizen."
- fi
复制代码
1. 循环语句:
“`bash
#!/bin/bash
# for 循环
echo “Counting with for loop:”
for i in {1..5}; do
done
# while 循环
echo “Counting with while loop:”
COUNT=1
while [ $COUNT -le 5 ]; do
- echo "Count: $COUNT"
- COUNT=$((COUNT + 1))
复制代码
done
- ### 6.2 实用脚本示例
- 1. 系统信息脚本:
- ```bash
- #!/bin/bash
-
- echo "===== System Information ====="
- echo "Hostname: $(hostname)"
- echo "OS: $(cat /etc/os-release | grep PRETTY_NAME | cut -d= -f2 | tr -d '"')"
- echo "Kernel: $(uname -r)"
- echo "Uptime: $(uptime -p)"
- echo ""
-
- echo "===== CPU Information ====="
- echo "Model: $(cat /proc/cpuinfo | grep 'model name' | head -1 | cut -d: -f2 | xargs)"
- echo "Cores: $(nproc)"
- echo ""
-
- echo "===== Memory Information ====="
- free -h
- echo ""
-
- echo "===== Disk Information ====="
- 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
- echo "Backup created successfully: $BACKUP_DIR/$BACKUP_NAME"
复制代码
else
- echo "Backup failed!"
- exit 1
复制代码
fi
# 删除30天前的备份
echo “Cleaning up old backups…”
find $BACKUPDIR -name “backup*.tar.gz” -mtime +30 -delete
echo “Done.”
- ## 7. 系统编程
- ### 7.1 C 语言编程
- 1. 安装开发工具:
- ```bash
- xbps-install -S gcc make libc-devel
复制代码
1. 编写简单的 C 程序:
“`c
// hello.c
#include
int main() {
- printf("Hello, Void Linux!\n");
- return 0;
复制代码
}
- 3. 编译和运行:
- ```bash
- gcc -o hello hello.c
- ./hello
复制代码
1. 更复杂的 C 程序示例(文件操作):
“`c
// file_io.c
#include#include
int main() {
- FILE *sourceFile, *targetFile;
- char ch;
- // 打开源文件
- sourceFile = fopen("source.txt", "r");
- if (sourceFile == NULL) {
- printf("Cannot open source file.\n");
- exit(1);
- }
- // 创建目标文件
- targetFile = fopen("target.txt", "w");
- if (targetFile == NULL) {
- printf("Cannot create target file.\n");
- fclose(sourceFile);
- exit(1);
- }
- // 复制文件内容
- while ((ch = fgetc(sourceFile)) != EOF) {
- fputc(ch, targetFile);
- }
- printf("File copied successfully.\n");
- // 关闭文件
- fclose(sourceFile);
- fclose(targetFile);
- return 0;
复制代码
}
- ### 7.2 Python 编程
- 1. 安装 Python:
- ```bash
- xbps-install -S python3 python3-pip
复制代码
1. - 编写简单的 Python 程序:
- “`pythonhello.pyprint(“Hello, Void Linux!”)
复制代码
编写简单的 Python 程序:
“`python
print(“Hello, Void Linux!”)
# 获取用户输入
name = input(“Enter your name: “)
print(f”Hello, {name}!“)
- 3. 运行 Python 程序:
- ```bash
- python3 hello.py
复制代码
1. 更复杂的 Python 程序示例(文件操作):
“`pythonfile_copy.pyimport sys
更复杂的 Python 程序示例(文件操作):
“`python
import sys
def copy_file(source, target):
- try:
- with open(source, 'r') as src_file:
- content = src_file.read()
- with open(target, 'w') as tgt_file:
- tgt_file.write(content)
- print(f"File '{source}' copied to '{target}' successfully.")
- except FileNotFoundError:
- print(f"Error: Source file '{source}' not found.")
- except Exception as e:
- print(f"An error occurred: {str(e)}")
复制代码
ifname== “main”:
- if len(sys.argv) != 3:
- print("Usage: python file_copy.py <source_file> <target_file>")
- sys.exit(1)
- source_file = sys.argv[1]
- target_file = sys.argv[2]
- copy_file(source_file, target_file)
复制代码- ### 7.3 使用 Makefile 管理项目
- 1. 创建项目目录结构:
- ```bash
- mkdir myproject
- cd myproject
- 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
- 3. 编写源文件:
- ```c
- // src/mylib.c
- #include <stdio.h>
- #include "mylib.h"
-
- void print_message(const char *message) {
- printf("Message: %s\n", message);
- }
-
- int add_numbers(int a, int b) {
- return a + b;
- }
复制代码
1. 编写主程序:
“`c
// src/main.c
#include#include “mylib.h”
int main() {
- print_message("Hello from mylib!");
- int result = add_numbers(5, 7);
- printf("5 + 7 = %d\n", result);
- return 0;
复制代码
}
- 5. 创建 Makefile:
- ```makefile
- # Makefile
- CC = gcc
- CFLAGS = -Wall -I./include
- SRCDIR = src
- OBJDIR = obj
- SOURCES = $(wildcard $(SRCDIR)/*.c)
- OBJECTS = $(SOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
- TARGET = myprogram
-
- .PHONY: all clean
-
- all: $(TARGET)
-
- $(TARGET): $(OBJECTS)
- $(CC) $(OBJECTS) -o $(TARGET)
-
- $(OBJDIR)/%.o: $(SRCDIR)/%.c
- @mkdir -p $(OBJDIR)
- $(CC) $(CFLAGS) -c $< -o $@
-
- clean:
- rm -rf $(OBJDIR) $(TARGET)
复制代码
1. 编译和运行:make
./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
查看网络接口:
配置静态 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
- 3. 配置 DNS:
- ```bash
- # 编辑 resolv.conf 文件
- cat > /etc/resolv.conf << EOF
- nameserver 8.8.8.8
- nameserver 8.8.4.4
- EOF
复制代码
8.2 防火墙配置
1. 安装防火墙工具:xbps-install -S iptables
2. 创建基本防火墙规则:
“`bash创建防火墙规则脚本cat > /etc/firewall.sh << EOF
#!/bin/bash
安装防火墙工具:
创建基本防火墙规则:
“`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
- 3. 创建服务以在启动时加载防火墙规则:
- ```bash
- # 创建服务目录
- mkdir -p /etc/sv/iptables
-
- # 创建运行脚本
- cat > /etc/sv/iptables/run << EOF
- #!/bin/sh
-
- iptables-restore < /etc/iptables/rules.v4
- exec sv once iptables
- EOF
-
- # 使脚本可执行
- chmod +x /etc/sv/iptables/run
-
- # 启用服务
- 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
- 2. 安装和配置 Web 服务器(Nginx):
- ```bash
- # 安装 Nginx
- xbps-install -S nginx
-
- # 启用 Nginx 服务
- ln -s /etc/sv/nginx /var/service/
-
- # 创建网站目录
- mkdir -p /var/www/html
-
- # 创建测试页面
- echo "<h1>Welcome to Void Linux Web Server</h1>" > /var/www/html/index.html
-
- # 配置 Nginx
- cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
- cat > /etc/nginx/nginx.conf << EOF
- user nginx;
- worker_processes auto;
-
- error_log /var/log/nginx/error.log;
-
- events {
- worker_connections 1024;
- }
-
- http {
- include /etc/nginx/mime.types;
- default_type application/octet-stream;
-
- sendfile on;
- keepalive_timeout 65;
-
- server {
- listen 80;
- server_name localhost;
-
- root /var/www/html;
- index index.html;
-
- location / {
- try_files \$uri \$uri/ =404;
- }
-
- error_page 404 /404.html;
- error_page 500 502 503 504 /50x.html;
- location = /50x.html {
- root /var/www/html;
- }
- }
- }
- EOF
-
- # 重启 Nginx 服务
- sv restart nginx
复制代码
9. 安全设置
9.1 系统安全加固
1. 更新系统:xbps-install -Su
2. 禁用 root 登录:
“`bash创建普通用户useradd -m -G users,wheel -s /bin/bash username
passwd username
更新系统:
禁用 root 登录:
“`bash
useradd -m -G users,wheel -s /bin/bash username
passwd username
# 禁用 root 登录
passwd -l root
- 3. 配置 sudo:
- ```bash
- # 安装 sudo
- xbps-install -S sudo
-
- # 配置 sudoers
- visudo
复制代码
在打开的文件中,取消以下行的注释:
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
- ### 9.2 文件系统安全
- 1. 设置文件权限:
- ```bash
- # 设置重要目录权限
- chmod 700 /root
- chmod 750 /home
- chmod 755 /var/www
-
- # 设置敏感文件权限
- chmod 600 /etc/passwd-
- chmod 600 /etc/shadow-
- chmod 600 /etc/group-
- chmod 600 /etc/gshadow-
复制代码
1. 查找没有所有者的文件:find / -nouser -o -nogroup
2. 查找 SUID/SGID 文件:find / -type f \( -perm -4000 -o -perm -2000 \) -ls
查找没有所有者的文件:
- find / -nouser -o -nogroup
复制代码
查找 SUID/SGID 文件:
- 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
安装审计工具:
配置审计规则:
“`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/
- 3. 查看审计日志:
- ```bash
- ausearch -k identity
- 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
安装监控工具:
- xbps-install -S htop iotop sysstat
复制代码
使用 htop 监控系统资源:
使用 iotop 监控磁盘 I/O:
配置 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
- ### 10.2 内核参数优化
- 1. 编辑 sysctl 配置:
- ```bash
- # 创建 sysctl 配置文件
- cat > /etc/sysctl.d/99-sysctl.conf << EOF
- # 网络参数优化
- net.core.rmem_max = 16777216
- net.core.wmem_max = 16777216
- net.ipv4.tcp_rmem = 4096 87380 16777216
- net.ipv4.tcp_wmem = 4096 65536 16777216
- net.ipv4.tcp_congestion_control = bbr
- net.ipv4.tcp_fastopen = 3
- net.core.netdev_max_backlog = 5000
-
- # 文件系统优化
- vm.swappiness = 10
- vm.vfs_cache_pressure = 50
- vm.dirty_ratio = 30
- vm.dirty_background_ratio = 10
-
- # 安全参数
- net.ipv4.conf.all.rp_filter = 1
- net.ipv4.conf.default.rp_filter = 1
- net.ipv4.conf.all.accept_source_route = 0
- net.ipv4.conf.default.accept_source_route = 0
- net.ipv4.conf.all.accept_redirects = 0
- net.ipv4.conf.default.accept_redirects = 0
- net.ipv4.conf.all.secure_redirects = 0
- net.ipv4.conf.default.secure_redirects = 0
- net.ipv4.conf.all.send_redirects = 0
- net.ipv4.conf.default.send_redirects = 0
- net.ipv4.conf.all.log_martians = 1
- net.ipv4.conf.default.log_martians = 1
- net.ipv4.icmp_echo_ignore_broadcasts = 1
- net.ipv4.icmp_ignore_bogus_error_responses = 1
- net.ipv4.conf.all.rp_filter = 1
- net.ipv4.conf.default.rp_filter = 1
- net.ipv4.tcp_syncookies = 1
- EOF
-
- # 应用 sysctl 配置
- 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 /
- 2. 配置 I/O 调度器:
- ```bash
- # 创建 udev 规则
- cat > /etc/udev/rules.d/60-ioscheduler.rules << EOF
- ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline"
- ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"
- EOF
-
- # 重新加载 udev 规则
- udevadm control --reload-rules
- 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
- 2. 检查和修复文件系统:
- ```bash
- # 检查文件系统
- fsck /dev/sda2
-
- # 修复文件系统(如果需要)
- fsck -y /dev/sda2
复制代码
11.2 软件包管理问题
1. 清理 XBPS 缓存:
“`bash清理已下载的软件包xbps-remove -O
清理 XBPS 缓存:
“`bash
xbps-remove -O
# 清理孤立软件包
xbps-remove -o
- 2. 修复损坏的软件包数据库:
- ```bash
- # 删除损坏的数据库
- rm /var/db/xbps/*.plist
-
- # 重新同步软件包数据库
- 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
- 2. 检查网络连接:
- ```bash
- # 检查网络接口状态
- ip a
-
- # 检查路由表
- ip r
-
- # 测试 DNS 解析
- nslookup example.com
-
- # 测试网络连接
- 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
- 2. 使用 Docker 运行容器:
- ```bash
- # 拉取 Ubuntu 镜像
- docker pull ubuntu:latest
-
- # 运行 Ubuntu 容器
- docker run -it ubuntu:latest /bin/bash
-
- # 在容器中安装软件
- apt update
- apt install -y htop
-
- # 退出容器
- 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
- 2. 创建虚拟机:
- ```bash
- # 使用 virt-manager 创建虚拟机(图形界面)
- virt-manager
-
- # 使用 virt-install 创建虚拟机(命令行)
- virt-install \
- --name vm1 \
- --memory 2048 \
- --vcpus 2 \
- --disk size=20 \
- --cdrom /path/to/iso/file.iso \
- --os-variant ubuntu20.04
复制代码
12.3 系统自动化
1. 安装 Ansible:# 安装 Ansible
xbps-install -S ansible
2. - 创建简单的 Ansible Playbook:
- “`yamlsite.ymlname: Configure Void Linux server
- hosts: localhost
- become: yestasks:- name: Update system
- xbps:
- name: "*"
- state: latest
- update_cache: yes
- - name: Install essential packages
- xbps:
- name:
- - htop
- - vim
- - git
- - python3
- state: present
- - name: Create user
- user:
- name: ansible
- shell: /bin/bash
- groups: users,wheel
- append: yes
- - name: Start and enable services
- service:
- name: "{{ item }}"
- enabled: yes
- state: started
- with_items:
- - sshd
- - docker”`
复制代码 3. - name: Configure Void Linux server
- hosts: localhost
- become: yes
复制代码 4. 运行 Ansible Playbook:ansible-playbook site.yml
安装 Ansible:
- # 安装 Ansible
- xbps-install -S ansible
复制代码
创建简单的 Ansible Playbook:
“`yaml
• - name: Configure Void Linux server
- hosts: localhost
- become: yes
复制代码
tasks:
- - name: Update system
- xbps:
- name: "*"
- state: latest
- update_cache: yes
- - name: Install essential packages
- xbps:
- name:
- - htop
- - vim
- - git
- - python3
- state: present
- - name: Create user
- user:
- name: ansible
- shell: /bin/bash
- groups: users,wheel
- append: yes
- - name: Start and enable services
- service:
- name: "{{ item }}"
- enabled: yes
- state: started
- with_items:
- - sshd
- - docker
复制代码
”`
运行 Ansible Playbook:
- ansible-playbook site.yml
复制代码
通过本教程,你已经从零开始学习了 Void Linux 的安装、配置、系统管理和编程等方面的知识。Void Linux 是一个强大而灵活的操作系统,适合开发者和系统管理员使用。随着你的深入学习和实践,你将能够更好地掌握这个优秀的开源操作系统,并成为一名真正的 Linux 专家。 |
|