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地址等参数。
如果修改别的选项,则还涉及:
- /etc/HOSTNAME
- /etc/hosts
- /etc/networks
- /etc/resolv.conf
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地址,以方便物理机和所有虚拟机的交互:
- vmnet0,bridge -> eth0
- vmnet1,host-only,10.10.10.199
- vmnet2,host-only,10.10.20.199
- vmnet3,host-only,172.16.0.199
- vmnet4,host-only,10.20.10.199
- vmnet5,host-only,10.20.20.199
- vmnet6,host-only,172.17.0.199
- vmnet7,host-only,192.168.0.199
- vmnet8,host-only,192.168.1.199
- vmnet9,host-only,172.18.0.199
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"配置:
- 隐藏标签;
- 设置字体:DejaVu Sans Mono,bold,12;
- 大小:80X24;
- 方案:Linux颜色。
接着增加"Root"配置:
- 命令行:su -
- 方案:浅黄背景黑字。
在"系统"菜单增加一项:
- 名称:Konsole root
- 描述:终端 - 超级用户
- 命令:konsole --profile 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