Duangw

Slackware 13.0

 

主要内容:基本配置X和本地化应用软件网络服务普通用户

 

1 基本配置

1.1 初始安装

选择所有软件包,进行全部安装。

使用ext4文件系统。

不安装引导管理器。

配置网络。

启动服务:rc.fuse、rc.hald、rc.messagebus、rc.syslog和rc.sshd。

 

1.2 引导配置

这里Slackware是通过别的系统上的grub来进行引导的。在Slackware下安装grub来负责多重系统引导的方法见:Grub多重引导

编辑grub所在系统的menu.lst,增加Slackware的启动项。

32位版本:

title Slackware 13.0 (2.6.29.6-huge-smp)
        root (hd0,2)
        kernel /boot/vmlinuz-huge-smp-2.6.29.6-smp ro root=/dev/sda3

64位版本:

title Slackware64 13.0 (2.6.29.6-huge)
        root (hd1,2)
        kernel /boot/vmlinuz-huge-2.6.29.6 ro root=/dev/sdb3

 

1.3 切换为generic内核

制作initrd:

# cd /boot
# mkinitrd -c -m ext4

编辑grub所在系统的menu.lst,增加启动项。

32位版本:

title Slackware 13.0 (2.6.29.6-generic-smp)
        root (hd0,2)
        kernel /boot/vmlinuz-generic-smp-2.6.29.6-smp ro root=/dev/sda3
        initrd /boot/initrd.gz

64位版本:

title Slackware64 13.0 (2.6.29.6-generic)
       root (hd1,2)
       kernel /boot/vmlinuz-generic-2.6.29.6 ro root=/dev/sdb3
       initrd /boot/initrd.gz

重新启动。

 

1.4 安装补丁

一般来说,安装一个系统并不总是在该系统刚刚发布之时,此时可能已经有一些补丁程序。新系统的第一步就是安装这些补丁,填补发现的漏洞。

选择一个速度快的镜像站点下载补丁程序(32位是slackware-13.0/patches/packages,64位是slackware64-13.0/patches/packages),在安装系统之前先准备好(如果有的话)。

进入补丁所在目录,更新:

# upgradepkg *.txz

以上是一般操作步骤。有些特殊补丁会有额外的操作,根据安全公告的描述进行相应处理。

:我一般用lftp在本地建立一个补丁包镜像,供本地所有系统使用,以避免重复下载。以32位为例:

duangw@slackware:~/ftp/slackware$ cat mirror-13.0.sh
lftp -e "mirror -ner slackware-13.0; \
        cd slackware-13.0;           \
        lcd slackware-13.0;          \
        mirror -ne patches;          \
        bye"                         \
http://slackware.cs.utah.edu/

通过关注Slackware的ChangeLogs,或订阅邮件列表,来了解更新动态。

 

1.5 编译内核(只针对32位版本)

当前的32位内核配置只能使用3G内存,为了识别全部4G内存,需要打开内核的PAE选项。同时将CPU类型设置为AMD64,以打开一些相关特性。

内核配置基于generic-smp版本:

# cd /usr/src/linux
# make mrproper
# cp /boot/config-generic-smp-2.6.29.6-smp .config
# make menuconfig

几个选项设置:

(1).为了与原来的内核文件区别,增加-PAE后缀:

General setup  ---> 
	(-smp-pae) Local version - append to kernel release 

(2).设置CPU类型和PAE:

Processor type and features  --->
	Processor family (Opteron/Athlon64/Hammer/K8)  --->
	High Memory Support (64GB)  --->

编译安装:

# make
# make modules_install
# cp System.map /boot/System.map-generic-smp-2.6.29.6-smp-pae
# cp .config /boot/config-generic-smp-2.6.29.6-smp-pae
# cd arch/x86/boot
# cp bzImage /boot/vmlinuz-generic-smp-2.6.29.6-smp-pae

制作initrd:

# cd /boot
# mkinitrd -c -k 2.6.29.6-smp-pae -m ext4

编辑grub所在系统的menu.lst,增加新内核的启动项:

title Slackware 13.0 (2.6.29.6-generic-smp-pae)
        root (hd0,2)
        kernel /boot/vmlinuz-generic-smp-2.6.29.6-smp-pae ro root=/dev/sda3
        initrd /boot/initrd.gz

重新启动。

 

1.6 检查网络设置

在初始安装时进行了网络配置,这样可以省很多功夫。

由于是多网卡机器,需要查看udev配置文件/etc/udev/rules.d/70-persistent-net.rule,确保网卡编号的正确。

编辑/etc/rc.d/rc.inet1.conf,配置其余网卡的IP地址等参数。

如果修改别的选项,则还涉及:

 

1.7 挂载分区

创建挂载点:

# mkdir /pub

编辑/etc/fstab,增加:

/dev/sda7  /pub       ext3     defaults                 1   2
/dev/sdb8  /pub/ext3  ext3     defaults                 1   3
/dev/hda2  /pub/ext3b ext3     defaults                 1   4
/dev/sda5  /pub/fat   vfat     defaults,fmask=133,utf8  0   0
/dev/sda6  /pub/ntfs  ntfs-3g  defaults,umask=022,fmask=133,locale=zh_CN.UTF-8  0   0

这里取消了FAT分区和NTFS分区中的文件的执行权限,体现在fmask参数上。

NTFS分区的读写采用ntfs-3g工具来处理,由于ntfs-3g缺省的文件掩码为0,不像FAT自动继承用户的umask设置,所以增加了umask选项。

此外,两者都采用UTF-8编码。

 

1.8 配置防火墙脚本

有关各个iptables脚本的详细内容见:Iptables脚本

这里使用客户机脚本rc.iptables-client.ref:

# cp /ftp/custom/rc.iptables-client.ref /etc/rc.d/rc.iptables
# cp /ftp/custom/rc.ip6tables.ref /etc/rc.d/rc.ip6tables
# chmod +x /etc/rc.d/rc.iptables
# chmod +x /etc/rc.d/rc.ip6tables

修改/etc/rc.d/rc.S文件,在末尾添加模板rc.S.ref的内容。

 

1.9 设置内核参数

有关脚本的详细内容见:Sysctl脚本

# cp /ftp/custom/rc.sysctl.ref /etc/rc.d/rc.sysctl
# chmod +x /etc/rc.d/rc.sysctl

编辑/etc/rc.d/rc.M,将模板rc.M.ref内容加入到rc.inet2的前面。

 

1.10 建立普通用户

将用户添加到audio、cdrom和plugdev组,以便能使用声卡、K3B和u盘等设备:

# useradd -m -s /bin/bash -G audio,cdrom,plugdev duangw
# passwd duangw

 

1.11 启用multilib支持(只针对64位版本)

启用multilib,以便能运行一些32位程序。所有信息均参考自Eric Hameleers (Alien BOB)'s Wiki:Multilib Slackware for x86_64

http://connie.slackware.com/~alien/multilib/13.0/获得multilib版本的gcc、glibc和compat32-tools,自己编译过于麻烦。

初始安装过程:

# cd ~/ftp/slackware/slackware64-multilib/13.0
# upgradepkg --reinstall --install-new *.t?z
# mkdir compat32
# cd compat32
# massconvert32.sh -i ~ftp/slackware/slackware-13.0/slackware/
# installpkg *-compat32/*.t?z

随着时间的推移,有些转换的软件包可能会有安全补丁(在patches/packages目录下),此时,这些补丁包也需要转换升级。这里参照massconvert32.sh脚本写了一个patchesconvert32.sh,以完成这部分工作:

# cd ~/ftp/slackware/slackware64-multilib/13.0
# mkdir patches
# cd patches
# patchesconvert32.sh -i ~/ftp/slackware/slackware-13.0/patches/packages
# upgradepkg *.t?z

重装nvidia闭源驱动,以增加32位的驱动支持。先卸载之前安装的驱动:

# nvidia-switch --cleanup
# removepkg nvidia-driver-185.18.31-x86_64-1_SBo
# removepkg nvidia-kernel-185.18.31_2.6.29.6-x86_64-1_SBo

安装新驱动:

# sh NVIDIA-Linux-x86_64-190.53-pkg2.run

当提示是否安装32位驱动时,选择yes。

 

 

2 X和本地化

2.1 配置Xwindow

虽然新版的xorg可以不需要xorg.conf配置文件,不过在我的机器上不行。

执行xorgsetup,一切都按缺省值,生成一个初始的xorg.conf:

# xorgsetup

 

2.2 安装Nvidia显卡驱动

从Nvidia官方网站www.nvidia.com下载Linux驱动。

这里使用slackbuilds.org提供的脚本来制作驱动安装包。以32位为例:

# cd /sources
# tar xzvf nvidia-driver.tar.gz
# tar xzvf nvidia-kernel.tar.gz
# cd nvidia-driver
# cp /pub/downloads/NVIDIA-Linux-x86-185.18.31-pkg0.run .
# ./nvidia-driver.SlackBuild
# cd ../nvidia-kernel
# mv ../nvidia-driver/NVIDIA-Linux-x86-185.18.31-pkg0.run .
# ./nvidia-kernel.SlackBuild

安装:

# cd /tmp
# installpkg nvidia-driver-185.18.31-x86-1_SBo.tgz
# installpkg nvidia-kernel-185.18.31_2.6.29.6_smp_pae-x86-1_SBo.tgz

更新xorg.conf:

# nvidia-xconfig

64位的制作方法类似,只需要在编译之前调整一下脚本中的架构设置:

ARCH=${ARCH:-x86_64}

 

 

3 应用软件

3.1 安装Adobe flash-player-plugin

http://www.adobe.com获得二进制安装包install_flash_player_10_linux.tar.gz。

slackbuilds.org获得编译脚本。

# cd /sources
# tar xzvf flash-player-plugin.tar.gz
# cd flash-player-plugin/
# cp /pub/downloads/install_flash_player_10_linux.tar.gz .
# ./flash-player-plugin.SlackBuild
# cd /tmp
# installpkg flash-player-plugin-10.0_r32-i386-1_SBo.tgz

64位的制作方法类似,只需要在编译之前调整一下脚本中的架构设置:

ARCH=${ARCH:-x86_64}

 

3.2 安装kchmviewer

从kchmviewer主页www.kchmviewer.net下载kchmviewer-4.0.tar.gz。

slackbuilds.org获得编译脚本。

# cd /sources
# tar xzvf kchmviewer.tar.gz
# cd kchmviewer
# cp /pub/software/kchmviewer/kchmviewer-4.0.tar.gz .
# ./kchmviewer.SlackBuild
# cd /tmp
# installpkg kchmviewer-4.0-i486-1_SBo.tgz

64位的制作方法类似,只需要在编译之前调整一下脚本中的架构设置:

ARCH=${ARCH:-x86_64}

 

3.3 安装bluefish编辑器

http://bluefish.openoffice.nl下载bluefish-1.0.7.tar.bz2。

slackbuilds.org获得编译脚本。

# cd /sources
# tar xzvf bluefish.tar.gz
# cd bluefish
# cp /pub/downloads/bluefish-1.0.7.tar.bz2 .
# ./bluefish.SlackBuild
# cd /tmp
# installpkg bluefish-1.0.7-i486-1_SBo.tgz

64位的制作方法类似,只需要在编译之前调整一下脚本中的架构设置:

ARCH=${ARCH:-x86_64}

 

3.4 安装OpenOffice.org

从OpenOffice.org网站openoffice.org获得二进制安装包OOo_3.1.0_LinuxIntel_install_zh-cn.tar.gz。

slackbuilds.org获得编译脚本。

# cd /sources
# tar xzvf openoffice.org.tar.gz
# cd openoffice.org/
# cp /pub/downloads/OOo_3.1.0_LinuxIntel_install_zh-cn.tar.gz .

调整脚本的语言设置(改为中文):

OOLANG=${OOLANG:-zh-cn}

制作安装:

# ./openoffice.org.SlackBuild
# cd /tmp
# installpkg openoffice.org-3.1.0_zh_cn-i586-5_SBo.tgz

64位的制作方法类似,只需要在编译之前调整一下脚本中的架构设置:

ARCH=${ARCH:-x86_64}

 

3.5 安装电子辞典

qstardict.ylsoftware.com获得源代码包qstardict-0.12.9.tar.bz2。

slackbuilds.org获得编译脚本。

# cd /sources
# tar xzvf qstardict.tar.gz
# cd qstardict
# cp /pub/downloads/qstardict-0.12.9.tar.bz2 .
# ./qstardict.SlackBuild
# cd /tmp
# installpkg qstardict-0.12.9-i486-3_SBo.tgz

注:词库需要另外安装。

64位的制作方法类似,只需要在编译之前调整一下脚本中的架构设置:

ARCH=${ARCH:-x86_64}

 

3.6 安装Texlive2008

安装:

# mount -o loop texlive2008-20080822.iso /mnt
# cd /mnt
# ./install-tl

采用缺省方式,完全安装。

这里不进行配置,而是留给需要的用户进行。

 

3.7 安装VMware(amd64机器)

从VMware官方网站www.vmware.com获得30天的试用序列号和软件包VMware-Workstation-6.5.3-185404.i386.bundle。

安装:

# sh VMware-Workstation-6.5.3-185404.i386.bundle
# cd /etc/rc.d/rc4.d
# ln -s ../init.d/vmware S19vmware
# ln -s ../init.d/vmware K08vmware

以root运行“Virtual Network Editor”,配置10块虚拟网卡。除vmnet0为桥接外,vmnet1到vmnet9均为host-only。关闭nat和dhcp服务。设置IP地址,以方便物理机和所有虚拟机的交互:

64位的安装方法类似。

 

3.8 安装旧版k3b

新版本的k3b有些问题,改用旧版本的(以slackware64-13.0为例):

# cd ~/ftp/slackware/slackware64-13.0/extra/kde3-compat
# installpkg qt3-3.3.8b-x86_64-opt2.txz
# installpkg kdelibs3-3.5.10-x86_64-opt1.txz
# installpkg k3b3-1.0.5-x86_64-opt1.txz

 

3.9 安装smplayer

http://smplayer.sourceforge.net下载smplayer-0.6.8.tar.bz2。

slackbuilds.org获得编译脚本。

# cd /sources
# tar xzvf smplayer.tar.gz
# cd smplayer
# cp /pub/downloads/smplayer-0.6.8.tar.bz2 .
# cp /pub/downloads/smplayer-themes-0.1.19.tar.bz2 .
# cp /pub/downloads/smplayer-themes-nonfree-0.1.1.tar.bz2 .
# ./smplayer.SlackBuild
# cd /tmp
# installpkg smplayer-0.6.8-i486-2_SBo.tgz

64位的制作方法类似,只需要在编译之前调整一下脚本中的架构设置:

ARCH=${ARCH:-x86_64}

 

 

4 网络服务

4.1 配置ftp服务

编辑/etc/vsftpd.conf,允许普通用户有写权限:

local_enable=YES
write_enable=YES

编辑/etc/inetd.conf, 打开vsftp,取消其他所有服务。

允许执行rc.inetd:

# cd /etc/rc.d
# chmod +x rc.inetd

启动inetd:

# /etc/rc.d/rc.inetd start

编辑防火墙脚本/etc/rc.d/rc.iptables,允许ftp:

iptables -A INPUT -p tcp --dport ftp -m state --state NEW -j ACCEPT

 

4.2 配置http服务

允许执行rc.httpd:

# cd /etc/rc.d
# chmod +x rc.httpd

启动httpd:

# /etc/rc.d/rc.httpd start

编辑防火墙脚本/etc/rc.d/rc.iptables,允许http:

iptables -A INPUT -p tcp --dport http -m state --state NEW -j ACCEPT

 

4.3 配置tftp服务

这里配置tftp和下面的dhcp服务,是为了给虚拟机提供网卡PXE启动服务,所有信息来自官方文档README_PXE.TXT。

编辑/etc/inetd.conf, 打开tftp:

tftp dgram udp wait root /usr/sbin/in.tftpd in.tftpd -s /pub/ext4b/tftpboot -r blksize

拷贝必要的文件:

# mkdir /pub/ext4b/tftpboot
# cd /pub/ext4b/tftpboot
# mkdir slackware64-13.0
# cd slackware64-13.0
# mkdir pxelinux.cfg
# cp /usr/lib/syslinux/pxelinux.0 .
# cp ~/ftp/slackware/slackware64-13.0/isolinux/message.txt .
# cp ~/ftp/slackware/slackware64-13.0/isolinux/f2.txt .
# cp ~/ftp/slackware/slackware64-13.0/isolinux/initrd.img .
# cp ~/ftp/slackware/slackware64-13.0/usb-and-pxe-installers/pxelinux.cfg_default pxelinux.cfg/default
# cp -a ~/ftp/slackware/slackware64-13.0/kernels .

编辑防火墙脚本/etc/rc.d/rc.iptables,允许tftp:

iptables -A INPUT -p udp --dport tftp -m state --state NEW -j ACCEPT

 

4.4 配置dhcpd服务

建立/etc/dhcpd.conf文件:

# dhcpd.conf
#
# Configuration file for ISC dhcpd
#
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;
ddns-update-style none;

# Allow bootp requests
allow bootp;

# Point to the TFTP server:
next-server 172.18.0.199;

# Default lease is 1 week (604800 sec.)
default-lease-time 604800;
# Max lease is 4 weeks (2419200 sec.)
max-lease-time 2419200;

subnet 172.18.0.0 netmask 255.255.255.0 {
    option domain-name "outer.net";
    option broadcast-address 172.18.0.255;
    option subnet-mask 255.255.255.0;
    option domain-name-servers 172.31.0.199;
    option routers 172.18.0.1;
    range dynamic-bootp 172.18.0.100 172.18.0.200;
    use-host-decl-names on;
    if substring (option vendor-class-identifier, 0, 9) = "PXEClient" {
      filename "/slackware64-13.0/pxelinux.0";
    }
}

建立/etc/rc.d/rc.dhcpd脚本,内容拷贝自README_PXE.TXT。

允许执行rc.dhcpd:

# chmod +x /etc/rc.d/rc.dhcpd

执行:

# /etc/rc.d/rc.dhcpd start

 

4.5 配置rsync服务

建立/etc/rsyncd.conf配置文件:

# rsyncd.conf - Example file, see rsyncd.conf(5)
#

# Set this if you want to stop rsync daemon with rc.d scripts
pid file = /var/run/rsyncd.pid

# Edit this file before running rsync daemon!!

uid = nobody
gid = nogroup

use chroot = yes
max connections = 4
syslog facility = local5

[ftp]
        path = /pub/ext4b/ftp/pub
        comment = whole ftp area

基本上是最简单的配置了。

这里使用inetd来启动rsync服务。编辑/etc/inetd.conf, 添加:

rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon

编辑防火墙脚本/etc/rc.d/rc.iptables,允许rsync:

iptables -A INPUT -p tcp --dport rsync -m state --state NEW -j ACCEPT

 

 

5 普通用户

5.1 设置locale

编辑.profile,增加:

export LANG=zh_CN.UTF-8

 

5.2 配置Terminal终端

设置字体:DejaVu Sans Mono,book,12。

允许粗体字。

颜色设置为白底黑字。

选择将命令作为login shell执行。

 

5.3 配置Konsole

编辑"Shell"配置:

接着增加"Root"配置:

在"系统"菜单增加一项:

 

5.4 配置Firefox

从“Tools“菜单选择“add-ons“,安装DownThemAll插件。

从旧系统中导入书签。

 

5.5 配置Texlive2008

编辑.profile,添加:

export PATH=/usr/local/texlive/2008/bin/i386-linux:$PATH
export MANPATH=/usr/local/texlive/2008/texmf/doc/man:$MANPATH
export INFOPATH=/usr/local/texlive/2008/texmf/doc/info:$INFOPATH

64位路径是:

export PATH=/usr/local/texlive/2008/bin/x86_64-linux:$PATH
export MANPATH=/usr/local/texlive/2008/texmf/doc/man:$MANPATH
export INFOPATH=/usr/local/texlive/2008/texmf/doc/info:$INFOPATH

 

5.6 配置scim(kde)

建立脚本~/.kde/Autostart/scim.sh:

#!/bin/bash
if [ -x /usr/bin/scim ]; then
  /usr/bin/scim -d &
fi

使脚本可执行:

$ chmod +x scim.sh