1. Slackware简介与历史

Slackware Linux是由Patrick Volkerding于1993年创建的,它是现存最古老的Linux发行版之一。Slackware以其简洁性、稳定性和传统Unix风格的设计理念而闻名。与其他现代Linux发行版不同,Slackware坚持使用简单的文本配置文件,避免过度自动化的配置工具,这使得用户能够更直接地控制系统各个方面。

Slackware的主要特点包括:

  • 简单性和稳定性:Slackware追求KISS(Keep It Simple, Stupid)原则,系统组件尽量保持原始状态,不进行过多修改。
  • 传统的Unix风格:系统布局和配置方式遵循传统Unix系统设计。
  • 缺少自动依赖解析:Slackware的软件包管理系统不自动解决依赖关系,这要求用户具备一定的系统知识,但也带来了更大的控制权。
  • 稳定的发布周期:Slackware不遵循固定的时间表发布新版本,而是”当它准备就绪时”发布,确保系统的稳定性。

2. 系统安装前的准备工作

在开始安装Slackware之前,需要进行一些准备工作:

2.1 硬件要求

  • x86或x86_64架构的处理器
  • 至少2GB RAM(推荐4GB或更多)
  • 至少20GB的硬盘空间(推荐50GB或更多)
  • 可启动的USB设备或DVD驱动器

2.2 获取Slackware安装镜像

访问Slackware官方网站(https://www.slackware.com/)下载最新的稳定版本安装镜像。Slackware提供两种主要版本:

  • Slackware:适用于大多数桌面和服务器系统的标准版本
  • Slackware64:适用于64位系统的版本

2.3 创建安装介质

可以使用以下命令将下载的ISO镜像写入USB设备(假设USB设备为/dev/sdb):

# 在Linux系统上 dd if=slackware-iso-file.iso of=/dev/sdb bs=4M status=progress sync # 在Windows系统上,可以使用Rufus等工具创建可启动USB设备 

2.4 系统备份

如果计划在已有系统的计算机上安装Slackware,请确保备份重要数据,以防安装过程中数据丢失。

3. Slackware系统安装过程详解

Slackware的安装过程主要基于文本界面,虽然看起来不如图形界面直观,但提供了更精确的控制。

3.1 启动安装程序

将创建好的安装介质插入计算机,重启并设置从USB或DVD启动。在启动菜单中选择”Boot Slackware Linux”选项。

3.2 键盘映射

安装程序首先会询问键盘映射。大多数用户可以选择默认的US键盘映射,如果需要其他键盘布局,可以选择相应的选项。

3.3 磁盘分区

Slackware使用fdiskcfdisk进行磁盘分区。以下是一个典型的分区方案:

# 使用cfdisk进行分区 cfdisk /dev/sda 

推荐的分区方案:

  • /boot 分区:500MB-1GB,用于存放启动相关文件
  • swap 分区:通常是RAM大小的1-2倍,但现代系统中有8GB RAM通常设置8GB就足够了
  • / 分区(根分区):至少20GB,用于系统文件
  • /home 分区:剩余空间,用于用户数据

3.4 格式化分区

分区后,需要为每个分区创建文件系统。Slackware支持多种文件系统,包括ext4、xfs、btrfs等。ext4是最常用和稳定的选择。

# 格式化分区 mkfs.ext4 /dev/sda1 # /boot mkswap /dev/sda2 # swap mkfs.ext4 /dev/sda3 # / mkfs.ext4 /dev/sda4 # /home 

3.5 挂载分区

接下来需要挂载分区,以便安装系统:

# 挂载根分区 mount /dev/sda3 /mnt # 创建并挂载其他分区 mkdir /mnt/boot mount /dev/sda1 /mnt/boot mkdir /mnt/home mount /dev/sda4 /mnt/home # 启用swap分区 swapon /dev/sda2 

3.6 选择软件包集

Slackware提供了多个软件包集,可以根据需要选择:

  • A:基础Linux系统
  • AP:各种应用程序
  • D:开发工具(编译器、调试器等)
  • E:Emacs编辑器
  • F:FAQ文档
  • K:Linux内核源代码
  • KDE:KDE桌面环境
  • KDEI:KDE国际语言支持
  • L:系统库
  • N:网络程序
  • T:TeX文档排版系统
  • TCL:Tcl/Tk脚本语言
  • X:X Window系统
  • XAP:X应用程序
  • XFCE:XFCE桌面环境

对于初学者,建议选择A、AP、D、L、N和X软件包集,以及一个桌面环境(KDE或XFCE)。

3.7 安装软件包

选择软件包集后,安装程序会询问安装模式:

  • Full:安装所选软件包集中的所有软件包
  • Newbie:为每个软件包提供简短描述并询问是否安装
  • Menu:提供分类菜单,可以选择安装哪些软件包
  • Expert:提供每个软件包的详细信息,可以精确控制安装哪些软件包
  • Custom:只安装明确选择的软件包
  • Tagpath:使用标签文件指定要安装的软件包

对于初学者,建议选择”Full”或”Newbie”模式。

3.8 配置系统

软件包安装完成后,需要进行系统配置:

3.8.1 安装LILO或GRUB

Slackware默认使用LILO作为引导加载程序,但也支持GRUB。配置引导加载程序是安装过程中的重要步骤:

# 配置LILO liloconfig # 或者安装GRUB grub-install /dev/sda 

3.8.2 配置网络

使用netconfig工具配置网络设置,包括主机名、域名、IP地址(静态或DHCP)等。

3.8.3 设置时区

使用timeconfig工具设置系统时区。

3.8.4 设置root密码

设置root用户的密码,确保系统安全。

3.8.5 创建普通用户

创建至少一个普通用户账户,用于日常系统使用。

3.9 完成安装

完成所有配置后,安装程序会提示退出并重启系统。确保移除安装介质,然后系统将从硬盘启动。

4. 基础系统配置

Slackware安装完成后,需要进行一些基础配置以确保系统正常运行。

4.1 系统服务管理

Slackware使用传统的SysVinit系统,而不是现代的systemd。系统服务通过位于/etc/rc.d/目录下的脚本控制。

# 启动一个服务 /etc/rc.d/rc.httpd start # 停止一个服务 /etc/rc.d/rc.httpd stop # 重启一个服务 /etc/rc.d/rc.httpd restart # 使服务在启动时自动运行 chmod +x /etc/rc.d/rc.httpd # 禁止服务在启动时自动运行 chmod -x /etc/rc.d/rc.httpd 

4.2 网络配置

Slackware的网络配置文件位于/etc/rc.d/目录下:

  • /etc/rc.d/rc.inet1.conf:网络接口配置
  • /etc/resolv.conf:DNS服务器配置
  • /etc/hosts:主机名映射
  • /etc/networks:网络名称映射
  • /etc/HOSTNAME:系统主机名

配置静态IP地址示例:

# 编辑 /etc/rc.d/rc.inet1.conf IPADDR[0]="192.168.1.100" NETMASK[0]="255.255.255.0" USE_DHCP[0]="" DHCP_HOSTNAME[0]="" 

配置DHCP示例:

# 编辑 /etc/rc.d/rc.inet1.conf IPADDR[0]="" NETMASK[0]="" USE_DHCP[0]="yes" DHCP_HOSTNAME[0]="" 

4.3 软件包管理

Slackware使用简单的软件包管理系统,主要工具包括:

  • pkgtool:基于文本的软件包管理工具
  • installpkg:安装软件包
  • removepkg:删除软件包
  • upgradepkg:升级软件包
  • explodepkg:解压软件包但不安装
  • makepkg:创建软件包

安装软件包示例:

# 安装单个软件包 installpkg package-name.txz # 安装目录中的所有软件包 installpkg /path/to/packages/*.txz 

删除软件包示例:

# 删除软件包 removepkg package-name 

升级软件包示例:

# 升级软件包 upgradepkg package-name-new.txz # 升级所有已安装的软件包 upgradepkg /path/to/new/packages/*.txz 

4.4 用户和组管理

使用标准的Linux命令管理用户和组:

# 添加新用户 useradd -m -G users,audio,video username passwd username # 删除用户 userdel -r username # 添加组 groupadd groupname # 删除组 groupdel groupname # 将用户添加到组 usermod -a -G groupname username 

4.5 文件系统管理

Slackware使用传统的/etc/fstab文件管理文件系统挂载:

# /etc/fstab 示例 /dev/sda1 /boot ext4 defaults 1 1 /dev/sda2 swap swap defaults 0 0 /dev/sda3 / ext4 defaults 1 1 /dev/sda4 /home ext4 defaults 1 2 /dev/cdrom /mnt/cdrom auto noauto,owner,ro 0 0 

挂载新文件系统示例:

# 创建挂载点 mkdir /mnt/data # 挂载文件系统 mount /dev/sdb1 /mnt/data # 添加到 /etc/fstab 以实现自动挂载 echo "/dev/sdb1 /mnt/data ext4 defaults 1 2" >> /etc/fstab 

5. 软件包管理进阶

虽然Slackware的基本软件包管理工具简单直接,但对于需要更多依赖管理功能的用户,有几种第三方工具可以使用。

5.1 Slackpkg

Slackpkg是Slackware官方提供的软件包管理工具,可以简化软件包的安装、升级和删除过程:

# 更新软件包列表 slackpkg update # 升级所有软件包 slackpkg upgrade-all # 安装新软件包 slackpkg install package-name # 搜索软件包 slackpkg search package-name # 删除软件包 slackpkg remove package-name 

5.2 sbopkg

sbopkg是一个用于管理SlackBuilds的工具,SlackBuilds是用于从源代码构建Slackware兼容软件包的脚本集合:

# 安装sbopkg installpkg sbopkg-version.txz # 同步SlackBuilds仓库 sbopkg -r # 搜索软件包 sbopkg -g package-name # 构建并安装软件包 sbopkg -i package-name 

5.3 Sbopkg Queue文件

对于有复杂依赖关系的软件包,可以使用Sbopkg Queue文件一次性处理多个软件包:

# 创建队列文件 echo "package1" > queuefile echo "package2" >> queuefile echo "package3" >> queuefile # 使用队列文件构建并安装软件包 sbopkg -k queuefile 

5.4 第三方仓库

除了官方软件包和SlackBuilds,还有一些第三方仓库提供额外的软件包:

  • Slackonly:提供大量额外软件包
  • Alien Bob’s repository:提供多媒体、网络和其他软件包
  • Slackware PKGS:提供各种软件包

添加第三方仓库示例:

# 编辑 /etc/slackpkg/mirrors # 添加仓库URL http://slackonly.com/pub/packages/current-x86_64/ 

6. 系统优化技巧

Slackware以其稳定性和性能著称,但通过一些优化技巧,可以进一步提升系统性能。

6.1 内核优化

Slackware默认安装通用内核,但可以根据硬件定制内核以提高性能:

# 安装内核源代码 slackpkg install kernel-source # 复制当前内核配置 cp /boot/config-generic-$(uname -r) /usr/src/linux/.config # 配置内核 cd /usr/src/linux make menuconfig # 编译内核 make -j$(nproc) make modules_install cp arch/x86/boot/bzImage /boot/vmlinuz-custom cp System.map /boot/System.map-custom cp .config /boot/config-custom # 更新引导加载程序 lilo 

6.2 系统启动优化

可以通过优化系统启动过程来加快启动速度:

# 编辑 /etc/rc.d/rc.M # 禁用不必要的服务 # 例如,如果不使用sendmail,可以注释掉以下行: # if [ -x /etc/rc.d/rc.sendmail ]; then # /etc/rc.d/rc.sendmail start # fi # 编辑 /etc/rc.d/rc.S # 启用并行启动(如果系统支持) # 在文件开头添加以下行: # /sbin/hwclock --hctosys --localtime 

6.3 文件系统优化

通过调整文件系统参数可以提高性能:

# 调整ext4文件系统参数 tune2fs -o journal_data_writeback /dev/sda3 tune2fs -O ^has_journal /dev/sda3 tune2fs -O extent,uninit_bg,dir_index /dev/sda3 e2fsck -f /dev/sda3 # 为SSD优化 # 编辑 /etc/fstab,添加noatime选项 /dev/sda3 / ext4 defaults,noatime 1 1 # 启用TRIM支持(如果使用SSD) # 编辑 /etc/fstab,添加discard选项 /dev/sda3 / ext4 defaults,noatime,discard 1 1 

6.4 内存管理优化

通过调整内核参数可以优化内存使用:

# 编辑 /etc/sysctl.conf # 添加以下内容 vm.swappiness=10 vm.vfs_cache_pressure=50 vm.dirty_ratio=10 vm.dirty_background_ratio=5 # 应用更改 sysctl -p 

6.5 网络优化

通过调整网络参数可以提高网络性能:

# 编辑 /etc/sysctl.conf # 添加以下内容 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 # 应用更改 sysctl -p 

7. 高级配置与定制

对于有经验的用户,Slackware提供了许多高级配置选项,可以深度定制系统。

7.1 自定义引导加载程序配置

Slackware默认使用LILO作为引导加载程序,以下是一个自定义LILO配置示例:

# 编辑 /etc/lilo.conf boot = /dev/sda lba32 prompt timeout = 50 vga = normal # Linux启动项 image = /boot/vmlinuz root = /dev/sda3 label = Slackware read-only # 备用内核启动项 image = /boot/vmlinuz-custom root = /dev/sda3 label = Slackware-Custom read-only # Windows启动项(如果存在) other = /dev/sda2 label = Windows table = /dev/sda # 应用更改 lilo -v 

7.2 X Window系统配置

Slackware使用X.Org Server作为X Window系统实现,可以通过以下方式配置:

# 生成Xorg配置文件 Xorg -configure mv /root/xorg.conf.new /etc/X11/xorg.conf # 编辑 /etc/X11/xorg.conf # 根据硬件调整配置 

7.3 桌面环境配置

Slackware支持多种桌面环境,包括KDE、XFCE、LXDE等。配置桌面环境的方法各不相同:

7.3.1 KDE配置

# 安装KDE slackpkg install kde # 设置KDE为默认桌面环境 echo "exec startkde" > ~/.xinitrc 

7.3.2 XFCE配置

# 安装XFCE slackpkg install xfce # 设置XFCE为默认桌面环境 echo "exec startxfce4" > ~/.xinitrc 

7.4 系统安全配置

增强Slackware系统安全性的几种方法:

# 配置防火墙 # 编辑 /etc/rc.d/rc.firewall #!/bin/sh # 清除现有规则 iptables -F iptables -X iptables -t nat -F iptables -t nat -X # 设置默认策略 iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # 允许本地回环 iptables -A INPUT -i 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 # 使防火墙脚本可执行 chmod +x /etc/rc.d/rc.firewall # 配置自动安全更新 # 编辑 /etc/slackpkg/blacklist # 注释掉不需要更新的软件包 # 例如: # #kernel* # #glibc* # 创建自动更新脚本 cat > /etc/cron.daily/slackpkg-update << EOF #!/bin/sh /usr/sbin/slackpkg update /usr/sbin/slackpkg upgrade-all EOF chmod +x /etc/cron.daily/slackpkg-update 

7.5 系统监控与日志管理

配置系统监控和日志管理:

# 安装系统监控工具 slackpkg install htop sysstat nmon # 配置syslog # 编辑 /etc/syslog.conf # 添加以下内容以保存特定日志 *.info;mail.none;authpriv.none;cron.none /var/log/messages authpriv.* /var/log/secure mail.* -/var/log/maillog cron.* /var/log/cron *.emerg * # 重启syslog服务 /etc/rc.d/rc.syslog restart # 配置logrotate # 编辑 /etc/logrotate.conf # 添加自定义日志轮转规则 /var/log/myapp.log { weekly rotate 4 compress missingok notifempty create 0640 root adm } 

8. 故障排除与维护

即使是最稳定的系统也可能遇到问题,本节介绍一些常见的故障排除方法和系统维护技巧。

8.1 系统无法启动

如果系统无法启动,可以尝试以下方法:

# 使用安装介质进入救援模式 # 挂载根分区 mount /dev/sda3 /mnt # 检查引导加载程序配置 chroot /mnt lilo -v # 检查文件系统 fsck /dev/sda3 # 如果内核损坏,重新安装内核 cd /mnt slackpkg install kernel-generic kernel-modules kernel-headers 

8.2 网络连接问题

解决网络连接问题的步骤:

# 检查网络接口状态 ifconfig -a # 启动网络接口 ifconfig eth0 up # 配置IP地址 ifconfig eth0 192.168.1.100 netmask 255.255.255.0 # 添加默认网关 route add default gw 192.168.1.1 # 配置DNS echo "nameserver 8.8.8.8" > /etc/resolv.conf # 测试网络连接 ping google.com # 检查网络服务状态 /etc/rc.d/rc.inet1 status 

8.3 软件包问题

解决软件包相关问题的方法:

# 检查已安装的软件包 ls /var/log/packages # 检查软件包依赖 ldd /usr/bin/command # 重新安装软件包 upgradepkg --reinstall package-name.txz # 清理损坏的软件包数据库 rm /var/lib/pkgtools/packages/* for package in /var/log/packages/*; do installpkg --warn $package done 

8.4 系统性能问题

诊断和解决系统性能问题:

# 检查系统负载 uptime top htop # 检查内存使用 free -m # 检查磁盘使用 df -h du -sh /path/to/directory # 检查磁盘I/O iostat -x 1 10 # 检查网络连接 netstat -an ss -tuln # 检查系统日志 tail -f /var/log/messages tail -f /var/log/syslog 

8.5 系统备份与恢复

创建系统备份和恢复方法:

# 使用rsync创建完整备份 rsync -aAXv / --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /path/to/backup/ # 使用tar创建备份 tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys / # 使用dd创建磁盘镜像 dd if=/dev/sda of=/path/to/disk_image.img bs=4M status=progress # 从备份恢复系统 # 首先安装基本系统 # 然后恢复备份 tar -xvpzf backup.tar.gz -C / 

9. 实用技巧与最佳实践

本节提供一些使用Slackware的实用技巧和最佳实践,帮助用户更高效地管理系统。

9.1 系统更新最佳实践

保持Slackware系统更新的最佳方法:

# 定期更新软件包列表 slackpkg update # 查看可用更新 slackpkg update-all # 不要选择"OK",只查看更新列表 # 分批更新软件包 # 首先更新系统库 slackpkg install glibc-solibs gcc-g++ # 然后更新其他软件包 slackpkg upgrade-all # 备份重要配置文件 cp /etc/lilo.conf /etc/lilo.conf.bak cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak # 更新后检查系统状态 lilo -v 

9.2 自定义软件包构建

使用SlackBuilds构建自定义软件包:

# 下载SlackBuild脚本 wget http://slackbuilds.org/slackbuilds/14.2/development/package-name.tar.gz tar -xvf package-name.tar.gz cd package-name # 下载源代码 wget SOURCE_URL # 构建软件包 ./package-name.SlackBuild # 安装软件包 installpkg /tmp/package-name-version-arch.txz 

9.3 系统清理与维护

定期清理和维护系统:

# 清理旧日志 find /var/log -type f -name "*.gz" -delete find /var/log -type f -name "*.old" -delete # 清理临时文件 rm -rf /tmp/* rm -rf /var/tmp/* # 清理未使用的软件包 ls /var/log/packages | cut -d "-" -f1 | sort -u > /tmp/installed-packages ls /var/log/removed_packages | cut -d "-" -f1 | sort -u > /tmp/removed-packages comm -12 /tmp/installed-packages /tmp/removed-packages > /tmp/orphaned-packages for package in $(cat /tmp/orphaned-packages); do removepkg $package done # 清理下载的软件包 rm -f /var/cache/packages/*.txz 

9.4 性能监控与调优

使用各种工具监控系统性能并进行调优:

# 安装监控工具 slackpkg install htop sysstat nmon iotop # 使用htop监控系统资源 htop # 使用sysstat收集系统性能数据 # 启用sysstat chmod +x /etc/rc.d/rc.sysstat # 生成系统性能报告 sar -u 1 10 sar -r 1 10 sar -b 1 10 # 使用nmon监控系统 nmon # 使用iotop监控磁盘I/O iotop 

9.5 自动化任务

使用cron和shell脚本自动化系统任务:

# 编辑crontab crontab -e # 添加定时任务 # 每天凌晨3点更新系统 0 3 * * * /usr/sbin/slackpkg update && /usr/sbin/slackpkg upgrade-all # 每周日凌晨4点清理日志 0 4 * * 0 find /var/log -type f -name "*.gz" -delete # 每小时检查磁盘空间 0 * * * * df -h | mail -s "Disk Usage Report" admin@example.com # 创建自定义维护脚本 cat > /usr/local/bin/system-maintenance << EOF #!/bin/bash # 系统维护脚本 echo "Starting system maintenance at $(date)" # 更新软件包列表 /usr/sbin/slackpkg update # 清理旧日志 find /var/log -type f -name "*.gz" -delete # 检查磁盘空间 df -h echo "System maintenance completed at $(date)" EOF chmod +x /usr/local/bin/system-maintenance 

结论

Slackware Linux作为最古老的Linux发行版之一,凭借其简洁性、稳定性和传统Unix风格的设计理念,为用户提供了一个强大而灵活的操作系统。通过本手册的学习,您应该已经掌握了从安装到高级配置的各个方面,能够充分利用Slackware的潜力。

Slackware的学习曲线可能比一些其他发行版陡峭,但它提供的深度控制和系统知识是值得的。随着您对Slackware的深入了解,您将能够构建一个完全符合您需求的定制系统,无论是作为桌面工作站还是服务器。

记住,Slackware社区是一个宝贵的资源,当您遇到问题时,不要犹豫,寻求社区的帮助。通过不断学习和实践,您将成为一名真正的Slackware专家。