定制PXE Live系统

现在已经有上百中Linux发行版,很多发行版都提供了通过PXE启动的Live系统。在科大校园网网络启动服务上,我们部署了很多发行版的Live系统,例如Ubuntu、Debian、Deepin、BackTrack、Knoppix等,既给一些需要维护系统的同学带来了极大的便利,也使得那些未接触过Linux的同学可以“无痛”体验各发行版,并决定哪一款发行版更符合自己的口味。然而,随着校园网的发展,大家的需求也变得更加多样化。各发行版的Linux系统已经不能满足大家的需求,因此我们需要自己定制一些系统,以满足在学校中各个场合的需求。

发行版Live系统的限制

发行版提供的Live系统具有这些限制:

  1. 数据易失。Live系统启动后所有的修改都保存在内存中,重启系统后所有修改都丢失了。
  2. 预装软件少。Live系统只预装了很少的软件,不足以日常办公的需求,即使作为体验系统也偏少

各使用场合的需求

目前在校园网中,大家对系统的需求有这些:

  1. 体验系统。对于Linux新手,要决定是否使用一个系统,一次体验是不够的,需要长期的使用,因此需要能够保存一些对系统的修改,如新装的软件、修改的配置文件、一些用户数据
  2. 公共机房的系统,需要安装所有常用的软件
  3. 个人移动办公使用的系统,需要能够将一些个人数据存放在网络上

因此,我们希望能够定自己定制Live系统,以满足各使用场合的需求。

使用Debian Live定制系统

在各发行版中,Debian提供了定制Live系统的工具,Debian LiveDebian Live的文档中有非常详细的介绍。简化后的步骤为:

sudo apt-get install live-build
mkdir live-system && cd live-system
lb config
sudo lb build

其中,在config前可以自己修改config脚本来对Live系统的一些属性进行定制,例如Live的类型(ISO/PXE/HDD等)、Live系统使用的源、安装的软件等。在build系统之后也可以chroot到目标系统中进行进一步的定制。这篇文章中有一个稍微详细的定制步骤。使用live build可以定制debian,也可以定制ubuntu。

然而,这个方法仍然比较麻烦,定制者需要完全从头定制一个系统,并且不能复用一些其他人已经定制过的系统。因此我们推荐选择一个最接近使用需求的系统,在这个系统的基础之上进行进一步定制,而定制步骤也会简洁很多。

基于Linux Deepin定制Live系统

通过观察容易发现,Ubuntu, Deepin, BackTrack等Live系统都使用相似的方法进行封装,因此基于这些系统进行定制的方法基本相同。而Deepin的中国本地化做的最好,也最接近校园网中的各种需求,因此我们选择基于该系统进行定制。

首先观察一下这个Live系统的结构:

$ ls -R
.:
casper  DeepWin.exe  isolinux  md5sum.txt  preseed  README.diskdefines

./casper:
filesystem.manifest  filesystem.manifest-desktop  filesystem.size  filesystem.squashfs  initrd.lz  vmlinuz

./isolinux:
back.jpg  boot.cat  deepin  gfxboot.cfg  isolinux.bin  isolinux.cfg  menu.cfg  stdmenu.cfg  text.cfg

./preseed:
deepin.seed

其中最重要的三个文件是位于casper目录下的vmlinuzinitrd.lzfilesystem.squashfsvmlinuzinitrd.lz分别是启动是使用的内核和initrd文件,在系统启动之后,会通过NFS挂载位于服务器上的这个ISO的根目录,然后挂载filesystem.squashfs,接着使用aufsfilesystem.squashfs一段内存挂载为根目录,这段内存空间做为aufs的写分支。

由此可知,我们要定制系统,只需要对这个filesystem.squashfs修改并重新打包即可。下面就开始对这个文件修改并打包。

首先挂载这个文件系统,复制一份,并chroot到这个系统环境中:

sudo mount -o loop -t squashfs filesystem.squashfs /mnt/
sudo cp -ar /mnt/ ~/filesystem/
sudo umount /mnt/
sudo mount -o bind /dev/ ~/filesystem/dev/
sudo mount -t proc procfs ~/filesystem/proc/
sudo cp /etc/resolv.conf ~/filesystem/etc/
sudo chroot ~/filesystem/ /bin/bash

此时,我们就已经在这个系统中了,我们可以按照我们的需求对系统进行任意的定制了。注意,直到文中提到退出chroot环境前,所有的命令都是在chroot中完成的。我们在科大,当然首先将sources.list修改为使用科大的源了:

sed -i 's/cn.archive.ubuntu.com/debian.ustc.edu.cn/g' /etc/apt/sources.list
sed -i 's#packages.deepin.org#debian.ustc.edu.cn/deepin#g' /etc/apt/sources.list.d/deepin.list
sed -i 's#packages.linuxmint.com#debian.ustc.edu.cn/linuxmint#g' mint.list
apt-get update

这篇文章里我们仅做演示用,所以不打算进行太多的定制,仅演示安装一个新的软件:

apt-get install vim

OK,定制完成啦!我们来重新封装文件系统。首先,退出chroot环境,并且卸载procdev文件系统。

exit
sudo umount ~/filesystem/proc/
sudo umount ~/filesystem/dev/

然后封装squashfs文件系统:

mv filesystem.squashfs old-filesystem.squashfs
sudo mksquashfs/ filesystem.squashfs

将新生成的filesystem.squashfs放到原来的位置,并将整个目录通过NFS导出。

这篇文章中将不介绍如何通过PXE启动这个系统,其方法与Ubuntu相同,网上有详细的教程。下一篇文章中,我们将会介绍如何进一步定制这个系统,在开机时,自动挂载科大提供给每个学生的300M FTP空间为HOME目录,文章中会稍微详细的介绍如何设置PXE服务器启动该系统。尽请期待!

原创文章,转载请注明: 转载自Linux User Group @USTC

本文链接地址: 定制PXE Live系统

Fwd: 读书笔记:关于维护服务器的一些技巧

Original link: http://lug.ustc.edu.cn/wiki/blog/2011-winter-reading-notes

寒假读了三本书《LINUX SERVER HACKS 卷二》《实战Nginx:取代Apache的高性能Web服务器》《Linux服务器性能调整》,简单地了解了些linux服务器维护和管理上的技巧。现在就分别简要谈谈我在读这三本书时的感受吧。

一:《LINUX SERVER HACKS 卷二》

首先,这不是一本工具书,而是一本经验集。书内都是很巧妙的一节一节的linux服务器维护技巧,主要目的是提高维护linux是的速度和鲁棒性。说实话,我不是很习惯这种模式的书,因为如果带着问题去读这本书,读完后还是问题,而本不是关心的部分,读完后也很快就忘了。
简言之,我懂这本书里得到的信息有:
一:linux非常灵活,特别是结合NFS以及远程终端,可以做非常有想象力的事情。
二:在复杂的连线环境中记得使用screen
三:脚本可以做几乎任何维护性质的事,而且事情的解决方案往往比你想得简单。
四:注意uid,gid重用可能带来的问题
五:Google万岁

二:《Linux服务器性能调整》

这本书翻译的不是很好,文法晦涩,而且介绍的东西偏深,很多是探讨内核级的优化。感觉看得不是很明白,简单写写吧。
一:关于服务器文件系统的选择:ReiserFS鲁棒性很好,而且对小文件有最佳性能。XFS针对大型文件有最佳性能。
二:一块硬盘上读取外侧磁道的速度要快于内侧磁道,所以分区是可以考虑这点将序号小的分区分配给经常读写的目录。譬如分区时第一个为swap,第二个/var,再者/usr,最后才是根和/home
三:mount文件系统时带上noatime可以提高一些性能。
四:文件系统在创建的时候可以调教一些参数优化性能
五:各类监控/tweak工具:hdparam, iostats, top, vmstat

三:《实战Nginx:取代Apache的高性能Web服务器》

这本书灌水的内容比较多,内容实际上也就是作者博客上的一些应用技巧的整理,可以总结的不多,因为按部就班的做就行了。
从书中看,nginx的性能优于apache,而且在反向代理方面特别有优势,这是它的亮点。Nginx虽然支持rewrite,自我感觉还是蛮好用的,但是不兼容apache的.htaccess,使用时需注意。
Nginx的组件高度模块化,可定制性比较强,具体可在使用时疯狂google。
对于使用php+mysql的场合,注意php使用fastcgi的方式启动,性能貌似比传统cgi要高不少,估计和apache的module差不多
书中没有提到什么值得一提的优化,具体实践的时候多google好了。对于硬件环境不好的服务器,减少nginx工作进程,打开gzip压缩和缓存,为php安装加速器并为低配置环境优化,数据库(例如mysql)在配置时减少内存占用上限。选择myisam而不是innodb。
简言之,这本书最大的作用就是让nginx变得平易近人大家都可尝试了。

原创文章,转载请注明: 转载自Linux User Group @USTC

本文链接地址: Fwd: 读书笔记:关于维护服务器的一些技巧