简体中文 繁體中文 English Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français Japanese

站内搜索

搜索

活动公告

通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,将及时处理!
10-23 09:31

探索Slackware Linux系统官方文档与实用资料指南从基础安装到高级配置全面掌握最古老Linux发行版的核心技术与使用技巧

SunJu_FaceMall

3万

主题

238

科技点

3万

积分

大区版主

碾压王

积分
32126

立华奏

发表于 2025-10-4 16:20:00 | 显示全部楼层 |阅读模式 [标记阅至此楼]

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

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

x
1. Slackware Linux简介与历史

Slackware Linux是由Patrick Volkerding于1993年创建的Linux发行版,它是现存最古老的Linux发行版,被誉为”真正的Unix”风格Linux。Slackware的设计哲学是保持简洁、稳定和Unix-like,尽可能减少对系统组件的修改,使用户能够体验到最接近原始Linux内核和GNU工具集的环境。

1.1 Slackware的起源与发展

Slackware的诞生可以追溯到1993年初,当时Patrick Volkerding还是一位Moorpark学院的学生。他最初只是想对SLS(Softlanding Linux System)发行版进行一些修复和改进,但最终演变成了一个全新的发行版——Slackware。名称来源于”Church of the SubGenius”中的”Slack”概念,意为简单、轻松的状态。

1.2 设计哲学与特点

Slackware的设计哲学包括:

• 简洁性:系统尽可能保持简单,不添加不必要的配置层或工具。
• 稳定性:优先考虑稳定性和可靠性,而非追求最新功能。
• Unix-like:遵循传统Unix系统的设计原则和行为模式。
• KISS原则:Keep It Simple, Stupid,避免过度复杂化。

这些特点使Slackware成为学习Linux系统内部工作原理的理想平台,也是需要稳定、可预测服务器的系统管理员的首选。

1.3 版本历史

Slackware的版本发布相对保守,以下是几个重要的里程碑:

• Slackware 1.0(1993年7月):首个正式版本
• Slackware 3.0(1995年):引入glibc替代libc
• Slackware 7.0(1999年):引入GLIBC 2.1和Linux 2.2内核
• Slackware 8.0(2001年):引入Linux 2.4内核
• Slackware 10.0(2004年):引入X.org取代XFree86
• Slackware 12.0(2007年):引入HAL和现代桌面环境
• Slackware 13.0(2009年):引入64位版本
• Slackware 14.0(2012年):引入systemd的替代方案
• Slackware 15.0(2021年):最新稳定版本,支持Python 3.9和KDE Plasma 5

1.4 适合的用户群体

Slackware特别适合以下用户:

• 希望深入了解Linux系统内部工作原理的用户
• 需要稳定、可预测服务器环境的管理员
• 喜欢手动配置和定制系统的爱好者
• 希望学习Unix系统管理技能的学生和专业人士

2. 基础安装指南

2.1 系统要求

Slackware Linux对硬件的要求相对较低,适合在多种计算机上运行:

• 处理器:任何x86、x86_64或ARM架构的处理器
• 内存:至少512MB RAM(推荐2GB以上)
• 存储空间:至少10GB可用空间(完整安装需要约20GB)
• 其他:DVD驱动器或USB端口用于安装介质

2.2 获取Slackware安装镜像

Slackware的官方镜像可以从以下网站获取:

• 官方网站:https://www.slackware.com/
• 镜像站点:https://www.slackware.com/getslack/

Slackware提供两种版本:

1. 稳定版:当前为15.0,适合生产环境
2. 开发版:称为-current,适合测试和开发

对于大多数用户,建议下载稳定版。Slackware提供了完整的DVD镜像和较小的网络安装镜像。

2.3 创建启动介质

创建Slackware启动介质的方法:
  1. # 确定USB设备名称(如/dev/sdb)
  2. $ lsblk
  3. # 卸载USB设备(如果已挂载)
  4. $ umount /dev/sdb*
  5. # 将ISO镜像写入USB设备
  6. $ dd if=slackware64-15.0-install-dvd.iso of=/dev/sdb bs=4M status=progress
  7. $ sync
复制代码

可以使用工具如Rufus或balenaEtcher来创建启动USB。

2.4 安装过程详解

Slackware的安装过程基于文本界面,虽然看起来简单,但提供了强大的控制能力。

从创建的启动介质启动计算机,在引导菜单中选择安装选项。对于大多数现代计算机,选择”Boot Slackware Linux (huge kernel)“。

安装程序会首先询问键盘映射。大多数用户可以直接选择默认的US键盘映射。

Slackware使用fdisk或cfdisk进行分区。以下是一个推荐的分区方案:
  1. /dev/sda1    /boot    500MB    ext4
  2. /dev/sda2    swap     2xRAM    swap
  3. /dev/sda3    /        剩余空间  ext4
复制代码

使用cfdisk进行分区的步骤:
  1. # 启动cfdisk
  2. $ cfdisk /dev/sda
  3. # 创建分区
  4. # 1. 选择New -> Primary -> 输入大小 -> 选择Bootable
  5. # 2. 选择New -> Primary -> 输入大小 -> 选择Type -> 82 Linux swap
  6. # 3. 选择New -> Primary -> 使用剩余空间
  7. # 4. 选择Write -> 输入yes
  8. # 5. 选择Quit
复制代码

接下来,安装程序会要求为每个分区创建文件系统并设置挂载点:
  1. # 格式化分区
  2. $ mkfs.ext4 /dev/sda1
  3. $ mkfs.ext4 /dev/sda3
  4. $ mkswap /dev/sda2
  5. $ swapon /dev/sda2
  6. # 挂载分区
  7. $ mount /dev/sda3 /mnt
  8. $ mkdir /mnt/boot
  9. $ mount /dev/sda1 /mnt/boot
复制代码

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 System
• XAP系列:X应用程序
• XFCE:Xfce桌面环境

对于新手,建议选择完整安装,以确保所有必要的软件包都被安装。

安装程序会询问是否配置网络。如果选择是,需要提供以下信息:

• 主机名
• 域名
• IP地址(静态或DHCP)
• 网关地址
• DNS服务器地址

Slackware使用LILO或ELILO作为引导程序。安装程序会询问是否安装引导程序,以及安装位置(MBR或分区)。
  1. # LILO配置示例
  2. lba32
  3. boot = /dev/sda
  4. root = /dev/sda3
  5. image = /boot/vmlinuz
  6.   label = Slackware
  7.   read-only
复制代码

安装完成后,系统会提示移除安装介质并重新启动。首次启动后,需要完成一些基本配置:
  1. # 设置root密码
  2. $ passwd
  3. # 创建普通用户
  4. $ adduser
  5. # 配置网络(如果安装时未配置)
  6. $ netconfig
  7. # 配置X Window System
  8. $ xorgsetup
复制代码

3. 系统配置与基础使用

3.1 基本系统配置文件

Slackware使用纯文本配置文件,这些文件通常位于/etc目录下。以下是一些重要的配置文件:

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

例如,配置静态IP地址:
  1. # 编辑 /etc/rc.d/rc.inet1.conf
  2. IPADDR[0]="192.168.1.100"
  3. NETMASK[0]="255.255.255.0"
  4. USE_DHCP[0]=""
  5. DHCP_HOSTNAME[0]=""
复制代码

• /etc/rc.d/rc.S:系统启动脚本
• /etc/rc.d/rc.M:多用户模式启动脚本
• /etc/rc.d/rc.local:本地启动脚本
• /etc/inittab:系统初始化配置

• /etc/passwd:用户账户信息
• /etc/shadow:用户密码信息
• /etc/group:组信息
• /etc/sudoers:sudo配置

3.2 用户和组管理

Slackware提供了标准的Unix工具来管理用户和组:
  1. # 添加新用户
  2. $ adduser
  3. # 修改用户属性
  4. $ usermod -a -G audio,video username
  5. # 删除用户
  6. $ userdel -r username
  7. # 添加新组
  8. $ groupadd groupname
  9. # 删除组
  10. $ groupdel groupname
  11. # 修改密码
  12. $ passwd username
复制代码

3.3 网络配置

Slackware提供了多种方式来配置网络:

netconfig是一个简单的网络配置工具:
  1. $ netconfig
复制代码

它会引导用户完成基本网络配置,包括IP地址、子网掩码、网关和DNS服务器。

编辑/etc/rc.d/rc.inet1.conf文件:
  1. # 配置eth0为静态IP
  2. IPADDR[0]="192.168.1.100"
  3. NETMASK[0]="255.255.255.0"
  4. USE_DHCP[0]=""
  5. # 配置eth1为DHCP
  6. IPADDR[1]=""
  7. NETMASK[1]=""
  8. USE_DHCP[1]="yes"
复制代码

然后重启网络服务:
  1. $ /etc/rc.d/rc.inet1 restart
复制代码

对于无线网络,可以使用wpa_supplicant:
  1. # 安装wpa_supplicant
  2. $ installpkg wpa_supplicant-2.9-x86_64-1.txz
  3. # 创建配置文件
  4. $ wpa_passphrase "SSID" "password" > /etc/wpa_supplicant.conf
  5. # 启动wpa_supplicant
  6. $ wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
  7. # 获取IP地址
  8. $ dhcpcd wlan0
复制代码

3.4 图形界面设置

Slackware支持多种桌面环境,包括KDE Plasma、Xfce、LXQt等。

Slackware提供了xorgsetup工具来配置X Window System:
  1. $ xorgsetup
复制代码

这个工具会检测硬件并生成/etc/X11/xorg.conf配置文件。

Slackware默认启动到命令行界面。要启动图形界面,可以使用:
  1. $ startx
复制代码

要设置系统默认启动到图形界面,编辑/etc/inittab文件:
  1. # 将默认运行级别从3改为4
  2. id:4:initdefault:
复制代码

Slackware允许用户选择默认的桌面环境。编辑/etc/X11/xinit/xinitrc文件:
  1. # 使用KDE Plasma
  2. exec startkde
  3. # 使用Xfce
  4. exec startxfce4
  5. # 使用LXQt
  6. exec startlxqt
复制代码

3.5 声音和打印机配置

Slackware使用ALSA(Advanced Linux Sound Architecture)来管理音频设备:
  1. # 检测音频设备
  2. $ alsaconf
  3. # 调整音量
  4. $ alsamixer
  5. # 保存音量设置
  6. $ alsactl store
复制代码

Slackware使用CUPS(Common Unix Printing System)来管理打印机:
  1. # 启动CUPS服务
  2. $ /etc/rc.d/rc.cups start
  3. # 设置CUPS开机自启
  4. $ chmod +x /etc/rc.d/rc.cups
  5. # 访问CUPS Web界面
  6. $ firefox http://localhost:631
复制代码

3.6 常用系统管理命令

以下是一些常用的系统管理命令:
  1. # 查看系统信息
  2. $ uname -a
  3. $ lsb_release -a
  4. $ dmesg
  5. # 查看硬件信息
  6. $ lspci
  7. $ lsusb
  8. $ lscpu
  9. # 查看内存使用情况
  10. $ free -h
  11. $ top
  12. $ htop
  13. # 查看磁盘使用情况
  14. $ df -h
  15. $ du -sh /path/to/directory
  16. # 查看网络连接
  17. $ netstat -tuln
  18. $ ss -tuln
  19. # 管理服务
  20. $ /etc/rc.d/rc.service_name start
  21. $ /etc/rc.d/rc.service_name stop
  22. $ /etc/rc.d/rc.service_name restart
复制代码

4. 软件管理

4.1 Slackware的软件包格式

Slackware使用简单的压缩tar包作为软件包格式,扩展名为.txz(xz压缩)或.tgz(gzip压缩)。每个软件包包含:

• 软件文件
• 安装脚本(install/doinst.sh)
• 软件包描述(install/slack-desc)
• 软件包元数据(install/slack-required)

4.2 使用pkgtools进行软件管理

Slackware提供了一套名为pkgtools的工具来管理软件包:

installpkg用于安装软件包:
  1. # 安装软件包
  2. $ installpkg package.txz
  3. # 安装软件包到指定目录
  4. $ installpkg -root /path/to/root package.txz
  5. # 安装软件包但不执行安装脚本
  6. $ installpkg -warn package.txz
  7. # 安装软件包并显示详细信息
  8. $ installpkg -verbose package.txz
复制代码

removepkg用于删除软件包:
  1. # 删除软件包
  2. $ removepkg packagename
  3. # 删除软件包但不执行删除脚本
  4. $ removepkg -warn packagename
  5. # 删除软件包并显示详细信息
  6. $ removepkg -verbose packagename
  7. # 保留配置文件
  8. $ removepkg -preserve packagename
复制代码

upgradepkg用于升级软件包:
  1. # 升级软件包
  2. $ upgradepkg package.txz
  3. # 升级软件包并安装新文件
  4. $ upgradepkg --install-new package.txz
  5. # 升级软件包但不执行安装脚本
  6. $ upgradepkg --reinstall package.txz
复制代码

pkgtool是一个交互式工具,用于管理软件包:
  1. # 启动pkgtool
  2. $ pkgtool
复制代码

pkgtool提供了一个菜单界面,可以安装、删除和查看软件包。

4.3 第三方软件源

除了官方软件源,Slackware用户还可以使用第三方软件源来获取更多软件:

SlackBuilds.org是一个社区项目,提供了从源码构建Slackware软件包的脚本:
  1. # 下载SlackBuild脚本
  2. $ wget https://slackbuilds.org/slackbuilds/15.0/development/git/git.tar.gz
  3. $ tar -xvf git.tar.gz
  4. $ cd git
  5. # 下载源码
  6. $ wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.34.1.tar.xz
  7. # 构建软件包
  8. $ ./git.SlackBuild
  9. # 安装软件包
  10. $ installpkg /tmp/git-2.34.1-x86_64-1_SBo.txz
复制代码

sbopkg是一个工具,可以简化从SlackBuilds.org安装软件的过程:
  1. # 安装sbopkg
  2. $ installpkg sbopkg-0.38.1-noarch-1_SBo.txz
  3. # 启动sbopkg
  4. $ sbopkg
  5. # 同步SlackBuilds仓库
  6. $ sbopkg -r
  7. # 搜索软件包
  8. $ sbopkg -s "package name"
  9. # 安装软件包及其依赖
  10. $ sbopkg -i "package name"
复制代码

还有一些其他第三方仓库提供预编译的Slackware软件包:

• Alien Bob’s repository:https://slackware.com/~alien/slackbuilds/
• Slackonly:https://slackonly.com/
• MSB Project:https://www.microlinux.fr/msb/

4.4 从源码编译安装软件

除了使用预编译的软件包,Slackware用户还可以从源码编译安装软件:
  1. # 解压源码
  2. $ tar -xvf package.tar.gz
  3. $ cd package
  4. # 配置编译选项
  5. $ ./configure --prefix=/usr --sysconfdir=/etc
  6. # 编译
  7. $ make
  8. # 安装
  9. $ make install
复制代码

为了创建Slackware软件包,可以使用makepkg:
  1. # 创建临时安装目录
  2. $ mkdir /tmp/package-name
  3. $ make install DESTDIR=/tmp/package-name
  4. # 创建软件包
  5. $ cd /tmp/package-name
  6. $ makepkg -l y -c n /tmp/package-name.txz
  7. # 安装软件包
  8. $ installpkg /tmp/package-name.txz
复制代码

5. 系统维护与优化

5.1 系统更新与安全补丁

Slackware提供了安全补丁和更新,可以通过以下方式获取:

slackpkg是一个官方工具,用于管理Slackware软件包和更新:
  1. # 安装slackpkg
  2. $ installpkg slackpkg-15.0-noarch-3.txz
  3. # 配置镜像源
  4. $ nano /etc/slackpkg/mirrors
  5. # 取消注释一个镜像源,例如:
  6. # http://mirrors.slackware.com/slackware/slackware64-15.0/
  7. # 更新软件包列表
  8. $ slackpkg update
  9. # 升级所有软件包
  10. $ slackpkg upgrade-all
  11. # 安装新软件包
  12. $ slackpkg install package-name
  13. # 删除软件包
  14. $ slackpkg remove package-name
  15. # 搜索软件包
  16. $ slackpkg search package-name
复制代码

也可以手动下载和安装更新:
  1. # 创建更新目录
  2. $ mkdir /tmp/slackware-updates
  3. $ cd /tmp/slackware-updates
  4. # 下载更新
  5. $ wget -r -l1 -np -nd http://mirrors.slackware.com/slackware/slackware64-15.0/patches/packages/
  6. # 安装更新
  7. $ upgradepkg *.txz
复制代码

5.2 日志管理

Slackware使用传统的syslogd来管理系统日志:

• /var/log/messages:系统消息
• /var/log/syslog:系统日志
• /var/log/auth.log:认证日志
• /var/log/kern.log:内核日志
• /var/log/maillog:邮件日志
• /var/log/cron:定时任务日志

Slackware使用logrotate来管理日志轮转:
  1. # 配置logrotate
  2. $ nano /etc/logrotate.conf
  3. # 手动触发日志轮转
  4. $ logrotate -f /etc/logrotate.conf
复制代码
  1. # 查看最新日志
  2. $ tail -f /var/log/messages
  3. # 搜索特定关键词
  4. $ grep "keyword" /var/log/messages
  5. # 查看特定时间范围的日志
  6. $ journalctl --since "2023-01-01" --until "2023-01-02"
复制代码

5.3 性能监控与优化
  1. # 查看系统负载
  2. $ uptime
  3. $ top
  4. $ htop
  5. # 查看内存使用情况
  6. $ free -h
  7. $ vmstat
  8. # 查看磁盘I/O
  9. $ iostat
  10. $ iotop
  11. # 查看网络使用情况
  12. $ iftop
  13. $ nethogs
  14. # 查看进程树
  15. $ pstree
复制代码
  1. # 调整内核参数
  2. $ nano /etc/sysctl.conf
  3. # 示例配置
  4. # 增加文件描述符限制
  5. fs.file-max = 100000
  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. # 应用配置
  12. $ sysctl -p
  13. # 调整用户限制
  14. $ nano /etc/security/limits.conf
  15. # 示例配置
  16. # 增加用户文件描述符限制
  17. * soft nofile 65536
  18. * hard nofile 65536
复制代码
  1. # 禁用不必要的服务
  2. $ chmod -x /etc/rc.d/rc.bluetooth
  3. $ chmod -x /etc/rc.d/rc.cups
  4. $ chmod -x /etc/rc.d/rc.sshd
  5. # 启用必要的服务
  6. $ chmod +x /etc/rc.d/rc.networkmanager
  7. $ chmod +x /etc/rc.d/rc.httpd
复制代码

5.4 备份与恢复策略
  1. # 创建备份脚本
  2. $ nano /usr/local/bin/backup.sh
  3. #!/bin/bash
  4. # 定义源目录和目标目录
  5. SOURCE="/"
  6. DEST="/mnt/backup"
  7. # 执行备份
  8. rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} $SOURCE $DEST
  9. # 设置执行权限
  10. $ chmod +x /usr/local/bin/backup.sh
  11. # 添加到cron定时任务
  12. $ crontab -e
  13. # 每天凌晨2点执行备份
  14. 0 2 * * * /usr/local/bin/backup.sh
复制代码
  1. # 创建完整备份
  2. $ tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys /
  3. # 从备份恢复
  4. $ tar -xvpzf backup.tar.gz -C /
复制代码
  1. # 使用dd克隆整个磁盘
  2. $ dd if=/dev/sda of=/dev/sdb bs=4M status=progress
  3. # 使用Clonezilla进行备份
  4. $ clonezilla
复制代码

5.5 系统服务管理

Slackware使用传统的SysV init系统来管理服务:

服务脚本位于/etc/rc.d/目录下,以rc.开头:
  1. # 列出所有服务脚本
  2. $ ls -l /etc/rc.d/rc.*
复制代码
  1. # 启动服务
  2. $ /etc/rc.d/rc.httpd start
  3. # 停止服务
  4. $ /etc/rc.d/rc.httpd stop
  5. # 重启服务
  6. $ /etc/rc.d/rc.httpd restart
  7. # 查看服务状态
  8. $ /etc/rc.d/rc.httpd status
复制代码
  1. # 设置服务开机自启
  2. $ chmod +x /etc/rc.d/rc.httpd
  3. # 禁止服务开机自启
  4. $ chmod -x /etc/rc.d/rc.httpd
复制代码

创建自定义服务脚本示例:
  1. # 创建服务脚本
  2. $ nano /etc/rc.d/rc.myservice
  3. #!/bin/sh
  4. # /etc/rc.d/rc.myservice
  5. # 启动服务
  6. myservice_start() {
  7.   echo "Starting My Service..."
  8.   /usr/local/bin/myservice -d
  9. }
  10. # 停止服务
  11. myservice_stop() {
  12.   echo "Stopping My Service..."
  13.   killall myservice
  14. }
  15. # 重启服务
  16. myservice_restart() {
  17.   myservice_stop
  18.   sleep 1
  19.   myservice_start
  20. }
  21. # 根据参数执行相应操作
  22. case "$1" in
  23. 'start')
  24.   myservice_start
  25.   ;;
  26. 'stop')
  27.   myservice_stop
  28.   ;;
  29. 'restart')
  30.   myservice_restart
  31.   ;;
  32. *)
  33.   echo "Usage: $0 {start|stop|restart}"
  34.   exit 1
  35.   ;;
  36. esac
  37. # 设置执行权限
  38. $ chmod +x /etc/rc.d/rc.myservice
复制代码

6. 高级配置与定制

6.1 内核编译与定制

Slackware提供了两种类型的内核:huge kernel和generic kernel。Huge kernel包含所有必要的驱动,适合大多数硬件;generic kernel更小,需要initrd来加载必要的模块。
  1. # 安装必要的工具
  2. $ slackpkg install kernel-source kernel-headers gcc make ncurses
  3. # 切换到源码目录
  4. $ cd /usr/src/linux
复制代码
  1. # 复制当前配置
  2. $ cp /boot/config-generic-$(uname -r) .config
  3. # 或者使用make oldconfig使用现有配置
  4. $ make oldconfig
  5. # 或者使用menuconfig进行图形化配置
  6. $ make menuconfig
复制代码
  1. # 清理源码树
  2. $ make clean
  3. # 编译内核和模块
  4. $ make -j$(nproc)
  5. # 安装模块
  6. $ make modules_install
  7. # 安装内核
  8. $ cp arch/x86/boot/bzImage /boot/vmlinuz-custom
  9. $ cp System.map /boot/System.map-custom
  10. $ cp .config /boot/config-custom
  11. # 创建initrd(对于generic kernel)
  12. $ /usr/share/mkinitrd/mkinitrd_command_generator.sh -k $(uname -r) | bash
复制代码

编辑/etc/lilo.conf:
  1. # 添加新内核条目
  2. image = /boot/vmlinuz-custom
  3.   root = /dev/sda3
  4.   label = Custom
  5.   read-only
复制代码

然后运行:
  1. $ lilo
复制代码

6.2 系统启动流程与自定义

Slackware使用传统的SysV init系统,了解启动流程有助于自定义系统行为。

1. BIOS/UEFI初始化硬件
2. 引导加载程序(LILO/GRUB)加载内核
3. 内核初始化并挂载根文件系统
4. 执行/sbin/init,启动init系统
5. 执行/etc/rc.d/rc.S,执行系统初始化脚本
6. 执行/etc/rc.d/rc.M,执行多用户模式脚本
7. 执行/etc/rc.d/rc.local,执行本地自定义脚本

编辑/etc/rc.d/rc.local:
  1. #!/bin/sh
  2. # /etc/rc.d/rc.local
  3. # 自定义启动命令
  4. echo "Starting custom services..."
  5. # 启动自定义服务
  6. if [ -x /etc/rc.d/rc.myservice ]; then
  7.   /etc/rc.d/rc.myservice start
  8. fi
  9. # 设置系统参数
  10. echo "1024" > /proc/sys/vm/swappiness
  11. # 加载内核模块
  12. modprobe vboxdrv
复制代码

确保脚本有执行权限:
  1. $ chmod +x /etc/rc.d/rc.local
复制代码

Slackware使用传统的运行级别:

• 0:关机
• 1:单用户模式
• 2:多用户模式(无NFS)
• 3:完整多用户模式
• 4:X11模式(默认)
• 5:未使用
• 6:重启

编辑/etc/inittab来修改默认运行级别:
  1. # 设置默认运行级别为3(命令行)
  2. id:3:initdefault:
复制代码

6.3 创建自定义软件包

创建自定义Slackware软件包是分享软件或保持系统一致性的好方法。

创建一个简单的SlackBuild脚本示例:
  1. #!/bin/sh
  2. # Slackware build script for <package>
  3. # 作者信息
  4. PRGNAM=<package>
  5. VERSION=<version>
  6. BUILD=${BUILD:-1}
  7. TAG=${TAG:-_SBo}
  8. # 系统信息
  9. if [ -z "$ARCH" ]; then
  10.   case "$( uname -m )" in
  11.     i?86) ARCH=i586 ;;
  12.     arm*) ARCH=arm ;;
  13.        *) ARCH=$( uname -m ) ;;
  14.   esac
  15. fi
  16. # 设置工作目录
  17. CWD=$(pwd)
  18. TMP=${TMP:-/tmp/SBo}
  19. PKG=$TMP/package-$PRGNAM
  20. OUTPUT=${OUTPUT:-/tmp}
  21. # 检查是否已存在
  22. if [ "$ARCH" = "i586" ]; then
  23.   SLKCFLAGS="-O2 -march=i586 -mtune=i686"
  24.   LIBDIRSUFFIX=""
  25. elif [ "$ARCH" = "i686" ]; then
  26.   SLKCFLAGS="-O2 -march=i686 -mtune=i686"
  27.   LIBDIRSUFFIX=""
  28. elif [ "$ARCH" = "x86_64" ]; then
  29.   SLKCFLAGS="-O2 -fPIC"
  30.   LIBDIRSUFFIX="64"
  31. else
  32.   SLKCFLAGS="-O2"
  33.   LIBDIRSUFFIX=""
  34. fi
  35. # 设置退出时清理
  36. set -e
  37. # 清理并创建目录
  38. rm -rf $PKG
  39. mkdir -p $TMP $PKG $OUTPUT
  40. cd $TMP
  41. rm -rf $PRGNAM-$VERSION
  42. tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
  43. cd $PRGNAM-$VERSION
  44. # 应用补丁
  45. patch -p1 < $CWD/patches/some.patch
  46. # 配置和编译
  47. chown -R root:root .
  48. find -L . \
  49. \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
  50.   -o -perm 511 \) -exec chmod 755 {} \; -o \
  51. \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
  52.   -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
  53. CFLAGS="$SLKCFLAGS" \
  54. CXXFLAGS="$SLKCFLAGS" \
  55. ./configure \
  56.   --prefix=/usr \
  57.   --libdir=/usr/lib${LIBDIRSUFFIX} \
  58.   --sysconfdir=/etc \
  59.   --localstatedir=/var \
  60.   --mandir=/usr/man \
  61.   --docdir=/usr/doc/$PRGNAM-$VERSION \
  62.   --build=$ARCH-slackware-linux
  63. make
  64. make install DESTDIR=$PKG
  65. # 创建文档目录
  66. mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
  67. cp -a \
  68.   AUTHORS COPYING ChangeLog INSTALL NEWS README \
  69.   $PKG/usr/doc/$PRGNAM-$VERSION
  70. cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
  71. # 创建描述文件
  72. mkdir -p $PKG/install
  73. cat $CWD/slack-desc > $PKG/install/slack-desc
  74. # 创建安装脚本(如果需要)
  75. cat $CWD/doinst.sh > $PKG/install/doinst.sh
  76. # 创建软件包
  77. cd $PKG
  78. /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
复制代码

创建slack-desc文件:
  1. # HOW TO EDIT THIS FILE:
  2. # The "handy ruler" below makes it easier to edit a package description.
  3. # Line up the first '|' above the ':' following the base package name, and
  4. # the '|' on the right side marks the last column you can put a character in.
  5. # You must make exactly 11 lines for the formatting to be correct.  It's also
  6. # customary to leave one space after the ':' except on otherwise blank lines.
  7.       |-----handy-ruler------------------------------------------------------|
  8. package: package (short description of package)
  9. package:
  10. package: Long description of package.
  11. package: This should be several lines long, and describe the package
  12. package: in detail. It should not exceed the width of the handy ruler.
  13. package:
  14. package:
  15. package:
  16. package:
  17. package:
  18. package:
  19. package:
复制代码

创建doinst.sh文件(如果需要):
  1. #!/bin/sh
  2. # 安装后执行的脚本
  3. # 更新共享库缓存
  4. if [ -x /sbin/ldconfig ]; then
  5.   /sbin/ldconfig
  6. fi
  7. # 更新桌面数据库
  8. if [ -x /usr/bin/update-desktop-database ]; then
  9.   /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
  10. fi
  11. # 更新图标缓存
  12. if [ -x /usr/bin/gtk-update-icon-cache ]; then
  13.   /usr/bin/gtk-update-icon-cache -q -f -t usr/share/icons/hicolor >/dev/null 2>&1
  14. fi
  15. # 创建符号链接
  16. ( cd usr/bin ; rm -rf program )
  17. ( cd usr/bin ; ln -sf program-real program )
复制代码

6.4 系统安全加固
  1. # 禁用root远程登录
  2. $ nano /etc/ssh/sshd_config
  3. PermitRootLogin no
  4. # 限制su命令
  5. $ nano /etc/pam.d/su
  6. auth required pam_wheel.so use_uid
  7. # 创建受限用户
  8. $ adduser -s /bin/false -d /home/restricted restricted
复制代码
  1. # 配置防火墙
  2. $ nano /etc/rc.d/rc.firewall
  3. #!/bin/sh
  4. # 简单的防火墙脚本
  5. # 清除现有规则
  6. iptables -F
  7. iptables -X
  8. iptables -t nat -F
  9. iptables -t nat -X
  10. iptables -t mangle -F
  11. iptables -t mangle -X
  12. # 设置默认策略
  13. iptables -P INPUT DROP
  14. iptables -P FORWARD DROP
  15. iptables -P OUTPUT ACCEPT
  16. # 允许本地回环
  17. iptables -A INPUT -i lo -j ACCEPT
  18. # 允许已建立的连接
  19. iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  20. # 允许SSH
  21. iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  22. # 允许HTTP和HTTPS
  23. iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  24. iptables -A INPUT -p tcp --dport 443 -j ACCEPT
  25. # 保存规则
  26. iptables-save > /etc/iptables.rules
  27. # 设置执行权限
  28. $ chmod +x /etc/rc.d/rc.firewall
  29. # 添加到启动脚本
  30. $ echo "/etc/rc.d/rc.firewall" >> /etc/rc.d/rc.local
复制代码
  1. # 安装安全工具
  2. $ slackpkg install rkhunter chkrootkit fail2ban
  3. # 配置rkhunter
  4. $ nano /etc/rkhunter.conf
  5. # 更新rkhunter数据库
  6. $ rkhunter --update
  7. $ rkhunter --propupd
  8. # 运行系统检查
  9. $ rkhunter -c
  10. # 配置fail2ban
  11. $ cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  12. $ nano /etc/fail2ban/jail.local
  13. # 启动fail2ban
  14. $ chmod +x /etc/rc.d/rc.fail2ban
  15. $ /etc/rc.d/rc.fail2ban start
复制代码

6.5 服务器配置
  1. # 安装Apache
  2. $ slackpkg install httpd php
  3. # 配置Apache
  4. $ nano /etc/httpd/httpd.conf
  5. # 启动Apache
  6. $ chmod +x /etc/rc.d/rc.httpd
  7. $ /etc/rc.d/rc.httpd start
  8. # 测试Apache
  9. $ echo "<html><body><h1>It works!</h1></body></html>" > /var/www/htdocs/index.html
  10. $ firefox http://localhost
复制代码
  1. # 安装vsftpd
  2. $ slackpkg install vsftpd
  3. # 配置vsftpd
  4. $ nano /etc/vsftpd.conf
  5. # 示例配置
  6. anonymous_enable=NO
  7. local_enable=YES
  8. write_enable=YES
  9. chroot_local_user=YES
  10. allow_writeable_chroot=YES
  11. # 启动vsftpd
  12. $ chmod +x /etc/rc.d/rc.vsftpd
  13. $ /etc/rc.d/rc.vsftpd start
复制代码
  1. # 安装Postfix
  2. $ slackpkg install postfix
  3. # 配置Postfix
  4. $ nano /etc/postfix/main.cf
  5. # 示例配置
  6. myhostname = mail.example.com
  7. mydomain = example.com
  8. myorigin = $mydomain
  9. inet_interfaces = all
  10. mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
  11. mynetworks = 127.0.0.0/8, 192.168.1.0/24
  12. home_mailbox = Maildir/
  13. # 启动Postfix
  14. $ chmod +x /etc/rc.d/rc.postfix
  15. $ /etc/rc.d/rc.postfix start
复制代码

7. 故障排除与常见问题

7.1 启动问题及解决

如果系统无法启动到图形界面,首先检查X Window System的配置:
  1. # 检查Xorg日志
  2. $ less /var/log/Xorg.0.log
  3. # 重新配置Xorg
  4. $ Xorg -configure
  5. $ mv /root/xorg.conf.new /etc/X11/xorg.conf
  6. # 测试Xorg
  7. $ startx
复制代码

如果问题仍然存在,尝试使用更通用的驱动:
  1. # 编辑xorg.conf
  2. $ nano /etc/X11/xorg.conf
  3. # 使用vesa驱动
  4. Section "Device"
  5.     Identifier "Card0"
  6.     Driver "vesa"
  7. EndSection
复制代码

内核恐慌(Kernel Panic)通常是由于硬件问题或驱动冲突引起的:
  1. # 查看系统日志
  2. $ dmesg | less
  3. # 检查硬件问题
  4. $ memtest86+
  5. # 尝试使用不同的内核参数
  6. # 编辑/etc/lilo.conf,添加以下参数:
  7. append="acpi=off noapic"
  8. # 更新LILO
  9. $ lilo
复制代码

文件系统错误可能导致系统无法启动:
  1. # 使用救援模式启动系统
  2. # 检查文件系统
  3. $ fsck /dev/sda1
  4. # 如果文件系统损坏严重,尝试
  5. $ fsck -y /dev/sda1
复制代码

7.2 软件包依赖问题

Slackware不自动处理软件包依赖,因此可能会遇到依赖问题:
  1. # 查找缺失的库
  2. $ ldd /usr/bin/program
  3. # 搜索提供库的软件包
  4. $ find /var/log/packages -name "*" -exec grep -l "libname.so" {} \;
复制代码
  1. # 使用sbopkg安装软件及其依赖
  2. $ sbopkg -i "package name"
  3. # 查看依赖关系
  4. $ sbopkg -d "package name"
复制代码
  1. # 下载并安装缺失的依赖
  2. $ wget http://slackbuilds.org/slackbuilds/15.0/libraries/required-library.tar.gz
  3. $ tar -xvf required-library.tar.gz
  4. $ cd required-library
  5. $ ./required-library.SlackBuild
  6. $ installpkg /tmp/required-library-*.txz
复制代码

7.3 硬件兼容性问题
  1. # 检查无线网卡是否被识别
  2. $ lspci | grep -i wireless
  3. $ lsusb | grep -i wireless
  4. # 加载适当的驱动
  5. $ modprobe driver_name
  6. # 配置无线网络
  7. $ wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
  8. $ dhcpcd wlan0
复制代码
  1. # 检查显卡型号
  2. $ lspci | grep -i vga
  3. # 安装适当的驱动
  4. # 对于NVIDIA显卡
  5. $ slackpkg install nvidia-driver
  6. # 对于AMD显卡
  7. $ slackpkg install xf86-video-amdgpu
  8. # 重新配置Xorg
  9. $ Xorg -configure
  10. $ mv /root/xorg.conf.new /etc/X11/xorg.conf
复制代码
  1. # 检查声卡是否被识别
  2. $ lspci | grep -i audio
  3. # 配置ALSA
  4. $ alsaconf
  5. $ alsamixer
  6. $ alsactl store
复制代码

7.4 常见错误及解决方案
  1. # 检查磁盘空间
  2. $ df -h
  3. # 清理临时文件
  4. $ rm -rf /tmp/*
  5. $ rm -rf /var/tmp/*
  6. # 清理软件包缓存
  7. $ rm -rf /var/cache/packages/*
  8. # 查找大文件
  9. $ find / -type f -size +100M -exec ls -lh {} \;
复制代码
  1. # 检查文件权限
  2. $ ls -l /path/to/file
  3. # 修改文件权限
  4. $ chmod 755 /path/to/file
  5. # 修改文件所有者
  6. $ chown user:group /path/to/file
  7. # 检查用户是否在适当的组中
  8. $ groups username
  9. $ usermod -a -G group username
复制代码
  1. # 检查PATH环境变量
  2. $ echo $PATH
  3. # 查找命令位置
  4. $ which command_name
  5. $ whereis command_name
  6. $ locate command_name
  7. # 安装提供命令的软件包
  8. $ slackpkg file-search command_name
复制代码

7.5 获取帮助的途径

• Slackbook:https://docs.slackware.com/slackbook:start
• FAQ:https://www.slackware.com/faq/
• 发行说明:https://www.slackware.com/releasenotes/

• 论坛:https://www.linuxquestions.org/questions/slackware-14/
• 邮件列表:https://www.slackware.com/lists/
• IRC频道:#slackware on Libera.Chat

• Slackware Wiki:https://docs.slackware.com/
• SlackBuilds.org:https://slackbuilds.org/
• DistroWatch Slackware页面:https://distrowatch.com/slackware

8. 官方文档与社区资源

8.1 Slackbook官方手册

Slackbook是Slackware的官方手册,涵盖了从基础到高级的各个方面:

• 第1章:介绍:Slackware Linux的历史和特点
• 第2章:帮助:获取帮助的途径
• 第3章:安装:详细的安装指南
• 第4章:基本配置:系统配置基础
• 第5章:网络配置:网络设置和管理
• 第6章:X Window System:图形界面配置
• 第7章:包管理:软件包管理工具
• 第8章:引导:系统引导过程
• 第9章:Shell:命令行使用
• 第10章:系统管理:高级系统管理
• 第11章:安全:系统安全配置
• 第12章:内核:内核编译和管理
• 第13章:打印:打印机配置
• 第14章:杂项:其他有用信息

Slackbook可以在线阅读或下载为PDF:

• 在线版本:https://docs.slackware.com/slackbook:start
• PDF下载:https://docs.slackware.com/_media/slackbook/slackbook.pdf

8.2 官方网站和邮件列表

Slackware的官方网站是获取最新信息和资源的主要来源:

• 主页:https://www.slackware.com/
• 获取Slackware:https://www.slackware.com/getslack/
• 安全公告:https://www.slackware.com/security/
• 变更日志:https://www.slackware.com/changelog/

Slackware提供了多个邮件列表,用户可以订阅获取最新信息和寻求帮助:

• Slackware-announce:重要公告和发布信息
• Slackware-security:安全公告和补丁信息
• Slackware-general:一般讨论和问题解答
• Slackware-current:开发版讨论

订阅邮件列表的方法:

1. 访问:https://www.slackware.com/lists/
2. 选择要订阅的列表
3. 按照页面上的指示进行订阅

8.3 社区论坛和IRC频道

LinuxQuestions.org的Slackware论坛是最活跃的Slackware社区之一:

• 论坛地址:https://www.linuxquestions.org/questions/slackware-14/
• 主要版块:Slackware InstallationSlackware GeneralSlackware SoftwareSlackware HardwareSlackware Server
• Slackware Installation
• Slackware General
• Slackware Software
• Slackware Hardware
• Slackware Server

• Slackware Installation
• Slackware General
• Slackware Software
• Slackware Hardware
• Slackware Server

Slackware用户可以在IRC上实时交流:

• 服务器:Libera.Chat
• 频道:#slackware
• 网页客户端:https://web.libera.chat/

8.4 推荐的第三方资源和学习材料

• Slackware Documentation Project:https://docs.slackware.com/
• Slackware Wiki:https://wiki.slackware.com/
• Slackware Linux Essentials:https://www.slackware.com/essentials/

• Slackware YouTube频道:https://www.youtube.com/c/SlackwareLinux
• DistroTube的Slackware视频:https://www.youtube.com/c/DistroTube

• Slackware Linux Basics:由Daniele Mazzocchio编写
• Slackware Linux Essentials:官方入门指南
• Slackware Linux:由Alan Hicks, David Cantrell等人编写

8.5 参与社区贡献的方式

发现Bug时,可以通过以下方式报告:

• 邮件列表:发送邮件到适当的邮件列表
• Bugzilla:https://bugs.slackware.com/
• 论坛:在LinuxQuestions.org论坛发帖

为SlackBuilds.org贡献SlackBuild脚本:

1. 访问:https://slackbuilds.org/submit/
2. 按照指南准备脚本
3. 提交脚本供审核

帮助改进Slackware文档:

• Slackbook Wiki:https://docs.slackware.com/
• 翻译项目:联系邮件列表了解如何参与

支持Slackware项目:

• PayPal捐赠:https://store.slackware.com/cgi-bin/store/donate
• 购买官方商品:https://store.slackware.com/

结论

Slackware Linux作为最古老的Linux发行版,凭借其简洁、稳定和Unix-like的设计哲学,一直吸引着那些希望深入了解Linux系统内部工作原理的用户。通过本指南,我们从基础安装到高级配置,全面探讨了Slackware的核心技术与使用技巧。

无论是系统管理员、开发者还是Linux爱好者,Slackware都提供了一个纯净、可控的环境,让用户能够完全掌控自己的系统。虽然学习曲线可能较陡,但掌握Slackware将使你对Linux系统有更深入的理解。

通过充分利用官方文档、社区资源和第三方工具,你可以充分发挥Slackware的潜力,构建一个稳定、高效且符合个人需求的Linux系统。无论你是Slackware的新手还是老手,希望本指南能为你的Slackware之旅提供有价值的参考和帮助。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

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

本版积分规则

联系我们|小黑屋|TG频道|RSS |网站地图

Powered by Pixtech

© 2025-2026 Pixtech Team.

>