|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
引言
Slackware Linux,作为现存最古老的Linux发行版,由Patrick Volkerding于1993年创建并维护至今。它以其简洁、稳定和Unix-like的特性而闻名,遵循KISS(Keep It Simple, Stupid)原则,为用户提供了一个接近原始Linux精神的操作系统体验。Slackware的设计哲学是让用户完全控制自己的系统,而不是让系统控制用户。这种理念使得Slackware成为学习Linux系统内部工作原理和提升系统管理能力的理想平台。
本文将深入探索Slackware官方文档,帮助您掌握这一古老发行版的核心技术与使用技巧,从而提升您的Linux系统管理能力。无论您是Linux新手还是有经验的系统管理员,通过学习Slackware,您都能获得宝贵的知识和技能。
Slackware官方文档概览
Slackbook:Slackware的官方手册
Slackbook是Slackware的官方手册,是学习该发行版的最佳起点。它全面介绍了Slackware的各个方面,从安装到高级系统管理。Slackbook分为多个章节,每个章节都详细讲解了特定主题。
1. 入门介绍:介绍Slackware的历史、特点和哲学。
2. 安装:详细说明如何安装Slackware系统。
3. 基本配置:讲解系统安装后的基本配置步骤。
4. Shell基础:介绍命令行使用和shell脚本编程。
5. 网络配置:讲解如何设置和管理网络连接。
6. X窗口系统:介绍图形界面的安装和配置。
7. 包管理:详细说明Slackware的包管理系统。
8. 系统管理:深入讲解系统管理任务。
9. 安全:介绍系统安全相关的知识和最佳实践。
Slackbook不仅适合初学者,也为有经验的用户提供了有价值的信息。它可以在Slackware官方网站免费获取,有HTML和PDF两种格式。
FAQ和发行说明
Slackware的FAQ(常见问题解答)文档回答了用户经常遇到的问题,涵盖了安装、配置、软件管理等多个方面。发行说明则详细列出了每个版本的变化和更新,包括新增功能、软件包更新和已知问题等。
这些文档对于升级系统或解决特定问题非常有帮助。例如,在FAQ中,您可以找到关于如何设置打印机、如何解决网络问题或如何恢复损坏的系统等问题的解答。
HOWTO文档
Slackware提供了一系列HOWTO文档,这些文档针对特定主题提供详细的指导。与Slackbook的全面性不同,HOWTO文档专注于特定任务或问题,提供更深入的解决方案。
常见的HOWTO文档包括:
• 多媒体设置指南:如何设置音频和视频播放
• NVIDIA显卡驱动安装:如何在Slackware上安装NVIDIA专有驱动
• Samba配置:如何设置文件和打印机共享
• 系统安全加固:如何提高系统安全性
man页面和info文档
像所有Unix-like系统一样,Slackware提供了完整的man页面和info文档系统。这些文档包含了系统命令、配置文件和系统调用的详细说明。
man页面是系统管理员日常工作中不可或缺的工具。例如,要了解ls命令的详细用法,可以在终端中输入:
这将显示ls命令的完整手册页,包括所有可用选项和用法示例。
邮件列表和社区论坛
虽然不是严格意义上的”官方文档”,但Slackware的邮件列表和社区论坛是获取帮助和信息的重要资源。这些平台上有经验丰富的用户和开发者,可以解答您的问题并提供有价值的建议。
Slackware的主要邮件列表包括:
• slackware-announce:重要公告和安全更新
• slackware-security:安全相关问题和更新
• slackware-general:一般讨论和技术支持
核心技术探索
包管理系统:pkgtools
Slackware使用自己开发的包管理系统——pkgtools,这是一套简单而强大的工具集,用于管理软件包。与Debian的dpkg/apt或Red Hat的rpm/yum/dnf不同,Slackware的包管理系统不自动解决依赖关系,这要求用户对自己的系统有更深入的了解。
1. installpkg:安装软件包installpkg package-name.tgz
2. removepkg:卸载软件包removepkg package-name
3. upgradepkg:升级软件包upgradepkg package-name-new-version.tgz
4. pkgtool:包管理的交互式界面pkgtool
5. makepkg:创建软件包makepkg package-name.tgz
installpkg:安装软件包
- installpkg package-name.tgz
复制代码
removepkg:卸载软件包
upgradepkg:升级软件包
- upgradepkg package-name-new-version.tgz
复制代码
pkgtool:包管理的交互式界面
makepkg:创建软件包
假设我们要安装Vim编辑器:
- # 首先下载Vim软件包
- wget https://slackware.osuosl.org/slackware64-current/slackware64/ap/vim-8.2.3459-x86_64-1.txz
- # 安装软件包
- installpkg vim-8.2.3459-x86_64-1.txz
- # 检查已安装的软件包
- ls /var/log/packages | grep vim
- # 如果需要卸载
- removepkg vim
复制代码
虽然官方pkgtools不处理依赖关系,但Slackware提供了一个名为slackpkg的官方工具,它可以解决依赖关系并从官方仓库安装软件:
- # 更新软件包列表
- slackpkg update
- # 搜索软件包
- slackpkg search vim
- # 安装软件包(包括依赖)
- slackpkg install vim
- # 升级系统
- slackpkg upgrade-all
复制代码
启动系统:BSD风格的init
Slackware使用BSD风格的init系统,而不是大多数Linux发行版使用的System V init或现代的systemd。这种启动系统更加简单直接,通过一系列脚本控制系统的启动和运行级别。
• /etc/rc.d/rc.S:系统启动脚本
• /etc/rc.d/rc.M:多用户模式启动脚本
• /etc/rc.d/rc.K:单用户模式启动脚本
• /etc/rc.d/rc.0和/etc/rc.d/rc.6:关机和重启脚本
• /etc/rc.d/rc.local:本地启动脚本,可添加自定义命令
Slackware使用简单的运行级别系统:
• 运行级别0:系统关机
• 运行级别1:单用户模式
• 运行级别2-5:多用户模式(默认为运行级别3)
• 运行级别6:系统重启
运行级别的配置文件是/etc/inittab:
- # 默认运行级别
- id:3:initdefault:
- # 运行级别定义
- si:S:sysinit:/etc/rc.d/rc.S
- rc:2345:wait:/etc/rc.d/rc.M
复制代码
在Slackware中,服务通过/etc/rc.d/目录下的脚本控制。这些脚本通常以”rc.“开头,后跟服务名称。
例如,要管理网络服务:
- # 启动网络服务
- /etc/rc.d/rc.inet1 start
- # 停止网络服务
- /etc/rc.d/rc.inet1 stop
- # 重启网络服务
- /etc/rc.d/rc.inet1 restart
- # 检查服务状态
- /etc/rc.d/rc.inet1 status
复制代码
要使服务在启动时自动运行,需要确保相应的脚本有执行权限:
- # 使网络服务在启动时自动运行
- chmod +x /etc/rc.d/rc.inet1
- # 禁止服务在启动时自动运行
- chmod -x /etc/rc.d/rc.inet1
复制代码
系统配置:基于文本文件的配置
Slackware遵循Unix传统,使用纯文本文件进行系统配置。这种配置方式虽然不如图形界面直观,但更加灵活和强大,也便于远程管理和自动化。
1. 网络配置:/etc/rc.d/rc.inet1.conf:网络接口配置/etc/resolv.conf:DNS服务器配置/etc/hosts:主机名映射/etc/networks:网络名称映射
2. /etc/rc.d/rc.inet1.conf:网络接口配置
3. /etc/resolv.conf:DNS服务器配置
4. /etc/hosts:主机名映射
5. /etc/networks:网络名称映射
• /etc/rc.d/rc.inet1.conf:网络接口配置
• /etc/resolv.conf:DNS服务器配置
• /etc/hosts:主机名映射
• /etc/networks:网络名称映射
示例:配置静态IP地址
- # 编辑网络配置文件
- vi /etc/rc.d/rc.inet1.conf
-
- # 设置IP地址、子网掩码和网关
- IPADDR[0]="192.168.1.100"
- NETMASK[0]="255.255.255.0"
- USE_DHCP[0]=""
- GATEWAY="192.168.1.1"
复制代码
1. 系统启动配置:/etc/lilo.conf:LILO引导加载程序配置/etc/inittab:init系统配置/etc/fstab:文件系统挂载配置
2. /etc/lilo.conf:LILO引导加载程序配置
3. /etc/inittab:init系统配置
4. /etc/fstab:文件系统挂载配置
• /etc/lilo.conf:LILO引导加载程序配置
• /etc/inittab:init系统配置
• /etc/fstab:文件系统挂载配置
示例:配置LILO引导加载程序
- # 编辑LILO配置文件
- vi /etc/lilo.conf
-
- # 添加以下内容
- boot = /dev/sda
- lba32
- prompt
- timeout = 50
- image = /boot/vmlinuz
- root = /dev/sda1
- label = Slackware
- read-only
-
- # 保存后,安装LILO
- lilo
复制代码
1. 用户和组配置:/etc/passwd:用户账户信息/etc/shadow:用户密码信息/etc/group:组信息/etc/sudoers:sudo权限配置
2. /etc/passwd:用户账户信息
3. /etc/shadow:用户密码信息
4. /etc/group:组信息
5. /etc/sudoers:sudo权限配置
• /etc/passwd:用户账户信息
• /etc/shadow:用户密码信息
• /etc/group:组信息
• /etc/sudoers:sudo权限配置
示例:添加新用户
- # 添加新用户
- useradd -m -G users,wheel,audio,video -s /bin/bash username
-
- # 设置用户密码
- passwd username
复制代码
1. 软件包源配置:/etc/slackpkg/mirrors:slackpkg镜像站点列表
2. /etc/slackpkg/mirrors:slackpkg镜像站点列表
• /etc/slackpkg/mirrors:slackpkg镜像站点列表
示例:配置slackpkg镜像
- # 编辑镜像配置文件
- vi /etc/slackpkg/mirrors
-
- # 取消注释一个镜像站点,例如:
- # http://slackware.osuosl.org/slackware64-current/
复制代码
虽然Slackware主要使用文本文件进行配置,但也提供了一些配置工具来简化常见任务:
1. netconfig:网络配置工具netconfig
2. xorgsetup:X.Org服务器配置工具xorgsetup
3. pkgtool:包管理工具pkgtool
4. liloconfig:LILO配置工具liloconfig
netconfig:网络配置工具
xorgsetup:X.Org服务器配置工具
pkgtool:包管理工具
liloconfig:LILO配置工具
软件编译:从源码安装软件
Slackware鼓励用户从源码编译软件,这提供了更大的灵活性和优化机会。Slackware Build Scripts (SBS) 是一套用于构建Slackware兼容软件包的脚本。
SlackBuild脚本是一系列shell脚本,用于下载、编译和打包软件。这些脚本遵循Slackware的包管理标准,生成的软件包与官方包完全兼容。
1. 准备环境:# 创建工作目录
mkdir -p ~/slackbuilds
cd ~/slackbuilds
2. - 获取SlackBuild脚本:# 从官方源获取SlackBuild脚本
- git clone git://git.slackbuilds.org/slackbuilds.git
复制代码 3. 编译软件:
“`bash进入特定软件的SlackBuild目录cd slackbuilds//
准备环境:
- # 创建工作目录
- mkdir -p ~/slackbuilds
- cd ~/slackbuilds
复制代码
获取SlackBuild脚本:
- # 从官方源获取SlackBuild脚本
- git clone git://git.slackbuilds.org/slackbuilds.git
复制代码
编译软件:
“`bash
cd slackbuilds//
# 下载源码(如果需要)
..info
wget -c $DOWNLOAD
# 运行SlackBuild脚本
./.SlackBuild
- 4. **安装生成的软件包**:
- ```bash
- # 安装生成的软件包
- installpkg /tmp/<package>-*.txz
复制代码- # 创建工作目录
- mkdir -p ~/slackbuilds/vim
- cd ~/slackbuilds/vim
- # 下载Vim源码
- wget ftp://ftp.vim.org/pub/vim/unix/vim-8.2.tar.bz2
- # 创建SlackBuild脚本
- cat > vim.SlackBuild << 'EOF'
- #!/bin/sh
- # Copyright (c) 2021 Slackware Linux Project. All rights reserved.
- #
- # Permission is hereby granted, free of charge, to any person obtaining a copy
- # of this software and associated documentation files (the "Software"), to deal
- # in the Software without restriction, including without limitation the rights
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- # copies of the Software, and to permit persons to whom the Software is
- # furnished to do so, subject to the following conditions:
- #
- # The above copyright notice and this permission notice shall be included in
- # all copies or substantial portions of the Software.
- #
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- # THE SOFTWARE.
- PRGNAM=vim
- VERSION=${VERSION:-8.2}
- 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.bz2
- cd $PRGNAM${VERSION//.}
- 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 {} \;
- # Configure
- CFLAGS="$SLKCFLAGS" \
- CXXFLAGS="$SLKCFLAGS" \
- ./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --mandir=/usr/man \
- --enable-gui=no \
- --with-features=huge \
- --enable-multibyte \
- --enable-cscope \
- --with-x=no \
- --disable-gpm \
- --build=$ARCH-slackware-linux
- # Build
- make
- make install DESTDIR=$PKG
- # Strip binaries
- find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
- # Compress man pages
- find $PKG/usr/man -type f -exec gzip -9 {} \;
- for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
- # Create package
- mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
- cp -a 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
- cd $PKG
- /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
- EOF
- # 使脚本可执行
- chmod +x vim.SlackBuild
- # 运行SlackBuild脚本
- ./vim.SlackBuild
- # 安装生成的软件包
- installpkg /tmp/vim-8.2-x86_64-1_SBo.tgz
复制代码
使用技巧与最佳实践
系统安装和初始配置
Slackware的安装过程相对简单,但需要用户对Linux系统有一定了解。以下是安装Slackware的基本步骤:
1. 准备安装介质:下载Slackware ISO镜像创建启动USB或刻录DVD
2. 下载Slackware ISO镜像
3. 创建启动USB或刻录DVD
4. 启动安装程序:从安装介质启动计算机在引导提示符下按Enter键启动安装程序
5. 从安装介质启动计算机
6. 在引导提示符下按Enter键启动安装程序
7. 分区硬盘:使用fdisk或cfdisk进行分区至少需要创建根分区(/)和交换分区
8. 使用fdisk或cfdisk进行分区
9. 至少需要创建根分区(/)和交换分区
准备安装介质:
• 下载Slackware ISO镜像
• 创建启动USB或刻录DVD
启动安装程序:
• 从安装介质启动计算机
• 在引导提示符下按Enter键启动安装程序
分区硬盘:
• 使用fdisk或cfdisk进行分区
• 至少需要创建根分区(/)和交换分区
示例:使用cfdisk分区
1. 设置文件系统:为每个分区创建文件系统(通常是ext4)激活交换分区
2. 为每个分区创建文件系统(通常是ext4)
3. 激活交换分区
• 为每个分区创建文件系统(通常是ext4)
• 激活交换分区
示例:创建文件系统
- # 创建ext4文件系统
- mkfs.ext4 /dev/sda1
-
- # 激活交换分区
- mkswap /dev/sda2
- swapon /dev/sda2
复制代码
1. 安装软件包:挂载根分区运行setup命令启动安装程序选择软件包系列和具体软件包
2. 挂载根分区
3. 运行setup命令启动安装程序
4. 选择软件包系列和具体软件包
• 挂载根分区
• 运行setup命令启动安装程序
• 选择软件包系列和具体软件包
示例:挂载分区并启动安装程序
- # 挂载根分区
- mount /dev/sda1 /mnt
-
- # 启动安装程序
- setup
复制代码
1. 配置系统:安装LILO引导加载程序配置网络设置root密码和创建用户
2. 安装LILO引导加载程序
3. 配置网络
4. 设置root密码和创建用户
5. 完成安装:退出安装程序重启系统
6. 退出安装程序
7. 重启系统
配置系统:
• 安装LILO引导加载程序
• 配置网络
• 设置root密码和创建用户
完成安装:
• 退出安装程序
• 重启系统
安装完成后,需要进行一些基本配置:
1. 更新系统:
“`bash更新软件包列表slackpkg update
更新系统:
“`bash
slackpkg update
# 升级系统
slackpkg upgrade-all
- 2. **配置网络**:
- ```bash
- # 编辑网络配置文件
- vi /etc/rc.d/rc.inet1.conf
-
- # 设置IP地址、子网掩码和网关
- IPADDR[0]="192.168.1.100"
- NETMASK[0]="255.255.255.0"
- USE_DHCP[0]=""
- GATEWAY="192.168.1.1"
-
- # 重启网络服务
- /etc/rc.d/rc.inet1 restart
复制代码
1. 配置时区:# 设置时区
timeconfig
2. 添加用户:
“`bash添加新用户useradd -m -G users,wheel,audio,video -s /bin/bash username
配置时区:
添加用户:
“`bash
useradd -m -G users,wheel,audio,video -s /bin/bash username
# 设置用户密码
passwd username
- 5. **配置sudo**:
- ```bash
- # 安装sudo(如果未安装)
- slackpkg install sudo
-
- # 编辑sudoers文件
- visudo
-
- # 取消注释以下行,允许wheel组用户使用sudo
- %wheel ALL=(ALL) ALL
复制代码
日常系统管理
Slackware提供了多种工具来监控系统状态:
1. top:实时显示进程信息top
2. htop:top的增强版本(需要安装)htop
3. ps:显示当前进程
“`bash显示所有进程ps aux
top:实时显示进程信息
htop:top的增强版本(需要安装)
ps:显示当前进程
“`bash
ps aux
# 显示特定用户的进程
ps -u username
- 4. **free**:显示内存使用情况
- ```bash
- free -h
复制代码
1. df:显示磁盘空间使用情况df -h
2. du:显示目录或文件的磁盘使用情况
“`bash显示当前目录的磁盘使用情况du -sh .
df:显示磁盘空间使用情况
du:显示目录或文件的磁盘使用情况
“`bash
du -sh .
# 显示特定目录的磁盘使用情况
du -sh /path/to/directory
- #### 日志管理
- Slackware使用传统的文本日志文件,主要存储在`/var/log`目录中:
- 1. **系统日志**:
- - `/var/log/syslog`:系统消息
- - `/var/log/messages`:内核和系统消息
- - `/var/log/auth.log`:认证相关消息
- 2. **查看日志**:
- ```bash
- # 查看最近的系统消息
- tail -f /var/log/syslog
-
- # 查看特定日期的系统消息
- grep "Dec 10" /var/log/syslog
复制代码
1. 日志轮转:
Slackware使用logrotate工具管理日志轮转,配置文件在/etc/logrotate.conf和/etc/logrotate.d/目录中。
示例:配置日志轮转
- # 编辑logrotate配置文件
- vi /etc/logrotate.d/custom
-
- # 添加以下内容
- /var/log/custom.log {
- weekly
- rotate 4
- compress
- missingok
- notifempty
- create 640 root adm
- }
复制代码
定期备份是系统管理的重要部分。Slackware提供了多种备份工具和方法:
1. 使用tar备份:
“`bash备份整个系统tar -cvpzf backup.tar.gz –exclude=/backup.tar.gz –exclude=/proc –exclude=/tmp –exclude=/mnt –exclude=/dev –exclude=/sys /
使用tar备份:
“`bash
tar -cvpzf backup.tar.gz –exclude=/backup.tar.gz –exclude=/proc –exclude=/tmp –exclude=/mnt –exclude=/dev –exclude=/sys /
# 备份特定目录
tar -cvpzf home-backup.tar.gz /home
- 2. **使用rsync同步**:
- ```bash
- # 同步本地目录
- rsync -av --delete /source/ /destination/
-
- # 同步到远程服务器
- rsync -av --delete -e ssh /source/ user@remote:/destination/
复制代码
1. 使用dump和restore(适用于ext文件系统):
“`bash备份文件系统dump -0u -f /backup/root.dump /
使用dump和restore(适用于ext文件系统):
“`bash
dump -0u -f /backup/root.dump /
# 恢复文件系统
restore -rf /backup/root.dump
- 4. **创建系统快照**:
- ```bash
- # 安装timeshift(需要从源码编译或使用第三方包)
- # 创建快照
- timeshift --create --comments "Daily backup"
-
- # 恢复快照
- timeshift --restore
复制代码
在Slackware中,服务通过/etc/rc.d/目录下的脚本控制:
1. 启动服务:
“`bash启动Apache服务/etc/rc.d/rc.httpd start
启动服务:
“`bash
/etc/rc.d/rc.httpd start
# 启动MySQL服务
/etc/rc.d/rc.mysqld start
- 2. **停止服务**:
- ```bash
- # 停止Apache服务
- /etc/rc.d/rc.httpd stop
-
- # 停止MySQL服务
- /etc/rc.d/rc.mysqld stop
复制代码
1. 重启服务:
“`bash重启Apache服务/etc/rc.d/rc.httpd restart
重启服务:
“`bash
/etc/rc.d/rc.httpd restart
# 重启MySQL服务
/etc/rc.d/rc.mysqld restart
- 4. **设置服务开机自启**:
- ```bash
- # 使Apache服务开机自启
- chmod +x /etc/rc.d/rc.httpd
-
- # 禁止MySQL服务开机自启
- chmod -x /etc/rc.d/rc.mysqld
复制代码
软件包管理
slackpkg是Slackware的官方包管理工具,可以解决依赖关系:
1. 更新软件包列表:slackpkg update
2. 搜索软件包:slackpkg search package-name
3. 安装软件包:slackpkg install package-name
4. 卸载软件包:slackpkg remove package-name
5. 升级软件包:slackpkg upgrade package-name
6. 升级整个系统:slackpkg upgrade-all
7. 清理系统:
“`bash清理旧软件包slackpkg clean-system
更新软件包列表:
搜索软件包:
- slackpkg search package-name
复制代码
安装软件包:
- slackpkg install package-name
复制代码
卸载软件包:
- slackpkg remove package-name
复制代码
升级软件包:
- slackpkg upgrade package-name
复制代码
升级整个系统:
清理系统:
“`bash
slackpkg clean-system
# 清理临时文件
slackpkg clean
- #### 使用sbopkg管理第三方软件
- sbopkg是一个用于管理SlackBuilds.org第三方软件的工具:
- 1. **安装sbopkg**:
- ```bash
- # 从源码编译安装sbopkg
- # 下载sbopkg SlackBuild脚本和源码
- # 运行SlackBuild脚本
- # 安装生成的软件包
复制代码
1. 同步SlackBuilds仓库:sbopkg -r
2. 搜索软件:sbopkg -s package-name
3. 安装软件:sbopkg -i package-name
4. 批量安装软件:
“`bash创建队列文件echo “package1” > queuefile
echo “package2” >> queuefile
echo “package3” >> queuefile
同步SlackBuilds仓库:
搜索软件:
安装软件:
批量安装软件:
“`bash
echo “package1” > queuefile
echo “package2” >> queuefile
echo “package3” >> queuefile
# 使用队列文件安装软件
sbopkg -k queuefile
- #### 从源码编译安装软件
- 1. **下载源码**:
- ```bash
- wget http://example.com/source-code.tar.gz
复制代码
1. 解压源码:tar -xvzf source-code.tar.gz
cd source-code
2. 配置编译选项:./configure --prefix=/usr --sysconfdir=/etc
3. 编译软件:make
4. 安装软件:make install
5. 创建Slackware软件包(可选):# 使用checkinstall创建软件包
checkinstall
解压源码:
- tar -xvzf source-code.tar.gz
- cd source-code
复制代码
配置编译选项:
- ./configure --prefix=/usr --sysconfdir=/etc
复制代码
编译软件:
安装软件:
创建Slackware软件包(可选):
- # 使用checkinstall创建软件包
- checkinstall
复制代码
系统优化和故障排除
1. 内核优化:
“`bash安装内核源码slackpkg install kernel-source
内核优化:
“`bash
slackpkg install kernel-source
# 配置内核
cd /usr/src/linux
make menuconfig
# 编译和安装内核
make && make modules_install
cp arch/x86/boot/bzImage /boot/vmlinuz-custom
cp System.map /boot/System.map-custom
cp .config /boot/config-custom
# 更新LILO配置
vi /etc/lilo.conf
# 添加以下内容
image = /boot/vmlinuz-custom
- root = /dev/sda1
- label = Slackware-Custom
- read-only
复制代码
# 安装LILO
lilo
- 2. **文件系统优化**:
- ```bash
- # 检查文件系统
- fsck -f /dev/sda1
-
- # 调整文件系统参数
- tune2fs -o journal_data_writeback /dev/sda1
复制代码
1. 启动服务优化:# 禁用不必要的服务
chmod -x /etc/rc.d/rc.samba
chmod -x /etc/rc.d/rc.sendmail
2. 内存优化:# 调整swappiness参数
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p
启动服务优化:
- # 禁用不必要的服务
- chmod -x /etc/rc.d/rc.samba
- chmod -x /etc/rc.d/rc.sendmail
复制代码
内存优化:
- # 调整swappiness参数
- echo "vm.swappiness=10" >> /etc/sysctl.conf
- sysctl -p
复制代码
1. 系统无法启动:使用Live CD/USB启动挂载根分区检查和修复系统
2. 使用Live CD/USB启动
3. 挂载根分区
4. 检查和修复系统
• 使用Live CD/USB启动
• 挂载根分区
• 检查和修复系统
- # 挂载根分区
- mount /dev/sda1 /mnt
-
- # 检查文件系统
- fsck /dev/sda1
-
- # 重新安装LILO
- chroot /mnt
- lilo
- exit
复制代码
1. 网络问题:
“`bash检查网络接口状态ifconfig
网络问题:
“`bash
ifconfig
# 检查路由表
route -n
# 检查DNS解析
nslookup example.com
# 测试网络连接
ping example.com
- 3. **软件包问题**:
- ```bash
- # 检查软件包完整性
- slackpkg check
-
- # 重新安装软件包
- slackpkg reinstall package-name
-
- # 清理损坏的软件包
- slackpkg clean-system
复制代码
1. 日志分析:
“`bash查看系统日志tail -f /var/log/syslog
日志分析:
“`bash
tail -f /var/log/syslog
# 查看认证日志
tail -f /var/log/auth.log
# 查看特定服务的日志
tail -f /var/log/httpd/error_log
- ## 案例分析
- ### 案例一:搭建LAMP服务器
- 在这个案例中,我们将展示如何在Slackware上搭建一个LAMP(Linux、Apache、MySQL、PHP)服务器。
- #### 安装和配置Apache
- 1. **安装Apache**:
- ```bash
- # 安装Apache
- slackpkg install httpd
-
- # 创建网站目录
- mkdir -p /var/www/htdocs/example.com
-
- # 创建测试页面
- echo "<html><body><h1>It works!</h1></body></html>" > /var/www/htdocs/example.com/index.html
复制代码
1. 配置Apache:
“`bash编辑Apache配置文件vi /etc/httpd/httpd.conf
配置Apache:
“`bash
vi /etc/httpd/httpd.conf
# 修改以下设置
ServerAdmin admin@example.com
ServerName example.com:80
DocumentRoot “/var/www/htdocs/example.com”
# 启用虚拟主机(可选)
Include /etc/httpd/extra/httpd-vhosts.conf
- 3. **创建虚拟主机配置**:
- ```bash
- # 编辑虚拟主机配置文件
- vi /etc/httpd/extra/httpd-vhosts.conf
-
- # 添加以下内容
- <VirtualHost *:80>
- ServerAdmin admin@example.com
- DocumentRoot "/var/www/htdocs/example.com"
- ServerName example.com
- ErrorLog "/var/log/httpd/example.com-error_log"
- CustomLog "/var/log/httpd/example.com-access_log" common
- </VirtualHost>
复制代码
1. 启动Apache服务:
“`bash使Apache服务开机自启chmod +x /etc/rc.d/rc.httpd
启动Apache服务:
“`bash
chmod +x /etc/rc.d/rc.httpd
# 启动Apache服务
/etc/rc.d/rc.httpd start
- #### 安装和配置MySQL
- 1. **安装MySQL**:
- ```bash
- # 安装MySQL
- slackpkg install mysql
-
- # 初始化MySQL数据库
- mysql_install_db --user=mysql
复制代码
1. 配置MySQL:
“`bash编辑MySQL配置文件vi /etc/my.cnf
配置MySQL:
“`bash
vi /etc/my.cnf
# 修改以下设置(可选)
[mysqld]
datadir=/var/lib/mysql
socket=/var/run/mysql/mysql.sock
user=mysql
# 设置默认字符集
character-set-server=utf8
collation-server=utf8_general_ci
- 3. **启动MySQL服务**:
- ```bash
- # 使MySQL服务开机自启
- chmod +x /etc/rc.d/rc.mysqld
-
- # 启动MySQL服务
- /etc/rc.d/rc.mysqld start
-
- # 设置root密码
- mysqladmin -u root password 'new-password'
复制代码
1. 安全配置:# 运行安全安装脚本
mysql_secure_installation
安全配置:
- # 运行安全安装脚本
- mysql_secure_installation
复制代码
1. 安装PHP:# 安装PHP和必要的扩展
slackpkg install php php-mysql php-gd php-mbstring
2. 配置PHP:
“`bash编辑PHP配置文件vi /etc/php.ini
安装PHP:
- # 安装PHP和必要的扩展
- slackpkg install php php-mysql php-gd php-mbstring
复制代码
配置PHP:
“`bash
vi /etc/php.ini
# 修改以下设置
date.timezone = “Asia/Shanghai”
upload_max_filesize = 20M
post_max_size = 20M
memory_limit = 128M
- 3. **配置Apache以支持PHP**:
- ```bash
- # 编辑Apache配置文件
- vi /etc/httpd/httpd.conf
-
- # 确保以下行未被注释
- LoadModule php7_module /usr/lib/httpd/modules/libphp7.so
- AddHandler application/x-httpd-php .php
- Include /etc/httpd/mod_php.conf
复制代码
1. - 测试PHP:
- “`bash创建PHP测试页面echo “<?php phpinfo(); ?>” > /var/www/htdocs/example.com/info.php
复制代码
测试PHP:
“`bash
echo “<?php phpinfo(); ?>” > /var/www/htdocs/example.com/info.php
# 重启Apache服务
/etc/rc.d/rc.httpd restart
- #### 验证LAMP服务器
- 1. **测试Apache**:
- 在浏览器中访问`http://example.com`,应该看到"It works!"页面。
- 2. **测试PHP**:
- 在浏览器中访问`http://example.com/info.php`,应该看到PHP信息页面。
- 3. **测试MySQL连接**:
- ```bash
- # 创建PHP测试脚本
- cat > /var/www/htdocs/example.com/testdb.php << 'EOF'
- <?php
- $conn = mysqli_connect("localhost", "root", "password");
- if (!$conn) {
- die("Connection failed: " . mysqli_connect_error());
- }
- echo "Connected to MySQL successfully!";
- mysqli_close($conn);
- ?>
- EOF
-
- # 在浏览器中访问测试脚本
- # http://example.com/testdb.php
复制代码
案例二:配置防火墙和网络安全
在这个案例中,我们将展示如何在Slackware上配置防火墙和增强系统安全性。
1. 安装iptables:# 安装iptables
slackpkg install iptables
2. 创建防火墙脚本:
“`bash创建防火墙脚本vi /etc/rc.d/rc.firewall
安装iptables:
- # 安装iptables
- slackpkg install iptables
复制代码
创建防火墙脚本:
“`bash
vi /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 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
# 允许ICMP(ping)
iptables -A INPUT -p icmp –icmp-type echo-request -j ACCEPT
# 记录被拒绝的连接
iptables -A INPUT -j LOG –log-prefix “iptables denied: “
# 保存规则
iptables-save > /etc/iptables/rules.v4
- 3. **使脚本可执行**:
- ```bash
- chmod +x /etc/rc.d/rc.firewall
复制代码
1. 启动防火墙:/etc/rc.d/rc.firewall
2. 使防火墙开机自启:
“`bash编辑rc.local文件vi /etc/rc.d/rc.local
启动防火墙:
使防火墙开机自启:
“`bash
vi /etc/rc.d/rc.local
# 添加以下内容
if [ -x /etc/rc.d/rc.firewall ]; then
fi
- #### 配置fail2ban防止暴力破解
- 1. **安装fail2ban**:
- ```bash
- # 从源码编译安装fail2ban
- # 下载fail2ban SlackBuild脚本和源码
- # 运行SlackBuild脚本
- # 安装生成的软件包
复制代码
1. 配置fail2ban:
“`bash复制配置文件cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
配置fail2ban:
“`bash
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# 编辑配置文件
vi /etc/fail2ban/jail.local
# 修改以下设置
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
[apache-auth]
enabled = true
port = http,https
logpath = /var/log/httpd/error_log
- 3. **启动fail2ban服务**:
- ```bash
- # 创建fail2ban启动脚本
- cat > /etc/rc.d/rc.fail2ban << 'EOF'
- #!/bin/sh
-
- # Start/stop/restart fail2ban
- fail2ban_start() {
- echo "Starting fail2ban..."
- /usr/bin/fail2ban-client start
- }
-
- fail2ban_stop() {
- echo "Stopping fail2ban..."
- /usr/bin/fail2ban-client stop
- }
-
- fail2ban_restart() {
- fail2ban_stop
- sleep 1
- fail2ban_start
- }
-
- case "$1" in
- 'start')
- fail2ban_start
- ;;
- 'stop')
- fail2ban_stop
- ;;
- 'restart')
- fail2ban_restart
- ;;
- *)
- echo "usage $0 start|stop|restart"
- esac
- EOF
-
- # 使脚本可执行
- chmod +x /etc/rc.d/rc.fail2ban
-
- # 启动fail2ban服务
- /etc/rc.d/rc.fail2ban start
复制代码
1. 使fail2ban开机自启:
“`bash编辑rc.local文件vi /etc/rc.d/rc.local
使fail2ban开机自启:
“`bash
vi /etc/rc.d/rc.local
# 添加以下内容
if [ -x /etc/rc.d/rc.fail2ban ]; then
- /etc/rc.d/rc.fail2ban start
复制代码
fi
- #### 配置SSH安全
- 1. **编辑SSH配置文件**:
- ```bash
- vi /etc/ssh/sshd_config
复制代码
1. 修改以下设置:
“`bash禁止root登录PermitRootLogin no
修改以下设置:
“`bash
PermitRootLogin no
# 更改SSH端口
Port 2222
# 禁止空密码
PermitEmptyPasswords no
# 仅允许特定用户
AllowUsers user1 user2
# 使用Protocol 2
Protocol 2
# 禁用DNS查询
UseDNS no
- 3. **重启SSH服务**:
- ```bash
- /etc/rc.d/rc.sshd restart
复制代码
1. 更新系统:slackpkg update
slackpkg upgrade-all
2. 安装安全工具:slackpkg install rkhunter clamav
3. 配置rkhunter:
“`bash更新rkhunter数据库rkhunter –update
rkhunter –propupd
更新系统:
- slackpkg update
- slackpkg upgrade-all
复制代码
安装安全工具:
- slackpkg install rkhunter clamav
复制代码
配置rkhunter:
“`bash
rkhunter –update
rkhunter –propupd
# 运行系统检查
rkhunter –checkall
- 4. **配置ClamAV**:
- ```bash
- # 更新病毒数据库
- freshclam
-
- # 扫描系统
- clamscan -r -i --exclude-dir=/sys --exclude-dir=/proc /
复制代码
1. 配置自动安全更新:
“`bash创建安全更新脚本cat > /usr/local/bin/security-update << ‘EOF’
#!/bin/sh
配置自动安全更新:
“`bash
cat > /usr/local/bin/security-update << ‘EOF’
#!/bin/sh
# 更新软件包列表
/usr/sbin/slackpkg update
# 检查安全更新
/usr/sbin/slackpkg install-new
/usr/sbin/slackpkg upgrade-all
# 更新病毒数据库
/usr/bin/freshclam
# 更新rkhunter数据库
/usr/bin/rkhunter –update
/usr/bin/rkhunter –propupd
# 发送邮件通知(可选)
echo “Security update completed on $(date)” | mail -s “Security Update” admin@example.com
EOF
# 使脚本可执行
chmod +x /usr/local/bin/security-update
# 添加到cron
echo “0 2 * * 0 /usr/local/bin/security-update” > /var/spool/cron/crontabs/root
“`
结论
通过深入探索Slackware官方文档,我们不仅了解了这一最古老Linux发行版的核心技术,还掌握了实用的系统管理技巧。Slackware的简洁性和透明性使其成为学习Linux系统内部工作原理的理想平台。
Slackware的设计哲学——让用户完全控制自己的系统——要求我们更深入地理解系统的每个组件。这种理解不仅适用于Slackware,也适用于其他Linux发行版,甚至是其他Unix-like系统。通过学习Slackware,我们获得了宝贵的知识和技能,这些知识和技能可以帮助我们成为更优秀的系统管理员。
无论是包管理、系统配置、服务管理还是安全加固,Slackware都提供了直接而透明的方式。虽然这可能需要更多的手动操作和更深入的理解,但正是这种直接性和透明性使我们能够真正掌握系统管理的核心技能。
总之,深入探索Slackware官方文档并实践其中的技术和技巧,是提升Linux系统管理能力的有效途径。无论您是Linux新手还是有经验的系统管理员,Slackware都能为您提供宝贵的学习机会和实践平台。 |
|