Skolelinux 是一份由 Debian Edu 项目制作的 Linux 分发版,作为 Debian Pure Blends 分发版,其为 Debian 正式辅助项目,以提供全面配置好的学校网络环境和学校适用方案。
Skolelinux / Debian Edu 以标准结构做到非常容易设置和管理,方便广大学校安装。许多服务为预先配置并默认开启,大量软件预先安装以待使用,老旧设备再利用和延长使用期以减少环境影响,并适用于对Linux 和网络知识知之甚少的使用者。
Skolelinux 参与了大量的新 debian-installer 安装程序的创建测试和 Debian 本地化工作,其项目启动于挪威,最初主要服务于学校中6-16 岁年龄段的使用者,现在该系统用于几个国家,安装最多的是挪威,西班牙,德国和法国。
By Knut Yrvin, Oslo - February 8, 2010
Skolelinux 为百万学生设计得极其稳定。在大多数国家中教育行业比其他任何政府部门管理着更多的计算机。当支持数万或百万使用者时,无所选择地贡献尖端软件。所安装的软件是 Skolelinux 精心选择并处于对稳定性的关注而设置好的。
Skolelinux构建于 Debian,其有 2-3 年的发行周期和针对于安全更新的扩展时期。 Debian 是在业界最全面和严格测试的 GNU/Linux发行版。它在德国企业中是最受欢迎的服务器系统,和基于 Maemo, Nokia 的移动 PC 平台而用于 N900。构建于 Debian 的Skolelinux 提升了稳定性和降低了管理费用。
最新的 Skolelinux具有比选用专利产品更低的硬件需求。升级更换较新硬件那要升级供应商他们的操作系统,而使用 Skolelinux 的学校可以延长硬件使用期 5-8年。Skolelinux 让学校运行成倍数量的计算机。由于较低的硬件需求和零许可证费用,Skolelinux可以使学校在采购新计算机时得到成倍的大量机器。
由于它的稳定性,规划的功能和无盘工作站的选择, Skolelinux在学校中相较任何其他可选的桌面削减半数操作成本。用于教育的软件是教师和计算机专家精选的。西班牙 Extramedura八万计算机管理者一致的意见,运行一台工作站的年人工成本低于 50 欧元。我们建议以 Skolelinux 实行中央管理,在一个学校一周可以用4-8 小时对 50-100 台工作站和 320 个用户进行管理。这可以减少集中维护,由于 Skolelinux 的 scalability。
一些计算机领域内对学校零维护方针的争论,陈述使用专有系统的计算机无须维护。很可惜,上述学校两周之后不会有任 何能用的计算机。当有 5-10名不同的学生每天使用一台计算机时,它数周甚至数天内理所当然的情况是直到专属软件停止工作 -造成破坏的学生,恶意的软件或病毒造成无用的机器。人工和计划设置是要恢复上述机器。一个没有管理的 Skolelinux系统于一个或两个月中要做的。我们遇到有学校运行数年未维护的 Skolelinux。
即使如果 Skolelinux 稳定的运行在可靠的网络上时,跳过维护也是不明智的。Skolelinux 需要专业的维护,即使如果它只需少量的维护,也比依照学校专属方案可靠。当在学校中提供安全的和可接受的计算机服务时,定期的硬件,软件和服务维护是强制性的。
它在学校中的安装未获得足够的硬件和一个计算机网络。这里同样寻求教育的使用。一个城市需要对系统维护和教育培训两者投资。教师需要培训如何在教授数学,自然科学,历史等课程之时融合使用计算机。Skolelinux的一个重要优越性是它降低获取设备和管理费用而有更多的预算用于教师的计算机操作能力培训。
配置文件历史:使用 git 版本控制系统跟踪 /etc/ 以 Debian Edu Squeeze etckeeper 脚本(先前版本使用 etcinsvk,已自Debian 中移除)来介绍使用 git 作为版本控制系统跟踪 /etc/中所有文件。
这样能够查看一个文件在何时添加,变更和移除,而且对于文本文件还可以查看它的变化。git 存储位置在/etc/.git/。
每小时自动记录任何变化,允许取出和复查以往的配置文件。
FIXME: 这里有一个 bug ,新文件不能自动跟踪,请提交 bug 到 Debian BTS!
查看历史,使用 etckeeper vcs log命令。检查两个时间点间的不同,可以使用类似 etcinsvk vcs diff 命令。
参看etckeeper手册页可以得到更多信息。
实用命令列表:
etckeeper vcs log
etckeeper vcs status
etckeeper vcs diff
etckeeper vcs add .
etckeeper vcs commit -a
man etckeeper
在一个刚安装的系统上试用,这样可以看到自系统安装以来的所有变化:
etckeeper vcs log
查看当前未跟踪或没有新变化的文件:
etckeeper vcs status
因为不想等待一个小时而使用手工处理一个文件:
etckeeper vcs commit -a /etc/resolv.conf
在 Debian Edu 中最多的分区是逻辑卷,仅 /boot/ 分区不是。同 Debian/Etch 一起释出的 Debian Edu 可以在分区挂载时扩展该分区,这一 Linux 内核功能始于 2.6.10 版。静态缩减分区需要在该分区卸载时完成。
一个好的建议是避免创建非常大的分区,对于大分区,如果需要自备份恢复时,将要很长的时间,同样对于大分区的文件系统检查也需要非常长的时间。一个好的限度在 20 GiB,如果可能,创建几个小分区比一个非常大的分区更好。
debian-edu-fsautoresize脚本提供很容易地扩展所有分区的工作,届时它依据从 /usr/share/debian-edu-config/fsautoresizetab, /site/etc/fsautoresizetab和 /etc/fsautoresizetab读取设置。它在基于这些文件所提供的规则上也推荐以小的自由空间来扩展分区。 没有任何理由,它将仅显示需要扩展文件系统的命令。根据选项 -n是需要实际执行命令来扩展文件系统。
该脚本于 fsautoresize-hosts网络组上在每个客户清单内每小时自动执行。
调整 Squid proxy 所使用的分区大小时,在 etc/squid/squid.conf中的仓库大小还需要更新。助手脚本 /usr/share/debian-edu-config/tools/squid-update-cachedir提供这一工作的自动化,检查 /var/spool/squid/分区当前的大小并设置 Squid 使用其分区容量的 80% 作为它的仓库容量。逻辑卷管理
逻辑卷管理 (LVM) 允许在分区挂载和使用期间调整其大小。你可以在 LVM HowTo中学习更多关于逻辑卷的知识。
手工扩展逻辑卷你简单地告诉 lvextend命令你想要它变得多大。例如,扩展 home0 到 30GB 你用如下命令:
lvextend -L30G /dev/vg_system/skole+tjener+home0
resize2fs /dev/vg_system/skole+tjener+home0
向home0 扩展30G ,你在命令中插入一个 '+' (-L+30G)。
ldapvi是一个以常规文本编辑器编辑 LDAP 数据库的命令行工具。
以下要执行:
ldapvi --ldap-conf -ZD '(cn=admin)'
ldapvi -ZD 'uid=super-admin,ou=People,dc=skole,dc=skolelinux,dc=no'
注意: ldapvi使用任何缺省的编辑器。在 shell 中执行 export EDITOR=vim可以快速设置环境以 vi 作为编辑器。
警告: ldapvi是一个非常强大的工具。谨慎不要弄乱 LDAP 数据库。
如果你选择一个工作于 LDAP 数据库上的图形界面,查看有无 luma软件包存在。
ldap-createuser-krb 是一个小的在 kerberos 创建 LDAP 用户和设置他们密码的命令行工具,虽然在测试中大体实用。
自从 Squeeze 发行, Debian 在新建的 stable-updates 套件中包含以前维护在 volatile 中的软件包。
FIXME: 在这增加更多有关 stable-updates 的信息。
你运行 Debian Edu,是因为你选择 Debian Edu 的稳定性。它极佳的运行,也正是一个难题:一些你所喜爱的软件略微过时。这里步入 backports。
Backports 是从 Debian 测试版(大多数)和不稳定版(仅少数情况,如安全更新)中预编译的软件包,它们运行在如 Debian Edu 那样的 Debian 稳定发布版上而无需新的库文件(个方面)。 我们建议你选择所需的单一 backports 而不要使用所有可用的 backports。
简单地使用 backports :
编辑 /etc/apt/sources.list 文件
# apt-get update
届时你可以使用 aptitude -t squeeze-backports install <packagename>来安装或更新一次软件包,或者你可以在/etc/apt/preferences 中设置一个软件包一直从backports 安装。
最后在这里介绍具有的优势,在 backports 得到更新时,会自动安装。
如果你想从一个版本升级到另一个版本(例如从 Squeeze 5.0.4 到 5.0.6)但你没有互联网连接,仅有实物媒体,以下是升级步骤:
插入 CD/DVD-ROM 到光驱并挂载光盘,使用 apt-cdrom 命令:
$ mount /cdrom
# apt-cdrom add -m
引用 apt-cdrom(8) 手册页:
apt-cdrom 是用来添加新 CDROM 到 APTs 可用源清单。 apt-cdrom 细致地核定光盘结构,而且修正一些可能存在的烧录错误并核实索引文件。
它必须使用 apt-cdrom 来添加 CDs 到 APT 系统,而不能手工完成。此外多片 CD 集中的每一片需要分别插入和检测以报告可能存在的烧录错误。
届时运行这两个命令来升级系统:
# apt-get update
# apt-get upgrade
运行 standalone Java applications
Standalone Java applications 是支持开箱即用的 OpenJDK Java runtime。
FIXME: 更新在 squeeze 中与 web 浏览器有关 java 的信息。
可以在 Debian Edu Lenny 中获得这个版本的 OpenJDK Java runtime,但不支持在 web 浏览器中运行,这将在下一个发布中修正。在 Lenny 中,自 Sun 的非自由(但可免费获得)Java 需要安装。
安装源自 Sun 的 Java 你需要编辑 /etc/apt/sources.list,首先确定将从 non-free安装软件包。这里需要类似这样的一行:
deb 镜像源 lenny main contrib non-free
然后:
# apt-get update
现在你准备好运行这个命令:
# apt-get install sun-java6-plugin sun-java6-jre sun-java6-fonts
以这一脚本管理者可以在每个用户主目录内创建文件夹并设置访问许可和权限。
在下面的例子中显示作为 group=teachers 和 permissions=2770 的一个用户可以上交一份作业保存在文件夹 "assignments" ,那里教师具有写权限能够批改它。
home_path="/skole/tjener/home0";
shared_folder="assignments";
permissions="2770";
created_dir=0;
for home in $(ls $home_path);do
. if [ ! -d "$home_path/$home/$shared_folder" ]; then
. mkdir $home_path/$home/$shared_folder
chmod $permissions $home_path/$home/$shared_folder
. #set the right owner and group
#"username" = "group name" = "folder name"
user=$home
group=teachers
chown $user:$group $home_path/$home/$shared_folder
((created_dir+=1))
else
. echo -e "the folder $home_path/$home/$shared_folder already exists.\n"
. fi
done
echo "$created_dir folders has been created"
当使用者在(无盘)工作站插入 USB 驱动器或 DVD/CDROM ,会出现一个以何种方式操作的询问窗口,就像在任何其他常规安装的机器上。
当使用者在瘦客户机插入 USB 驱动器或 DVD/CDROM 自他们通常使用的桌面并不显示窗口,而是自动挂载并在 /media/$user 文件夹对其浏览和读写。这对于大多数没有经验的使用者是相当困难的。
作为下面的脚本,为所有使用者轻松访问 USB 驱动器,CDROMs 或任何媒体连接到瘦客户机而在用户主文件夹创建 "Media" 符号连接。
home_path="/skole/tjener/home0"; shared_folder="Media"; permissions="775" \ created_dir=0;
for home in $(ls $home_path); do
if [ ! -d "$home_path/$home/$shared_folder" ]; then
ln -s /media/$home $home_path/$home/$shared_folder ((created_dir+=1))
else
echo -e "the folder $home_path/$home/$shared_folder already exists.\n"
fi
done
echo "$created_dir folders has been created"
有关在 LTSP 服务器上可移除媒体的提醒
提醒:当在 LTSP 服务器上插入 USB 驱动器和其他可移除媒体引起在远程 LTSP 客户端显示消息。
当远程用户收到这个消息或使用从控制台pmount,一个远程用户甚至可以挂载可移除驱动器并存取其上的文件。
这个作为 Debian Edu bug #1376进行跟踪。
killer是一个 perl 脚本,它摆脱后台任务。后台任务定义为某过程在用户当时未登录机器期间运行。它每小时运行一次任务工作。
安装它以 root 用户身份运行以下命令:
apt-get install killer
unattended-upgrades是一个 Debian 软件包,用以自动安装安全(和其他)更新。如果你计划使用它,你要有一些方法监控你的系统,例如,同时安装 apt-listchanges软件包并设置它给你发送有关更新的邮件。那里一直是 /var/log/dpkg.log。
安装这些软件包以 root 用户身份运行如下命令:
apt-get install unattended-upgrades apt-listchanges
在夜晚关闭客户机来节约能源和费用,并在早晨自动开机。这个软件包将尝试从午后四点每个小时关闭机器,但不关闭似乎有用户在使用的机器。它将尝试告诉 BIOS 在早晨七点左右开机,主服务器将尝试使用wake-on-lan 包从六点半开机。这些时间可以在个别机器crontabs改变。
这里的一些考虑:
客户机在有人使用时将不会关机。这是自那里检测到输出,作为例外情况,对于 LTSP 瘦客户机 LDM ssh 连接命令进行检测。
避免保险丝熔断,一个有把握的好主意是不要同时启动所有客户机。
这里可有两种不同的方法来唤醒客户机。其一是需要使用 BIOS 的功能和准确的硬件时间,而且主板和 BIOS 版本支持 nvram-wakeup。其他需要服务器通告各处所有客户机唤醒,并且对于所有客户机要支持 wake-on-lan。
如何设置夜间关机
在客户机上实现夜间关机,涉及 /etc/shutdown-at-night/shutdown-at-night,或者增添主机名(如在客户机上的 'uname -n'输出)到网络组 "shutdown-at-night-hosts"。增加主机到 LDAP 网络组可以使用 lwat网页工具完成。客户机可能需要在 BIOS 中设置 wake-on-lan。同样重要的开关和路线将用于在 wake-on-lan服务器和客户机之间通过 WOL 包到客户机,甚至假如客户机是在关机时。一些开关失败地通过数据包到客户端,那是在开关中未达到 ARP 表,阻塞WOL 包。
能在服务器上开启 wake-on-lan,添加客户机到 /etc/shutdown-at-night/clients,作为每个客户机的连接,首先是 IP 地址,接下来是 MAC 地址(网卡地址),以空格分隔它们,或者创建一个脚本 /etc/shutdown-at-night/clients-generator来生成客户机清单。
对于使用 sitesummary,这里是一个 /etc/shutdown-at-night/clients-generator范例:
#!/bin/sh
PATH=/usr/sbin:$PATH
export PATH
sitesummary-nodes -w
另一个选择是如果网络组在客户机上使用 shutdown-at-night ,这个脚本使用 ng-utils软件包中的网络组工具:
#!/bin/sh
PATH=/usr/sbin:$PATH
export PATH
netgroup -h shutdown-at-night-hosts
这部分文本最初从 README获得。
从互联网上透过防火墙访问机器,考虑安装 autossh-package。它可以使用设置一个 SSH-tunnel 到互联网上的一台机器由你访问。从那台机器,你可以通过 SSH-tunnel 透过防火墙访问服务器。
FIXME: 它几乎属于无效
使用 debian-edu-expert 引导选项安装minimal项目
为服务安装软件包
设置服务
禁止主服务器上的相关服务
在主服务器上更新 DNS
PXE 设置的生成使用 debian-edu-pxeinstall脚本。它允许不理会一些设置而由添加一个 /etc/debian-edu/pxeinstall.conf文件以取代准则。
设置 PXE 安装
PXE 缺省所得的安装选项能让任何人以 PXE 引导一台机器。密码保护 PXE 安装选项,可以类似这样的内容创建 /var/lib/tftpboot/menupassword.cfg文件:
MENU PASSWD $4$NDk0OTUzNTQ1NTQ5$7d6KvAlVCJKRKcijtVSPfveuWPM$
密码 hash 需要以一个想要的密码 MD5 hash 来取代。
PXE 安装将从设置那里接受语言,键盘布局和镜像设置的应用,当安装主服务器时,将在安装期间询问其他问题(项目,参与调查,分区和 root 密码)。避免这些问题,文件 /etc/debian-edu/www/debian-edu-install.dat可以提供预先选出的答案来改善 debconf 标准。可在 /etc/debian-edu/www/debian-edu-install.dat获得已经解释过的 debconf 准则的若干示例。你所做的改变将同 debian-edu-pxeinstall一样在不久后用于重建 PXE-安装环境。用以 debian-edu-pxeinstall重建期间增补 debconf 准则到 /etc/debian-edu/www/debian-edu-install.dat,以你增加的 debconf 准则添加 /etc/debian-edu/www/debian-edu-install.dat.local文件。
FIXME: 以 DebianEdu/Documentation/Squeeze/HowTo/NetworkClients做比较,去除多余的信息。
瘦客户机和无盘工作站二者通称 LTSP 客户端。LTSP is the Linux Terminal Server Project.
瘦客户机
瘦客户机可以设置普通个人电脑具有 (X-)终端功能,那里的所有程序运行在 LTSP 服务器上。这一方法是机器从软盘或直接从服务器使用 network-PROM (或 PXE) 引导,而不使用本地客户机的硬盘驱动器。
无盘工作站
无盘工作站在本地运行所有软件。客户机直接从 LTSP 服务器引导而不是本地硬盘驱动器。软件在 LTSP 服务器上管理和维护,但它运行在无盘工作站上。主目录和系统设置也保存在服务器上。无盘工作站是一个类似于瘦客户机的低维护成本再利用较新硬件的极好方法。
根据网络选择机器种类
每个 LTSP 服务器有两个网卡,一个设置在 10.0.0.0/8 子网(共享主服务器),另一个构成本地 192.168.0.0/24 子网(对于每个 LTSP 服务器的单独子网)。
无盘工作站获得私有 IP 地址分配在子网 10.0.0.0/8,而瘦客户机连接在私有子网 192.168.0.0/24。
在 LTSP 服务器上改变 PXE 菜单
PXE 菜单让 LTSP 客户机可选择网络引导,安装和其他可能的选项。缺省使用 /var/lib/tftpboot/pxelinux.cfg/default文件,如果在该目录内没有其他文件与客户机匹配,开箱即用的设置连接到 /var/lib/tftpboot/debian-edu/default-menu.cfg。
如果想要所有客户机引导为无盘工作站取代全部 PXE 菜单设置,可以实施改变这个符号连接:
ln -s /var/lib/tftpboot/debian-edu/default-diskless.cfg /var/lib/tftpboot/\
pxelinux.cfg/default
如果希望所有客户机作为瘦客户机引导来代替,改变符号连接类似这样:
ln -s /var/lib/tftpboot/debian-edu/default-thin.cfg /var/lib/tftpboot/pxelinux.\
cfg/default
也可参看在 pxelinux 文档。
如果需要客户机在一个瘦客户机服务器的 192.168.x.x 接口上引导为无盘工作站而取代瘦客户机,编辑
/var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default
增添一个 '3' (没有引号)到行尾。那里不需要在 GOsa 里添加这些工作站,保存你的工作和一个 "staticxx" IP 地址(看下面)。
分离的主服务器和 LTSP 服务器
出于性能和安全的考虑,需要设置分离的主服务器而不作为诸如 LTSP 服务器。
在主网络上 (10.0.x.x) 有 ltspserver00 服务于无盘工作站,在那里 tjener 不是组合服务器,这需要如下步骤:
自ltspserver00 复制 /var/lib/tftpboot 的 ltsp 目录到 tjener 上的一个目录。
复制/var/lib/tftpboot/debian-edu/default-diskless.cfg到 tjener 的一个目录。
编辑/var/lib/tftpboot/debian-edu/default-diskless.cfg使用 ltspserver00 的 IP 地址,下面的示例使用 10.0.2.10 (缺省的):
DEFAULT ltsp/i386/vmlinuz initrd=ltsp/i386/initrd.img nfsroot=10.0.2.10:/opt\
/ltsp/i386 boot=nfs ro quiet 3
在 tjener 上设置符号连接 /var/lib/tftpboot/pxelinux.cfg指向 /var/lib/tftpboot/debian-edu/default-diskless.cfg。
对于瘦客户机所作的专门的改制和配置,你可以编辑文件 /opt/ltsp/i386/etc/lts.conf。安装 ltsp-docs 软件包并运行 "man lts.conf" 查看可用的配置选项。
默认值是定义下面 [default],配置一个客户机,明确规定那个客户机使用客户机网卡硬件地址或类似这个 IP 地址 [192.168.0.10]。
示例:确定瘦客户机 ltsp010 使用 1280x1024 解析度,添加类似这样的内容:
[192.168.0.10]
X_MODE_0 = 1280x1024
X_HORZSYNC = "60-70"
X_VERTREFRESH = "59-62"
其下面某些地方为缺省设置。
确定你所作的更改,这需要重启客户机。
在 lts.conf中使用 IP 地址,你需要添加客户机网卡硬件地址到你的 dhcp 服务器。另一方法需要你直接在你的 lts.conf文件中使用客户机的网卡硬件地址。