Archive

Posts Tagged ‘Debian’

usplash主题制作问题

August 20th, 2009 Comments off

Debian下目前有3个可以用的usplash主题包,分别是usplash-theme-debian,debian-edu-artwork-usplash,brdesktop-artwork-usplash。目前在lenny下制作出来的效果都有问题。截图:

usplash

为了解决这个问题,我先分析了usplash主题的制作原理。usplash的主题制作过程大概如下:

  • 由一个svg图,分别生成1024×876,800×600,640×480等分辨率下的背景图片。其实也可以不用svg,但非矢量图缩放效果可能不佳。也可以手动PS不同分辨率下的背景图片,也就不用借助svg的缩放了;下图是一个背景图:

background_640x480

  • 编辑生成一个进度条的png文件。图像中除进度条部分,其他应该是透明色;下图是用gimp编辑进度条的透明色效果:

progress

  • 将不同分辨率下的背景图和进度条叠加,生成2种叠加后的进度条效果,分别代表"进度为0"和"进度为100%"两种状态;

progressbg_640x480

progressfg_640x480

  • 统一所有图片的调色板。包括不同分辨率下的背景图、进度条效果图。下面是用gimp编辑图片看到的调色板:

palette

  • 将png图片转换为c文件
  • 将c文件编译链接成so文件

而产生前面截图那样的错误,是因为图片的调色板没有统一。而调色板不统一的原因,是因为usplash用的图片转换工具修改了统一调色板的方法。

本来,usplash 用的统一调色板的方法,是通过imagemagick提供的convert命令,先将png转换到gif,再转换回png的方法。(可能是因为convert对png格式的调色板支持不好)。方法如下:

convert image.png +dither -map ./cmap.gif gif:-
  | convert gif:- image.png

后来这种方法不管用了。原因是从gif转回png格式时,convert不再保留调色板。

经过网上的搜索,发现新版本的imagemagick应该用下面的命令设置调色板:

convert +dither image.png -type Palette -depth 8 -map cmap.gif image.png

修改Makefile中相关语句后,再次编译usplash主题,就会出现正确的效果了:

usplashgood

附usplash-theme-debian的patch:

--- a/Makefile	2009-08-20 00:51:49.000000000 +0800
+++ b/Makefile	2009-08-20 00:34:28.000000000 +0800
@@ -88,8 +88,8 @@
 
 %.c: %.png cmap.gif
 	$(E) "  PNGSRC  " $@
-	$(Q) convert $< +dither -map cmap.gif gif:- | \
-	     convert gif:- $<
+	$(Q) convert +dither $< -type Palette -depth 8 -map cmap.gif $<.new
+	$(Q) mv $<.new $<
 	$(Q) pngtousplash $< > $@
 
 #cmap.gif: background.svg progress.png
Categories: 开源软件 Tags: , ,

定制 Debian Live

June 20th, 2009 9 comments

Debian Live 是一款制作可从移动介质直接启动的 Linux 系统的工具,支持生成 iso 镜像,USB 磁盘镜像和 NFS 镜像。

Debian Live 定制性很强,下面简单介绍几项定制内容:

1. 定制 Debian Mirror 地址

如果你的工作机无法访问官方 mirror,一定要通过下面 lh_config 的 5 个参数,配置可以访问的 mirror:

lh_config
            [-m|--mirror-bootstrap URL]
            [--mirror-binary URL]
            [--mirror-binary-security URL]
            [--mirror-chroot URL]
            [--mirror-chroot-security URL]

2. 定制 syslinux splash 图像

syslinux 使用一种特殊的图像格式(RLE 或 LSS),需要用下面的方法准备:

  • 用 GIMP 编辑图像,不要超过 640×400。
  • 设置为 14 Indexed Color。如果图像已经为 Indexed Color,但超过 14 种,应该先转换成 RGB 格式,再转换回 14 Indexed Color
  • 另存为 PPM 格式
  • 使用 syslinux 包中的 ppmtolss16,将 PPM 图像转换成 LSS
  • ppmtolss16 '#d0d0d0=7' < splash.ppm > splash.rle

得到 LSS 格式的图像之后,需要:

  • 放入 config/binary_syslinux/ 下,假设文件名为 splash.rle
  • 同时修改 config/binary,设置:
  • LH_SYSLINUX_SPLASH="config/binary_syslinux/splash.rle"

然后 lh_clean && lh_build 生成新的镜像。

3. 定制默认用户配置

Debian 以及其他 Linux 发行版在创建新用户时,会将 /etc/skel 目录下的所有文件复制到新用户 HOME 目录下。借助这一特色,可以通过将配置文件放在 /etc/skel 目录下,起到默认配置的作用。

Debian Live 系统每次启动时会生成全新用户 HOME 目录,同样会拷贝 /etc/skel 目录下的所有文件。因此需要将配置文件放入 Debian Live 系统的 /etc/skel 目录下。

在 config/chroot_local-includes/ 目录下,创建 etc/skel 子目录,在生成 binary 时,这些文件会自动拷贝到文件系统上。

lh_clean && lh_build 生成新的镜像。

4. 定制 splashy

splashy 可以在系统启动时,显示图形化的进度栏。splashy 的定制过程如下:

  • 创建 config/chroot_local-hooks/01-splash.sh:
  • #!/bin/sh
    splashy_config -s debian-moreblue || true
    update-initramfs -u -k all
  • chmod +x config/chroot_local-hooks/01-splash.sh
  • 修改 config/chroot 文件,LH_PACKAGES 后增加两个包:splashy splashy-themes

最后,lh_clean && lh_build 生成新的镜像。

5. 定制 usplash

usplash 与 splash 类似,同样可以显示图形化启动进度。由于 splashy 不支持 initramfs,有一部分启动过程无法图形化,而 usplash 能弥补这一缺陷。

  • 参照 splashy 前两步,生成同样的 01-splash.sh 可执行脚本
  • 修改config/chroot 文件,LH_PACKAGES 后增加两个包:usplashy usplash-theme-debian
    最后,lh_clean && lh_build 生成新的镜像。

6. 最小化生成 image

通常减少 Debian/Linux 系统空间的方法无外乎:1 删除不用的 locale 信息,2 删除 APT 缓存。可以参照上面定制过程,在 config/chroot_local-hooks/ 目录下,创建 hooks 脚本实现。

  • 首先,修改config/chroot 文件,LH_PACKAGES 后添加 localepurge
  • 创建 config/chroot_local-hooks/99-clean.sh 文件:
  • #!/bin/sh
    rm -r /var/lib/apt/lists/mirror.ivic.org.cn*
    rm -r /var/cache/apt/*.bin
     
    debconf-set-selections <<EOF
    debconf localepurge/nopurge select en, en_US.UTF-8
    debconf localepurge/nopurge seen true
     
    debconf localepurge/mandelete select true
    debconf localepurge/mandelete seen true
     
    debconf localepurge/dontbothernew select false
    debconf localepurge/dontbothernew seen true
     
    debconf localepurge/showfreedspace select true
    debconf localepurge/showfreedspace seen true
     
    debconf localepurge/verbose select false
    debconf localepurge/verbose seen true
     
    debconf localepurge/quickndirtycalc select true
    debconf localepurge/quickndirtycalc seen true
    EOF
     
    dpkg-reconfigure -u -phigh localepurge
  • chmod +x config/chroot_local-hooks/99-clean.sh

最后 lh_clean && lh_build 生成新的镜像。

7. 使用 fluxbox

fluxbox 是一款小巧的 X Window Manager。生成使用 fluxbox 的 Debian Live 系统的过程如下:

  • 修改config/chroot 文件,LH_PACKAGES_LISTS 后添加 fluxbox(替换 xfce/gnome/kde 等)
  • 创建 chroot_local-packageslists/fluxbox,内容如下:
  • ## LH: Fluxbox
    #include <standard-x11>
     
    fluxbox gdm
    ##desktop-base

最后 lh_clean && lh_build 生成新的镜像。

Categories: 开源软件 Tags: ,

debconf 和 dpkg-preconfgure 的用法

June 20th, 2009 Comments off

debconf 是 Debian 使用的一种软件包配置方法。支持 debconf 的软件在安装时,会弹出对话框,要求用户输入一定配置参数。

在非交互式环境下安装这类软件,用户无法在线提供软件的配置项。因此用户需要通过 dpkg-preconfigure 预先指定软件配置。

目前 dpkg-preconfigure 的用法比较奇怪。没有非常完美的用法,总觉得怪怪的。下面这个方案应该是我从网上可以找到,综合比较靠谱的。

1. 导入 debconf 模板

debconf 模板包含软件的配置项的名称、说明、默认值等内容。一般来说 debconf 模板是包含在 deb 包中。由于需要在安装 deb 时自动提供软件配置,所以需要在安装 deb 包之前,提前导入 debconf 模板。过程如下。

  • apt-get clean (清除 apt/cache 中缓存的 Debian 包)
  • apt-get install -d mysql-server-5.0 (下载 mysql-server-5.0,不安装)
  • dpkg-preconfigure /var/cache/apt/archives/mysql-server-5.0*.deb (导入 debconf 模板)

不完美的地方就在这里:导入一个软件的配置项,竟然要用三个命令。总觉得应该一个命令搞定。。。

2. 指定 debconf 配置

模板导入之后,可以使用 debconf-set-selections 设置软件配置。用下面的命令:

# debconf-set-selections
debconf mysql-server-5.0/start_on_boot select true
debconf mysql-server-5.0/start_on_boot seen true
(ctrl+d)

上面命令将 mysql-server-5.0/start_on_boot 设置为 true,并且设置配置项已经显示(区分配置项的值是默认值,还是用户输入值)。一般来说,软件安装时,只会显示 seen 为 false 的那些配置参数。

如果不知道软件有哪些配置选项,可以用 debconf-show 看到:

# debconf-show mysql-server-5.0
  mysql-server/root_password_again: (password omitted)
* mysql-server/root_password: (password omitted)
  mysql-server-5.0/really_downgrade: false
  mysql-server-5.0/need_sarge_compat: false
  mysql-server-5.0/start_on_boot: true
  mysql-server/error_setting_password:
  mysql-server-5.0/nis_warning:
  mysql-server-5.0/postrm_remove_databases: false
  mysql-server-5.0/need_sarge_compat_done: true
  mysql-server/password_mismatch:

上面每行输出中第一个 * 表示 seen 为 true,没有星号表示 seen 为 false;每行输出中,冒号前面配置项,冒号后是值。

3. 安装软件

如果所有的 debconf 选项都通过上面的方法设置完毕。用下面的方法安装

apt-get install mysql-server-5.0

此时应该不会显示 debconf 的对话框。

Categories: 开源软件 Tags: ,

检查 Debian 服务器的 exim 邮件队列

April 1st, 2009 Comments off

exim 是 Debian 系统预装的邮件服务器。在系统使用过程中,可能会出现网络故障,导致一些邮件进入 exim 重试队列,每次重发失败都会给管理员发信,非常讨厌。

从网上找了一个 exim 秘籍,非常有用。只用了有限几个命令就可以排除上述故障。

  • 显示 exim 队列中邮件数目
  • exim -bpc
  • 显示 exim 队列中邮件信息,邮件 id 号,收件人信息等
  • exim -bp
  • 重新发送 exim 队列中的邮件,并显示 SMTP 协议交互
  • exim -q -v
  • 强制重新发送 exim 队列中的邮件。有些失败邮件设置了下次重试时间,在此之前要强制发送
  • exim -qf -v
  • 给定邮件 id,删除队列中的邮件。id号通过 -bp 命令可以获得
  • exim -Mrm <msg-id>
Categories: 开源软件 Tags: , ,

Debian 下 MacBook 触摸板设置

March 30th, 2009 1 comment

窃以为,MacBook 的触摸板是 Apple 人机界面中最不方便的一环,只有一个按键,手感也不如 IBM 的指点杆,没有鼠标情况下,操作非常不方便。

Linux 下的 MacBook 触摸板更是痛中之痛。Linux 下触摸板的驱动是 Synaptics,默认设置下,移动速度很慢,反应不灵敏;用两手指轻敲模拟右键的功能无法使用,不接外接鼠标就没有右键;用着简直抓狂。一直以来用 IBM 笔记本养成的在床上编程的习惯受到了严重挑战。

在新版本的 xorg 的中,可以自动发现硬件设备并自动配置,允许用户使用最小化的 xorg.conf 启动 X。其实就是一个空的 xorg.conf 也能启动。但该功能和现存的 Synaptics 配置方法相抵触,导致 google 上搜到的大部分配置方法都不能成功配置 Synaptics 的参数。

解决方法很简单:

  • 方法1:提供一个完整的,old fashion 的 xorg.conf 文件,尤其要包含 ServerLayout Section,其中要引用 Synaptics Section
  • 方法2:如果仍然希望使用 minimal xorg.conf,应该在 Synaptics Section加上 Option “CorePointer”

很显然,方法2要简单些。下面提供一个用方法2配置的 xorg.conf 文件,包含我的 Synaptics 配置。功能如下

  • 禁用 1 Finger Tap 功能
  • 2 Finger Tap 对应右键,3 Finger Tap 对应中键(按不出来),同时点击左上角区域代表中键
  • 触摸板右边和底边分别是垂直和水平滚轮
  • 其他是一些微调参数,主要为了让触摸板更灵敏

下面配置应该适用于 Debian Lenny/Squeeze/Sid,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
Section "InputDevice"
    Identifier "Synaptics Touchpad"
    Driver "synaptics"
    Option "SHMConfig" "on"
    Option "CorePointer"
    Option "LeftEdge" "121"
    Option "RightEdge" "1094"
    Option "TopEdge" "80"
    Option "BottomEdge" "300"
    Option "FingerLow" "10"
    Option "FingerHigh" "15"
    Option "FingerPress" "256"
    Option "MaxTapTime" "300"
    Option "MaxTapMove" "220"
    Option "MaxDoubleTapTime" "180"
    Option "SingleTapTimeout" "180"
    Option "ClickTime" "100"
    Option "FastTaps" "1"
    Option "EmulateMidButtonTime" "75"
    Option "EmulateTwoFingerMinZ" "257"
    Option "VertScrollDelta" "5"
    Option "HorizScrollDelta" "5"
    Option "VertEdgeScroll" "1"
    Option "HorizEdgeScroll" "1"
    Option "CornerCoasting" "0"
    Option "VertTwoFingerScroll" "0"
    Option "HorizTwoFingerScroll" "0"
    Option "MinSpeed" "0.493"
    Option "MaxSpeed" "1.5544"
    Option "AccelFactor" "0.2"
    Option "TrackstickSpeed" "40"
    Option "EdgeMotionMinZ" "30"
    Option "EdgeMotionMaxZ" "160"
    Option "EdgeMotionMinSpeed" "1"
    Option "EdgeMotionMaxSpeed" "38"
    Option "EdgeMotionUseAlways" "0"
    Option "UpDownScrolling" "1"
    Option "LeftRightScrolling" "1"
    Option "UpDownScrollRepeat" "1"
    Option "LeftRightScrollRepeat" "1"
    Option "ScrollButtonRepeat" "100"
    Option "TouchpadOff" "0"
    Option "GuestMouseOff" "0"
    Option "LockedDrags" "0"
    Option "LockedDragTimeout" "5000"
    Option "RTCornerButton" "0"
    Option "RBCornerButton" "0"
    Option "LTCornerButton" "2"
    Option "LBCornerButton" "0"
    Option "TapButton1" "0"
    Option "TapButton2" "3"
    Option "TapButton3" "2"
    Option "CircularScrolling" "0"
    Option "CircScrollDelta" "0.1"
    Option "CircScrollTrigger" "0"
    Option "CircularPad" "0"
    Option "PalmDetect" "1"
    Option "PalmMinWidth" "10"
    Option "PalmMinZ" "200"
    Option "CoastingSpeed" "0"
    Option "PressureMotionMinZ" "30"
    Option "PressureMotionMaxZ" "160"
    Option "PressureMotionMinFactor" "1"
    Option "PressureMotionMaxFactor" "1"
    Option "GrabEventDevice" "1"
EndSection
Categories: Apple, 开源软件 Tags: ,

Debian 下编译静态链接的 ffmpeg 版本

March 24th, 2009 1 comment

ffmpeg 是一款开源视频编码转换工具,最近刚刚发布 0.5 版本。ffmpeg 支持 h264,mpeg4,aac,mp3,等多种视频音频编码格式,同时支持 avi,mp4,mov,flv 等多种 container 格式。

Debian 中源中自带 ffmpeg,由于版权问题,只支持很少的几种编解码器,功能非常弱,可用性比较差。Debian Multimedia 项目弥补了这一缺陷,提供了预编译好的支持各种常用格式的 ffmpeg。

由于 Linux 发行版对于动态链接库的使用情有独钟,喜欢用链接到 Shared Object(so)库的方式编译各种软件,Debian 自然也不例外。而 ffmpeg 这款博览各家之长的软件拥有众多的库依赖关系,因此不能单独安装。不同发行版之间,甚至相同发行版的不同版本号之间,ffmpeg 的安装包都是不兼容的。安装起来非常不方便。

花了一周末的时间,使用 Debian 成功编译出静态链接的 ffmpeg 版本,得到脚本如下。下载后在 Debian 中直接运行即可。我在当前 Debian Multimedia 的 ffmpeg-0.5.svn20090318,和 Sid,Squeeze,Lenny 上测试该脚本成功。如果软件下载速度太慢,请自行修改脚本中的 Debian 源 URL。

另外,我用 Intel C Compiler 编译了 ffmpeg 的静态版本,只能运行在 Cuo 2 Duo 之后的芯片上。简单测试了一下,mpeg4 编码大概能比 gcc 版本快 10% 左右。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#/bin/sh
cat > /etc/apt/sources.list.d/build-static-ffmpeg.list <<EOF
deb http://debian.ustc.edu.cn/debian sid main contrib non-free
deb-src http://debian.ustc.edu.cn/debian sid main contrib non-free
 
deb http://debian.ustc.edu.cn/debian-multimedia sid main
deb-src http://debian.ustc.edu.cn/debian-multimedia sid main
EOF
apt-get update
apt-get -t sid install debian-multimedia-keyring debian-archive-keyring
 
mkdir -p nvidia-glx-dev/DEBIAN
cat > nvidia-glx-dev/DEBIAN/control <<EOF
Package: nvidia-glx-dev
Priority: optional
Maintainer: nobody@example.com
Architecture: all
Version: 180.29
Description: dummy package for nvidia-glx-dev
 dummy package for nvidia-glx-dev
EOF
 
dpkg-deb -b nvidia-glx-dev
dpkg -i nvidia-glx-dev.deb 
 
apt-get -t sid build-dep ffmpeg || ( apt-get -t sid install libsdl1.2-dev && apt-get -t sid build-dep ffmpeg )
apt-get -t sid install libusb-1.0-0-dev
 
apt-get -t sid source ffmpeg
 
cd ffmpeg-*/
 
cat > static_build <<EOF
debian/rules clean
debian/rules patch
 
CFLAGS="-Wall -g"
CC="ccache gcc"
NCPUS=\$(getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1)
 
./configure \
	--disable-ffplay --disable-ffserver --disable-shared --enable-static \
	--extra-libs="-static -ldirac_encoder -ldirac_decoder -lstdc++ -lspeex -lvorbis -lxvidcore -ldc1394 -lraw1394 -lusb-1.0 -lm -lasound -ldl" \
	--prefix=/usr --extra-cflags="\$CFLAGS" --cc="\$CC" \
	--libdir=\\\${prefix}/lib --shlibdir=\\\${prefix}/lib --bindir=\\\${prefix}/bin \
	--incdir=\\\${prefix}/include/ffmpeg --enable-libmp3lame \
	--enable-gpl --enable-libfaad --mandir=\\\${prefix}/share/man --enable-libvorbis \
	--enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc \
	--enable-libamr-nb --enable-libamr-wb --enable-x11grab --enable-libgsm \
	--enable-libx264 --enable-libtheora --enable-libdc1394 \
	--enable-nonfree --disable-stripping --enable-avfilter --enable-libdirac \
	--disable-decoder=libdirac --enable-libschroedinger --disable-encoder=libschroedinger \
	--enable-libspeex --enable-avfilter-lavf --disable-mmx \
	--disable-altivec --disable-armv5te --disable-armv6 --disable-vis
 
echo "#define FFMPEG_VERSION \"SVN-r18029-static\"" > version.h
 
make -j \$NCPUS && echo Build success || echo build failed
strip ffmpeg
 
./ffmpeg -version
cp ffmpeg ..
EOF
 
. static_build 
echo Type ". static_build" under source code dir to rebuild
Categories: 开源软件 Tags: , ,

debmirror不能镜像当前的Debian Repo

February 27th, 2009 Comments off

不知道何时起,Debian的Repository就不包含Packages文件了,只有压缩版本的Packages.bz2和Packages.gz。同样,Sources.gz和Sources.bz2也完全替代了Sources。导致debmirror无法同步现在的Debian Repo。报的错误类似:“…/Packages failed md5sum check”。

修正方法如下:

  1. 按照下面的patch修改/usr/bin/debmirror
  2. 删除镜像目录下的临时文件目录 rm –r /path_to_local_mirro/.temp
--- debmirror   2009-02-27 04:10:57.000000000 +0800
+++ debmirror.orig      2009-02-27 04:12:45.000000000 +0800
@@ -690,14 +690,14 @@
 foreach my $dist (@dists) {
   foreach my $section (@sections) {
     foreach my $arch (@arches) {
-      #add_bytes("dists/$dist/$section/binary-$arch/Packages");
+      add_bytes("dists/$dist/$section/binary-$arch/Packages");
       add_bytes("dists/$dist/$section/binary-$arch/Packages.gz");
       add_bytes("dists/$dist/$section/binary-$arch/Packages.bz2");
       add_bytes("dists/$dist/$section/binary-$arch/Release");
       add_bytes("dists/$dist/$section/binary-$arch/Packages.diff/Index") unless                                                                               ($pdiff_mode eq "none");
     }
     if ($do_source) {
-      #add_bytes("dists/$dist/$section/source/Sources");
+      add_bytes("dists/$dist/$section/source/Sources");
       add_bytes("dists/$dist/$section/source/Sources.gz");
       add_bytes("dists/$dist/$section/source/Sources.bz2");
       add_bytes("dists/$dist/$section/source/Release");
@@ -706,13 +706,13 @@
   }
 }
 foreach (@extra_dirs) {
-  #add_bytes("$_/Packages");
+  add_bytes("$_/Packages");
   add_bytes("$_/Packages.gz");
   add_bytes("$_/Packages.bz2");
   add_bytes("$_/Release");
   add_bytes("$_/Packages.diff/Index");
   if ($do_source) {
-    #add_bytes("$_/Sources");
+    add_bytes("$_/Sources");
     add_bytes("$_/Sources.gz");
     add_bytes("$_/Sources.bz2");
     add_bytes("$_/Sources.diff/Index");
Categories: 开源软件 Tags: ,

Debian下网卡对802.1Q VLAN的支持

October 14th, 2008 Comments off

现在的交换机大部分都支持802.1Q VLAN了, 通过VLAN可以将一个交换机上的不同端口分隔成隔离的链路, 也可以将多个交换机上的端口连接到同一个链路.

有时候, 我们可能希望一台机器同时连入多个VLAN, 最好是通过一块网卡. 也就是说, 让一个网络端口同时属于多个VLAN. 要实现这样的功能, 需要做两个方面的配置:

交换机配置

首先要把该主机对应的交换机端口设置为混合端口, 只有混合端口可以同时加入多个VLAN, 下面是Huawei交换机的配置片段:

interface Ethernet0/1
port link-type hybrid
port hybrid vlan 10 20 tagged
port hybrid pvid vlan 10

上述配置让交换机的1号端口成为混合端口, 并同时加入id号为10和20的VLAN, 主VLAN号是10.

Debian主机配置

首先需要在Debian上安装vlan配置工具.

apt-get install vlan

然后, 我们可以在Debian的网络配置文件中, 配置每个VLAN对应的网卡. 下面是/etc/network/interfaces文件的片段:

auto eth0.10
iface eth0.10 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.254

iface eth0.20 inet static
address 192.168.2.10 
netmask 255.255.255.0

上述配置文件配置的主机, 分别有两块虚拟网卡eth0.10, eth0.20, 对应VLAN 10和VLAN 20所在的网络.

除了配置文件之外, 管理员还可以通过vconfig命令, 增加或者删除VLAN.

Categories: 开源软件 Tags: , , ,

grub2和GPT兼容问题

September 2nd, 2008 2 comments

说来挺丢脸的, Debian用了将近8年, 直到前一阵才提交了生平第一个Debian的bug, 关于grub2无法安装至使用GPT分区表硬盘的问题. Debian的package maintainer很热情的询问了关于这个bug的一些问题, 然后告诉我这个bug可能是grub本身的问题, 而不是Debian打包中出现的问题, 建议我报告到upstream maintainer那里去.

后来想想比较麻烦, 我就没再提交. 结果昨天又收到Debian包管理员Robert Millan的来信, 让我试试刚刚上传到experimental的新版本grub2(1.96+20080831-1), 说他认为我的bug已经在这个版本中解决了, 还把理由称述在bug report的注释里面了. 面对这么负责的管理员, 我除了感动, 还能说什么呢.

为了试用在experimental中的软件包, 需要首先修改/etc/apt/sources.list文件, 增加下面一行

deb http://debian.ustc.edu.cn/debian ../project/experimental main

然后安装experimental中的grub2

apt-get update
apt-get -t experimental install grub2

安装好之后, 使用下面的命令把grub2安装到GPT硬盘上, 发现已经可以成功安装了.

sudo grub-install '(hd0)'

Categories: 开源软件 Tags: , ,