|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
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启动介质的方法:
- # 确定USB设备名称(如/dev/sdb)
- $ lsblk
- # 卸载USB设备(如果已挂载)
- $ umount /dev/sdb*
- # 将ISO镜像写入USB设备
- $ dd if=slackware64-15.0-install-dvd.iso of=/dev/sdb bs=4M status=progress
- $ sync
复制代码
可以使用工具如Rufus或balenaEtcher来创建启动USB。
2.4 安装过程详解
Slackware的安装过程基于文本界面,虽然看起来简单,但提供了强大的控制能力。
从创建的启动介质启动计算机,在引导菜单中选择安装选项。对于大多数现代计算机,选择”Boot Slackware Linux (huge kernel)“。
安装程序会首先询问键盘映射。大多数用户可以直接选择默认的US键盘映射。
Slackware使用fdisk或cfdisk进行分区。以下是一个推荐的分区方案:
- /dev/sda1 /boot 500MB ext4
- /dev/sda2 swap 2xRAM swap
- /dev/sda3 / 剩余空间 ext4
复制代码
使用cfdisk进行分区的步骤:
- # 启动cfdisk
- $ cfdisk /dev/sda
- # 创建分区
- # 1. 选择New -> Primary -> 输入大小 -> 选择Bootable
- # 2. 选择New -> Primary -> 输入大小 -> 选择Type -> 82 Linux swap
- # 3. 选择New -> Primary -> 使用剩余空间
- # 4. 选择Write -> 输入yes
- # 5. 选择Quit
复制代码
接下来,安装程序会要求为每个分区创建文件系统并设置挂载点:
- # 格式化分区
- $ mkfs.ext4 /dev/sda1
- $ mkfs.ext4 /dev/sda3
- $ mkswap /dev/sda2
- $ swapon /dev/sda2
- # 挂载分区
- $ mount /dev/sda3 /mnt
- $ mkdir /mnt/boot
- $ 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或分区)。
- # LILO配置示例
- lba32
- boot = /dev/sda
- root = /dev/sda3
- image = /boot/vmlinuz
- label = Slackware
- read-only
复制代码
安装完成后,系统会提示移除安装介质并重新启动。首次启动后,需要完成一些基本配置:
- # 设置root密码
- $ passwd
- # 创建普通用户
- $ adduser
- # 配置网络(如果安装时未配置)
- $ netconfig
- # 配置X Window System
- $ xorgsetup
复制代码
3. 系统配置与基础使用
3.1 基本系统配置文件
Slackware使用纯文本配置文件,这些文件通常位于/etc目录下。以下是一些重要的配置文件:
• /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]=""
复制代码
• /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工具来管理用户和组:
- # 添加新用户
- $ adduser
- # 修改用户属性
- $ usermod -a -G audio,video username
- # 删除用户
- $ userdel -r username
- # 添加新组
- $ groupadd groupname
- # 删除组
- $ groupdel groupname
- # 修改密码
- $ passwd username
复制代码
3.3 网络配置
Slackware提供了多种方式来配置网络:
netconfig是一个简单的网络配置工具:
它会引导用户完成基本网络配置,包括IP地址、子网掩码、网关和DNS服务器。
编辑/etc/rc.d/rc.inet1.conf文件:
- # 配置eth0为静态IP
- IPADDR[0]="192.168.1.100"
- NETMASK[0]="255.255.255.0"
- USE_DHCP[0]=""
- # 配置eth1为DHCP
- IPADDR[1]=""
- NETMASK[1]=""
- USE_DHCP[1]="yes"
复制代码
然后重启网络服务:
- $ /etc/rc.d/rc.inet1 restart
复制代码
对于无线网络,可以使用wpa_supplicant:
- # 安装wpa_supplicant
- $ installpkg wpa_supplicant-2.9-x86_64-1.txz
- # 创建配置文件
- $ wpa_passphrase "SSID" "password" > /etc/wpa_supplicant.conf
- # 启动wpa_supplicant
- $ wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
- # 获取IP地址
- $ dhcpcd wlan0
复制代码
3.4 图形界面设置
Slackware支持多种桌面环境,包括KDE Plasma、Xfce、LXQt等。
Slackware提供了xorgsetup工具来配置X Window System:
这个工具会检测硬件并生成/etc/X11/xorg.conf配置文件。
Slackware默认启动到命令行界面。要启动图形界面,可以使用:
要设置系统默认启动到图形界面,编辑/etc/inittab文件:
- # 将默认运行级别从3改为4
- id:4:initdefault:
复制代码
Slackware允许用户选择默认的桌面环境。编辑/etc/X11/xinit/xinitrc文件:
- # 使用KDE Plasma
- exec startkde
- # 使用Xfce
- exec startxfce4
- # 使用LXQt
- exec startlxqt
复制代码
3.5 声音和打印机配置
Slackware使用ALSA(Advanced Linux Sound Architecture)来管理音频设备:
- # 检测音频设备
- $ alsaconf
- # 调整音量
- $ alsamixer
- # 保存音量设置
- $ alsactl store
复制代码
Slackware使用CUPS(Common Unix Printing System)来管理打印机:
- # 启动CUPS服务
- $ /etc/rc.d/rc.cups start
- # 设置CUPS开机自启
- $ chmod +x /etc/rc.d/rc.cups
- # 访问CUPS Web界面
- $ firefox http://localhost:631
复制代码
3.6 常用系统管理命令
以下是一些常用的系统管理命令:
- # 查看系统信息
- $ uname -a
- $ lsb_release -a
- $ dmesg
- # 查看硬件信息
- $ lspci
- $ lsusb
- $ lscpu
- # 查看内存使用情况
- $ free -h
- $ top
- $ htop
- # 查看磁盘使用情况
- $ df -h
- $ du -sh /path/to/directory
- # 查看网络连接
- $ netstat -tuln
- $ ss -tuln
- # 管理服务
- $ /etc/rc.d/rc.service_name start
- $ /etc/rc.d/rc.service_name stop
- $ /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用于安装软件包:
- # 安装软件包
- $ installpkg package.txz
- # 安装软件包到指定目录
- $ installpkg -root /path/to/root package.txz
- # 安装软件包但不执行安装脚本
- $ installpkg -warn package.txz
- # 安装软件包并显示详细信息
- $ installpkg -verbose package.txz
复制代码
removepkg用于删除软件包:
- # 删除软件包
- $ removepkg packagename
- # 删除软件包但不执行删除脚本
- $ removepkg -warn packagename
- # 删除软件包并显示详细信息
- $ removepkg -verbose packagename
- # 保留配置文件
- $ removepkg -preserve packagename
复制代码
upgradepkg用于升级软件包:
- # 升级软件包
- $ upgradepkg package.txz
- # 升级软件包并安装新文件
- $ upgradepkg --install-new package.txz
- # 升级软件包但不执行安装脚本
- $ upgradepkg --reinstall package.txz
复制代码
pkgtool是一个交互式工具,用于管理软件包:
pkgtool提供了一个菜单界面,可以安装、删除和查看软件包。
4.3 第三方软件源
除了官方软件源,Slackware用户还可以使用第三方软件源来获取更多软件:
SlackBuilds.org是一个社区项目,提供了从源码构建Slackware软件包的脚本:
- # 下载SlackBuild脚本
- $ wget https://slackbuilds.org/slackbuilds/15.0/development/git/git.tar.gz
- $ tar -xvf git.tar.gz
- $ cd git
- # 下载源码
- $ wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.34.1.tar.xz
- # 构建软件包
- $ ./git.SlackBuild
- # 安装软件包
- $ installpkg /tmp/git-2.34.1-x86_64-1_SBo.txz
复制代码
sbopkg是一个工具,可以简化从SlackBuilds.org安装软件的过程:
- # 安装sbopkg
- $ installpkg sbopkg-0.38.1-noarch-1_SBo.txz
- # 启动sbopkg
- $ sbopkg
- # 同步SlackBuilds仓库
- $ sbopkg -r
- # 搜索软件包
- $ sbopkg -s "package name"
- # 安装软件包及其依赖
- $ 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用户还可以从源码编译安装软件:
- # 解压源码
- $ tar -xvf package.tar.gz
- $ cd package
- # 配置编译选项
- $ ./configure --prefix=/usr --sysconfdir=/etc
- # 编译
- $ make
- # 安装
- $ make install
复制代码
为了创建Slackware软件包,可以使用makepkg:
- # 创建临时安装目录
- $ mkdir /tmp/package-name
- $ make install DESTDIR=/tmp/package-name
- # 创建软件包
- $ cd /tmp/package-name
- $ makepkg -l y -c n /tmp/package-name.txz
- # 安装软件包
- $ installpkg /tmp/package-name.txz
复制代码
5. 系统维护与优化
5.1 系统更新与安全补丁
Slackware提供了安全补丁和更新,可以通过以下方式获取:
slackpkg是一个官方工具,用于管理Slackware软件包和更新:
- # 安装slackpkg
- $ installpkg slackpkg-15.0-noarch-3.txz
- # 配置镜像源
- $ nano /etc/slackpkg/mirrors
- # 取消注释一个镜像源,例如:
- # http://mirrors.slackware.com/slackware/slackware64-15.0/
- # 更新软件包列表
- $ slackpkg update
- # 升级所有软件包
- $ slackpkg upgrade-all
- # 安装新软件包
- $ slackpkg install package-name
- # 删除软件包
- $ slackpkg remove package-name
- # 搜索软件包
- $ slackpkg search package-name
复制代码
也可以手动下载和安装更新:
- # 创建更新目录
- $ mkdir /tmp/slackware-updates
- $ cd /tmp/slackware-updates
- # 下载更新
- $ wget -r -l1 -np -nd http://mirrors.slackware.com/slackware/slackware64-15.0/patches/packages/
- # 安装更新
- $ 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来管理日志轮转:
- # 配置logrotate
- $ nano /etc/logrotate.conf
- # 手动触发日志轮转
- $ logrotate -f /etc/logrotate.conf
复制代码- # 查看最新日志
- $ tail -f /var/log/messages
- # 搜索特定关键词
- $ grep "keyword" /var/log/messages
- # 查看特定时间范围的日志
- $ journalctl --since "2023-01-01" --until "2023-01-02"
复制代码
5.3 性能监控与优化
- # 查看系统负载
- $ uptime
- $ top
- $ htop
- # 查看内存使用情况
- $ free -h
- $ vmstat
- # 查看磁盘I/O
- $ iostat
- $ iotop
- # 查看网络使用情况
- $ iftop
- $ nethogs
- # 查看进程树
- $ pstree
复制代码- # 调整内核参数
- $ nano /etc/sysctl.conf
- # 示例配置
- # 增加文件描述符限制
- fs.file-max = 100000
- # 优化网络参数
- net.core.rmem_max = 16777216
- net.core.wmem_max = 16777216
- net.ipv4.tcp_rmem = 4096 87380 16777216
- net.ipv4.tcp_wmem = 4096 65536 16777216
- # 应用配置
- $ sysctl -p
- # 调整用户限制
- $ nano /etc/security/limits.conf
- # 示例配置
- # 增加用户文件描述符限制
- * soft nofile 65536
- * hard nofile 65536
复制代码- # 禁用不必要的服务
- $ chmod -x /etc/rc.d/rc.bluetooth
- $ chmod -x /etc/rc.d/rc.cups
- $ chmod -x /etc/rc.d/rc.sshd
- # 启用必要的服务
- $ chmod +x /etc/rc.d/rc.networkmanager
- $ chmod +x /etc/rc.d/rc.httpd
复制代码
5.4 备份与恢复策略
- # 创建备份脚本
- $ nano /usr/local/bin/backup.sh
- #!/bin/bash
- # 定义源目录和目标目录
- SOURCE="/"
- DEST="/mnt/backup"
- # 执行备份
- rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} $SOURCE $DEST
- # 设置执行权限
- $ chmod +x /usr/local/bin/backup.sh
- # 添加到cron定时任务
- $ crontab -e
- # 每天凌晨2点执行备份
- 0 2 * * * /usr/local/bin/backup.sh
复制代码- # 创建完整备份
- $ tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys /
- # 从备份恢复
- $ tar -xvpzf backup.tar.gz -C /
复制代码- # 使用dd克隆整个磁盘
- $ dd if=/dev/sda of=/dev/sdb bs=4M status=progress
- # 使用Clonezilla进行备份
- $ clonezilla
复制代码
5.5 系统服务管理
Slackware使用传统的SysV init系统来管理服务:
服务脚本位于/etc/rc.d/目录下,以rc.开头:
- # 列出所有服务脚本
- $ ls -l /etc/rc.d/rc.*
复制代码- # 启动服务
- $ /etc/rc.d/rc.httpd start
- # 停止服务
- $ /etc/rc.d/rc.httpd stop
- # 重启服务
- $ /etc/rc.d/rc.httpd restart
- # 查看服务状态
- $ /etc/rc.d/rc.httpd status
复制代码- # 设置服务开机自启
- $ chmod +x /etc/rc.d/rc.httpd
- # 禁止服务开机自启
- $ chmod -x /etc/rc.d/rc.httpd
复制代码
创建自定义服务脚本示例:
- # 创建服务脚本
- $ nano /etc/rc.d/rc.myservice
- #!/bin/sh
- # /etc/rc.d/rc.myservice
- # 启动服务
- myservice_start() {
- echo "Starting My Service..."
- /usr/local/bin/myservice -d
- }
- # 停止服务
- myservice_stop() {
- echo "Stopping My Service..."
- killall myservice
- }
- # 重启服务
- myservice_restart() {
- myservice_stop
- sleep 1
- myservice_start
- }
- # 根据参数执行相应操作
- case "$1" in
- 'start')
- myservice_start
- ;;
- 'stop')
- myservice_stop
- ;;
- 'restart')
- myservice_restart
- ;;
- *)
- echo "Usage: $0 {start|stop|restart}"
- exit 1
- ;;
- esac
- # 设置执行权限
- $ chmod +x /etc/rc.d/rc.myservice
复制代码
6. 高级配置与定制
6.1 内核编译与定制
Slackware提供了两种类型的内核:huge kernel和generic kernel。Huge kernel包含所有必要的驱动,适合大多数硬件;generic kernel更小,需要initrd来加载必要的模块。
- # 安装必要的工具
- $ slackpkg install kernel-source kernel-headers gcc make ncurses
- # 切换到源码目录
- $ cd /usr/src/linux
复制代码- # 复制当前配置
- $ cp /boot/config-generic-$(uname -r) .config
- # 或者使用make oldconfig使用现有配置
- $ make oldconfig
- # 或者使用menuconfig进行图形化配置
- $ make menuconfig
复制代码- # 清理源码树
- $ make clean
- # 编译内核和模块
- $ 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
- # 创建initrd(对于generic kernel)
- $ /usr/share/mkinitrd/mkinitrd_command_generator.sh -k $(uname -r) | bash
复制代码
编辑/etc/lilo.conf:
- # 添加新内核条目
- image = /boot/vmlinuz-custom
- root = /dev/sda3
- label = Custom
- read-only
复制代码
然后运行:
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:
- #!/bin/sh
- # /etc/rc.d/rc.local
- # 自定义启动命令
- echo "Starting custom services..."
- # 启动自定义服务
- if [ -x /etc/rc.d/rc.myservice ]; then
- /etc/rc.d/rc.myservice start
- fi
- # 设置系统参数
- echo "1024" > /proc/sys/vm/swappiness
- # 加载内核模块
- modprobe vboxdrv
复制代码
确保脚本有执行权限:
- $ chmod +x /etc/rc.d/rc.local
复制代码
Slackware使用传统的运行级别:
• 0:关机
• 1:单用户模式
• 2:多用户模式(无NFS)
• 3:完整多用户模式
• 4:X11模式(默认)
• 5:未使用
• 6:重启
编辑/etc/inittab来修改默认运行级别:
- # 设置默认运行级别为3(命令行)
- id:3:initdefault:
复制代码
6.3 创建自定义软件包
创建自定义Slackware软件包是分享软件或保持系统一致性的好方法。
创建一个简单的SlackBuild脚本示例:
- #!/bin/sh
- # Slackware build script for <package>
- # 作者信息
- PRGNAM=<package>
- VERSION=<version>
- BUILD=${BUILD:-1}
- TAG=${TAG:-_SBo}
- # 系统信息
- if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
- fi
- # 设置工作目录
- CWD=$(pwd)
- TMP=${TMP:-/tmp/SBo}
- PKG=$TMP/package-$PRGNAM
- OUTPUT=${OUTPUT:-/tmp}
- # 检查是否已存在
- if [ "$ARCH" = "i586" ]; then
- SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- LIBDIRSUFFIX=""
- elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
- elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
- else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
- fi
- # 设置退出时清理
- set -e
- # 清理并创建目录
- rm -rf $PKG
- mkdir -p $TMP $PKG $OUTPUT
- cd $TMP
- rm -rf $PRGNAM-$VERSION
- tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
- cd $PRGNAM-$VERSION
- # 应用补丁
- patch -p1 < $CWD/patches/some.patch
- # 配置和编译
- chown -R root:root .
- find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
- CFLAGS="$SLKCFLAGS" \
- CXXFLAGS="$SLKCFLAGS" \
- ./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --mandir=/usr/man \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
- --build=$ARCH-slackware-linux
- make
- make install DESTDIR=$PKG
- # 创建文档目录
- mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
- cp -a \
- AUTHORS COPYING ChangeLog INSTALL NEWS README \
- $PKG/usr/doc/$PRGNAM-$VERSION
- cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
- # 创建描述文件
- mkdir -p $PKG/install
- cat $CWD/slack-desc > $PKG/install/slack-desc
- # 创建安装脚本(如果需要)
- cat $CWD/doinst.sh > $PKG/install/doinst.sh
- # 创建软件包
- cd $PKG
- /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
复制代码
创建slack-desc文件:
- # HOW TO EDIT THIS FILE:
- # The "handy ruler" below makes it easier to edit a package description.
- # Line up the first '|' above the ':' following the base package name, and
- # the '|' on the right side marks the last column you can put a character in.
- # You must make exactly 11 lines for the formatting to be correct. It's also
- # customary to leave one space after the ':' except on otherwise blank lines.
- |-----handy-ruler------------------------------------------------------|
- package: package (short description of package)
- package:
- package: Long description of package.
- package: This should be several lines long, and describe the package
- package: in detail. It should not exceed the width of the handy ruler.
- package:
- package:
- package:
- package:
- package:
- package:
- package:
复制代码
创建doinst.sh文件(如果需要):
- #!/bin/sh
- # 安装后执行的脚本
- # 更新共享库缓存
- if [ -x /sbin/ldconfig ]; then
- /sbin/ldconfig
- fi
- # 更新桌面数据库
- if [ -x /usr/bin/update-desktop-database ]; then
- /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
- fi
- # 更新图标缓存
- if [ -x /usr/bin/gtk-update-icon-cache ]; then
- /usr/bin/gtk-update-icon-cache -q -f -t usr/share/icons/hicolor >/dev/null 2>&1
- fi
- # 创建符号链接
- ( cd usr/bin ; rm -rf program )
- ( cd usr/bin ; ln -sf program-real program )
复制代码
6.4 系统安全加固
- # 禁用root远程登录
- $ nano /etc/ssh/sshd_config
- PermitRootLogin no
- # 限制su命令
- $ nano /etc/pam.d/su
- auth required pam_wheel.so use_uid
- # 创建受限用户
- $ adduser -s /bin/false -d /home/restricted restricted
复制代码- # 配置防火墙
- $ nano /etc/rc.d/rc.firewall
- #!/bin/sh
- # 简单的防火墙脚本
- # 清除现有规则
- 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 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
- # 设置执行权限
- $ chmod +x /etc/rc.d/rc.firewall
- # 添加到启动脚本
- $ echo "/etc/rc.d/rc.firewall" >> /etc/rc.d/rc.local
复制代码- # 安装安全工具
- $ slackpkg install rkhunter chkrootkit fail2ban
- # 配置rkhunter
- $ nano /etc/rkhunter.conf
- # 更新rkhunter数据库
- $ rkhunter --update
- $ rkhunter --propupd
- # 运行系统检查
- $ rkhunter -c
- # 配置fail2ban
- $ cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- $ nano /etc/fail2ban/jail.local
- # 启动fail2ban
- $ chmod +x /etc/rc.d/rc.fail2ban
- $ /etc/rc.d/rc.fail2ban start
复制代码
6.5 服务器配置
- # 安装Apache
- $ slackpkg install httpd php
- # 配置Apache
- $ nano /etc/httpd/httpd.conf
- # 启动Apache
- $ chmod +x /etc/rc.d/rc.httpd
- $ /etc/rc.d/rc.httpd start
- # 测试Apache
- $ echo "<html><body><h1>It works!</h1></body></html>" > /var/www/htdocs/index.html
- $ firefox http://localhost
复制代码- # 安装vsftpd
- $ slackpkg install vsftpd
- # 配置vsftpd
- $ nano /etc/vsftpd.conf
- # 示例配置
- anonymous_enable=NO
- local_enable=YES
- write_enable=YES
- chroot_local_user=YES
- allow_writeable_chroot=YES
- # 启动vsftpd
- $ chmod +x /etc/rc.d/rc.vsftpd
- $ /etc/rc.d/rc.vsftpd start
复制代码- # 安装Postfix
- $ slackpkg install postfix
- # 配置Postfix
- $ nano /etc/postfix/main.cf
- # 示例配置
- myhostname = mail.example.com
- mydomain = example.com
- myorigin = $mydomain
- inet_interfaces = all
- mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
- mynetworks = 127.0.0.0/8, 192.168.1.0/24
- home_mailbox = Maildir/
- # 启动Postfix
- $ chmod +x /etc/rc.d/rc.postfix
- $ /etc/rc.d/rc.postfix start
复制代码
7. 故障排除与常见问题
7.1 启动问题及解决
如果系统无法启动到图形界面,首先检查X Window System的配置:
- # 检查Xorg日志
- $ less /var/log/Xorg.0.log
- # 重新配置Xorg
- $ Xorg -configure
- $ mv /root/xorg.conf.new /etc/X11/xorg.conf
- # 测试Xorg
- $ startx
复制代码
如果问题仍然存在,尝试使用更通用的驱动:
- # 编辑xorg.conf
- $ nano /etc/X11/xorg.conf
- # 使用vesa驱动
- Section "Device"
- Identifier "Card0"
- Driver "vesa"
- EndSection
复制代码
内核恐慌(Kernel Panic)通常是由于硬件问题或驱动冲突引起的:
- # 查看系统日志
- $ dmesg | less
- # 检查硬件问题
- $ memtest86+
- # 尝试使用不同的内核参数
- # 编辑/etc/lilo.conf,添加以下参数:
- append="acpi=off noapic"
- # 更新LILO
- $ lilo
复制代码
文件系统错误可能导致系统无法启动:
- # 使用救援模式启动系统
- # 检查文件系统
- $ fsck /dev/sda1
- # 如果文件系统损坏严重,尝试
- $ fsck -y /dev/sda1
复制代码
7.2 软件包依赖问题
Slackware不自动处理软件包依赖,因此可能会遇到依赖问题:
- # 查找缺失的库
- $ ldd /usr/bin/program
- # 搜索提供库的软件包
- $ find /var/log/packages -name "*" -exec grep -l "libname.so" {} \;
复制代码- # 使用sbopkg安装软件及其依赖
- $ sbopkg -i "package name"
- # 查看依赖关系
- $ sbopkg -d "package name"
复制代码- # 下载并安装缺失的依赖
- $ wget http://slackbuilds.org/slackbuilds/15.0/libraries/required-library.tar.gz
- $ tar -xvf required-library.tar.gz
- $ cd required-library
- $ ./required-library.SlackBuild
- $ installpkg /tmp/required-library-*.txz
复制代码
7.3 硬件兼容性问题
- # 检查无线网卡是否被识别
- $ lspci | grep -i wireless
- $ lsusb | grep -i wireless
- # 加载适当的驱动
- $ modprobe driver_name
- # 配置无线网络
- $ wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
- $ dhcpcd wlan0
复制代码- # 检查显卡型号
- $ lspci | grep -i vga
- # 安装适当的驱动
- # 对于NVIDIA显卡
- $ slackpkg install nvidia-driver
- # 对于AMD显卡
- $ slackpkg install xf86-video-amdgpu
- # 重新配置Xorg
- $ Xorg -configure
- $ mv /root/xorg.conf.new /etc/X11/xorg.conf
复制代码- # 检查声卡是否被识别
- $ lspci | grep -i audio
- # 配置ALSA
- $ alsaconf
- $ alsamixer
- $ alsactl store
复制代码
7.4 常见错误及解决方案
- # 检查磁盘空间
- $ df -h
- # 清理临时文件
- $ rm -rf /tmp/*
- $ rm -rf /var/tmp/*
- # 清理软件包缓存
- $ rm -rf /var/cache/packages/*
- # 查找大文件
- $ find / -type f -size +100M -exec ls -lh {} \;
复制代码- # 检查文件权限
- $ ls -l /path/to/file
- # 修改文件权限
- $ chmod 755 /path/to/file
- # 修改文件所有者
- $ chown user:group /path/to/file
- # 检查用户是否在适当的组中
- $ groups username
- $ usermod -a -G group username
复制代码- # 检查PATH环境变量
- $ echo $PATH
- # 查找命令位置
- $ which command_name
- $ whereis command_name
- $ locate command_name
- # 安装提供命令的软件包
- $ 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之旅提供有价值的参考和帮助。 |
|