显示标签为“knoppix”的博文。显示所有博文
显示标签为“knoppix”的博文。显示所有博文

2005年6月20日星期一

不刻盘运行Knoppix的终极方法?

似 乎没有必要讲ISO的内容完全解开,Knoppix早就支持直接使用硬盘上的ISO文件,只需要在grub的menu.lst或者lilo的 lilo.conf里面kernel行添加如下一个参数就可以了(关于如何从grub for dos或者lilo调用Knoppix的kernel和initrd, 参见我前面的帖子)

bootfrom=/dev/hda1/*.iso

这是刚才Easthero告诉我的,我还没有来试验。

english translation:

Ultimate way to boot knoppix without burning a CD?

It seems that knoppix already support this. No need to unpack the ISO, just use one magic word in grub's menu.lst or lilo.conf (add as a parameter to the 'kernel' line):

bootfrom=/dev/hda1/*.iso

(see my old post for how to boot with knoppix's kernel and initrd from grub for dos)

Easthero told me just now. I haven't tested it yet.

2005年5月15日星期日

Knoppix, 强! (不刻盘运行Knoppix又一法)

摘要: 手边只有Windows以及一个Knoppix的ISO,如何在将Knoppix跑起来;如何不刻盘运行Knoppix

我把原来用的台式机留给了我妹妹她们,但里面120G的硬盘上还保存有不少东西,今早我想把原来下载的电子书刻录到光盘上带走,问题就来了。

他们的Windows XP升级到了SP2,而原来随刻录机赠送的Nero OEM用不了,报告“与此版本的Windows不兼容”,我记得在我的laptop上的XP SP2上跑过这个Nero OEM,确实有问题。于是到Nero的网站找升级,结果失望地发现似乎对于OEM版本不提供免费升级,倒是可以优惠升级到Nero 6 Reloaded.

舍不得50多马克,只好用XP自己的刻录功能,先将文件拖放到刻录机所在盘符,也不知道XP搞些什么,慢慢吞吞“拷贝”了老半天――只是需要建立一个索引嘛,难道还要拷贝一个临时备份?
然后找了一阵,在刻录机所在盘符的右键菜单里面找到了"将这些文件写入CD",系统又折腾了一阵,然后还没开始刻录就报错了,说什么失败,还说这张碟可能不能再用。
看来对它自己的刻录功能是寡妇死了儿子――没多大指望了。

想起我原来在硬盘上还放有一个Knoppix 3.7的ISO,能不能用Knoppix里面的k3b来刻盘? 但现在没法将Knoppix刻盘,又怎么启动Knoppix呢?


[@more@]1. 从网上拉下一个grub for dos,解压到C: (boot目录直接在根目录), 编辑C:/boot.ini,添加一行:
C:\GRLDR="Start GRUB"

2. 用Total CommanderISO插件将KNOPPIX_V3.7 -2004-12-08-EN.iso解开,KNOPPIX目录都解压到某个驱动器的根目录(比如E:), boot/isolinux目录里面的文件随便放到什么地方(为了方便可以解压到C:/boot/knoppix或者E:/Knoppix/boot,这 里用后者,在grub里面表示为hd(0,5)/knoppix/boot/);

3. 编辑c:/boot/grub/menu.lst, 添加"Knoppix from E:"这样一条,kernel参数是将KNOPPIX.ISO里boot/isolinux/isolinux.cfg里面的参数拷贝过来,再加上 fromhd=/dev/hd6(就是刚才解压KNOPPIX目录的)
title Knoppix running from E:, kernel 2.4.27
kernel (hd0,5)/knoppix/boot/linux24 ramdisk_size=100000 init=/etc/init lang=us apm=power-off vga=791 nomce quiet BOOT_IMAGE=knoppix BOOT_IMAGE=linux24 fromhd=/dev/hdc6 myconfig=/dev/hdc6 home=/dev/hdc6
initrd (hd0,5)/knoppix/boot/minirt24.gz

4. 重启动,选择Start GRUB,然后选择"Knoppix running from E:",嘿嘿, Knoppix起来了。然后祭起k3b,刻盘,顺利搞定!

P.S 您也许注意到我还加了myconfig=/dev/hdc6 home=/dev/hdc6 这两个参数,这是后来添加的。
用mkpersisthome可以创建一个HOME映像盘,这样下次启动时添加home=/dev/hda?就有足够大的/home/knoppix空间 了,可以用knx-live-inst安装一些附加软件(当然手工安装也行);用saveconfig可以将对/etc下的配置文件所做的修改保存下来, 下次启动时添加myconfig=/dev/hda?后Knoppix就会自己去加载他们了。我昨天帖的"Knoppix中文扩展"主要就用了这两个功能。

又: Comparison Review: NeroLinux vs. K3b

2005年5月14日星期六

发布Knoppix 3.7 中文扩展(演示版)

这个扩展只需要原版本的Knoppix,不需要等remaster过的中文版本。

基本原理就是利用Knoppix可以保存并加载用户的HOME, 而采用一些特殊的方法(当然是说不自己编译的前提下)可以使得一些东西安装在HOME上就可以用。如果要了解详细情况,可以翻翻我以前贴的相关内容

只所以叫“演示版”,是因为这个映像只提供了kde-i18n, ttf-arphic-gbsn00lp, fcitx三个包,只是为了证明这种可能性(其实去年中期就在琢磨这个,但今年初看见从knx-live-inst这个包上学到不少东西,使之变得更加容 易),因为带宽关系没法提供自己做的完全版本。不过这个映像本身是128M的,可以自己再加装东西。


下载
http://www.oliwen.com/bamanzi/linux/knx-clx/knoppix.img.bz2
(该目录内有简单的安装说明和制作说明)

安装方法

1. copy knoppix.img to the root of one of your partition (say, /dev/hda6) ( if you got a bzip2 image, unpack it first, (it should be knoppix.img)

2. boot with your Knoppix CD, adding 'home=/dev/hda6' in the boot parameters
e.g
knoppix home=/dev/hda6

3. when booted, use 'mount' to check whether this image already mounted to /home/knoppix.
Now switch to root account(if you don't know how, just type Ctrl+Alt+F1), and patch the knoppix's xsession init script
$ cd /
$ patch -p0 -b /home/bamanzi/45xsession.patch
$ /etc/init.d/xsession restart

Now everything should be OK.

To make your changes persistent, you should do some extra steps:
4. In Konsole(you need to this as user 'knoppix'), call 'saveconfig' to store your changes to system configuration (/etc/....) to the root of one of your partitions (say, /dev/hda5). As the result, you will see two files on that drive: config.tbz and knoppix.sh.

5. Next time when you boot with your Knoppix CD, add an extra parameter as this:
knoppix home=/dev/hda6 myconfig=/dev/hda1
then you don't need to repeat step 2-4 for the next boot

2005年3月28日星期一

搞到Knoppix Hacks一书电子件

CHM格式, 在eDonkey上搜到的。我在这里放了一份。
这下子可以好好玩玩了。

其实O'Reilly对该书提供了在线阅读

Powered by ScribeFire.

2005年3月25日星期五

给Knoppix动态添加软件(7)

今天装上了krusader,从debian站点上取的1.51版



安装很简单,将deb包解开,将所有文件拷贝到~/.dist/(当然删除那些用不着的文件)
然后在~/.dist/bin下添加一个wrapper
KDEDIR=${HOME}/.dist/ ${HOME}/.dist/bin/krusader $*

另外还从apt-get上搜索了一个krename,将可执行文件拷贝到路径上就可以了。Krusader 调用它来做批量重命名。

本来想直接用Windows里面安装上的Total Commander,但这次感觉跑起来很不流畅(以前都挺好的)
Krusader似乎也是在模仿TC, 很多功能都是跟它做得一样。这也不奇怪,毕竟TC可以稳坐第一把交椅。不过Krusader有个很好的地方就是集成了Konsole,很方便吧(见上图)。

以前搞cygnome时用过gnome-commander, 也是在学习TC,但它需要FAM的支持才能刷新文件夹,而且对于压缩包的支持也一直不加(作者说他是想用gnome-vfs来做),加上更新又很慢.... 反正在Cygwin下我也有rox, mc, 还有Windows下的TC; 在Linux上还有krusader 和 nautilus (虽然nautilus以前版本实在是不怎么样)

2005年3月24日星期四

转: 不刻盘运行Knoppix

如果你已经下载了Knoppix的光盘映像,又有FAT32分区,并且又不想刻盘,还想尝试一下Knoppix,则可以采用下述步骤不刻盘运行Knoppix...

文章摘自: 不刻盘运行Knoppix和将Knoppix植入硬盘 (http://www.thinkjam.org/cgi-bin/blog/mt-tb.cgi/158)

巴蛮子注: 另外为了速度方面的考虑,Knoppix本身支持将光盘内容拷贝到硬盘运行
knoppix tohd=/dev/hda1 Copy CD to HD partition and run from there
knoppix fromhd Skip checking for Knoppix on CD-ROM
knoppix fromhd=/dev/hda1 Boot from previously copied CD-Image
knoppix bootfrom=/dev/hda1 Access Image then boot from previously copied CD-Image (enables booting from NTFS / ReiserFS) ***)
knoppix bootfrom=/dev/hda1/KNX.iso Access image, boot from ISO-Image. ***)

原文内容:
  1. 用虚拟光驱软件(如DAEMON Tools等)加载下载的光盘映像,然后进入虚拟成的光盘,将KNOPPIX目录拷贝到FAT32分区上,如D:KNOPPIX;
  2. 进 入Knoppix光盘的“bootisolinux”目录,将linux24和minirt24.gz拷贝到D盘根目录下(若您使用2.6.x内核,请 拷贝linux26和minirt26.gz),然后到http://elserv.ffm.fgan.de/~lermen/下载loadlin,解压 缩为loadlin.exe放到D盘根目录下;
  3. 在D盘根目录下建立一个批处理文件,例如knoppix.bat,其内容内容如下:
    loadlin linux24 root=/dev/hda5 ramdisk_size=100000 init=/etc/init lang=cn apm=power-off vga=791 initrd=minirt24.gz nomce quiet BOOT_IMAGE=knoppix myconfig=scan
    其中/dev/hda5是Knoppix所在的FAT32分区。Knoppix将主分区当做/dev/hda1,第一个从分区为/dev/hda5,第二 个从分区为/dev/hda6,依次类推,因此D盘是/dev/hda5。如果是第一次使用,可以去掉myconfig这个参数;
  4. 用软盘、U盘启动盘或者vfloppy虚拟软驱等想办法进入dos界面;
  5. 进入你放置Knoppix的分区,输入knoppix.bat,就可进入Knoppix。
此方法适用于Knoppix 3.4以上版本。

给Knoppix动态添加软件(6): Firefox, d4x

今天加上了firefoxd4x.

Firefox没有什么好说的,直接从mozilla.org下载一个二进制版本,解压到任何一个目录就可以了。只是注意大约需要22M空间,另外还得为cache什么的留些空间,所以HOME要足够大才行。


虽 然Knoppix有自带的kget, 但我还是喜欢d4x,于是从debian服务器上下载了编译好的版本,不需要做什么改动,将/usr/bin/nt拷贝到~/.dist/bin即可正常 运行,没有任何问题,如果想要中文显示的话,再拷贝一下/usr/share/locale/zh_CN/LC_MESSAGES下的mo。

为了让Firefox调用kget或者d4x,安装了一个flashgot插件,相当好使。(PATH内只有d4x的时候, flashgot是不认的,还必须得有nt才行,虽然d4x只是到nt的一个软链接)

2005年3月22日星期二

给Knoppix动态添加中文支持(5)

今日搞定OpenQ和stardict

stardict用到了gnome2的一些动态库,比如libgnome,libbonobo等,而Knoppix不带任何GNOME2的动态库(原来还有,但自从evolution被删除后就没有了),所以比较棘手。

Chinese live extension for Knoppix (knx-clx)- screenshot 7: gaim-openq Chinese live extension for Knoppix (knx-clx)- screenshot 8: stardict

讲一下大致步骤,细节就不说了。


OpenQ

-----
OpenQ下载自Linux公社,是先编译好的gaim-1.0的版本
http://www.linuxfans.org/nuke/modules.php?name=Site_Downloads&op=geninfo&did=2879

1.将插件拷贝到~/.gaim/plugins/
2. 将表情图标(/usr/share/pixmaps/gaim/smileys)拷贝到~/.gaim/smileys

人物图标(/usr/share/pixmaps/gaim/status)不知道应该拷贝到什么地方。
难道要我再用一次mount --bind?


stardict

--------
stardict用到了gnome2的一些动态库,比如libgnome,libbonobo等,而Knoppix不带任何GNOME2的动态库(原来还有,但自从evolution被删除后就没有了),所以比较棘手。

抱着试试看的想法,将用到的依赖库都拉下来了
libbonobo2-0_2.6.2-7_i386.deb
libbonobo2-common_2.6.2-7_i386.deb
libbonoboui2-0_2.6.1-1_i386.deb
libbonoboui2-common_2.6.1-1_all.deb
libgnome2-0_2.6.1.2-2_i386.deb
libgnome2-common_2.6.1.2-2_all.deb
libgnomecanvas2-0_2.6.1.1-2_i386.deb
libgnomecanvas2-common_2.6.1.1-2_all.deb
libgnome-keyring0_0.2.1-3_i386.deb
libgnomeui-0_2.6.1.1cvs-1_i386.deb
libgnomeui-common_2.6.1.1cvs-1_all.deb
libgnomevfs2-0_2.6.2-2_i386.deb
libgnomevfs2-common_2.6.2-2_i386.deb
stardict_2.4.3-5_i386.deb
stardict-common_2.4.3-5_all.deb

全部解压到~/Software/stardict(应为文件比较多,我采用了AppDirs模式, 将相关东西都放在一个目录下。
knx-live-inst发现某个module下面有exes这个文件就会采用AppDirs模式,并且对exes里面列出的程序在~/.dist/bin下创建wrapper)
删除无用的locale, doc, gtk-doc, help等文件
然后
perl -pi -e 's#/usr/share/stardict#./../share/stardict#g' ~/Software/stardict/usr/bin/stardict
再在~/Software/stardict/bin下添加一个wrapper script
#!/bin/sh
DESTDIR=${HOME}/Software/stardict
cd ${DESTDIR}/usr/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${DESTDIR}/usr/lib
exec ./stardict $*
这里跟以前不一样的就是多了LD_LIBRARY_PATH

试了一下,居然成功启动!
(其实stardict没有必要使用gnome库,因为并没有跟桌面其他部分的交互。用gtk库多简单)


03.24 补充: stardict不能修改设置的解决办法


今天发现stardict不能设置为“按下Ctrl键时取词"(其实是什么选项都改不了),这是因为gconf schema没有安装的缘故。因为knoppix上这些目录是不可写的,只要用点变通的办法:

关闭stardict和其他一些可能会用到gconf的程序(在Knoppix上并不多), 然后用gconftool-2 --shutdown停掉gconfd-2(用ps -ef看一下,如果有root启动的gconfd-2就得用root来停掉)
然后编辑~/.gconf/apps/stardict/preferences/dictionary/%gconf.xml(如果没有就创建一个)
按下面的内容修改,补充缺少的项就可以了



Sans 8




2005年3月21日星期一

给Knoppix动态添加中文支持(4)

今日搞定几个我常用的gtk程序: gtk1的gtansgtktalog, gtk2的gqviewbeep-media-player

Chinese live extension for Knoppix - gqview, beep-media-player

本来还想加上我比较喜欢的rox的,但因为官方版本对非UTF-8的文件名支持不好(以前我胡乱弄了个补丁),所以没弄。
而且似乎Knoppix上也没有必要用这个文件管理器,除非打算在性能差的机器上不用KDE做桌面。

stardict没有搞成功,因为需要很多gnome的库,

BTW: 刚发现debian上似乎非得用LANGUAGE这个环境变量才能让程序文字生效,比如LANGUAGE=zh_CN beep-media-player。但我在Cygwin上从来都是只用LANG和LC_MESSAEGS的。



1. GQview 1.4.5

这个比较简单,不需要读取什么数据文件,只要将usr/bin/gqview拷贝到~/.dist/bin就可以了。

但Help菜单下的几个菜单项会读取/usr/share/doc/gqview/README,我替换成了/home/knoppix/.gqview/README(恰好一样长!),不过不做这一步也没有问题。

如果想要中文翻译,将/usr/share/locale/zh_CN/LC_MESSAGES/gqview.mo拷贝到~/.dist/下相应的目录即可。因为我们前几天已经做了mount --bind映射了

2. beep-media-player
Knoppix自带xmms, 但这个不如bmp好看,而且不用自己配置中文(只要有中文字体就可以了)——虽然xmms配置中文也不难

cp beep-media-player/usr/bin/beep-media-player $DESTDIR/usr/bin
perl -pi -e 's#/usr/share/bmp#./../share/bmp#g' $DESTDIR/usr/bin/beep-media-player #注1
# add a wrapper
cat <$DESTDIR/bin/beep-media-player
#!/bin/sh
cd `dirname $0`/../usr/bin
exec ./beep-media-player $*
EOF
chmod 755 $DESTDIR/bin/beep-media-player

#shared library required by bmp
cp beep-media-player/usr/lib/libbeep.so.2.0.0 $DESTDIR/lib
(cd $DESTDIR/lib && ln -s libbeep.so.2.0.0 libbeep.so.2 )
sudo ldconfig # is this really needed?

# data (glade,
rsync -Ha beep-media-player/usr/share/ $DESTDIR/usr/share/

# now the Skins dir. Let bmp share the same Skins with xmms
[ ! -d ~/.xmms/Skins ] && mkdir -p ~/.xmms/Skins
[ ! -d ~/.bmp/Skins ] && (cd ~/.bmp && ln -s ../.xmms/Skins .)

# now the Plugins dir.
[ ! -d ~/.bmp/Plugins ] && mkdir -p ~/.bmp/Plugins
rsync -Ha beep-media-player/usr/lib/bmp/ ~/.bmp/Plugins/ #注2

#1: 注意perl行的语句里面最后有个g,表示行内全部替换,前两天没有留意这个
#2: 这里将自带的插件也都放到~/.bmp/Plugins下。当然用相对路径替换掉/usr/lib/bmp也是可以的,这里只是为了说明有时也可以利用程序自己的功能(比如回头我们可以试试按这个思路给Knoppix自带的gaim添加QQ插件)

2005年3月18日星期五

给Knoppix动态添加中文支持(3)

* OpenOffice的中文字体

Knoppix上带的OpenOffice不是Debian直接提供的版本,而是Knopper自己制作的一个版本,我还没有试验如何添加中文包。
但字体配置可以按如下方式(openoffice有自己的字体配置文件)

cp -a /opt/openoffice/share/fonts/truetype/*.ttf ~/.fonts
cd ~/.fonts && ttmkfdir && cp fonts.scale fonts.dir && cp fonts.dir fonts_dir.global
sudo mount --bind ~/.fonts /opt/openoffice/share/fonts/truetype

Simplified Chinese Live Extension for Knoppix - screenshot3


* GTK程序打开文件对话框中出现乱码:

export G_FILENAME_ENCODING=GB2312

* less不能查看中文编码文件:

export LESSCHARSET=iso8859

2005年3月17日星期四

给Knoppix动态添加中文支持(II)

要 在光盘版Knoppix动态运行中文输入法(这里说的是fcitx), 主要存在三个障碍(当然前提还是不自己编译),一个是/usr/share/fcitx目录下的数据文件,一个是LC_CTYPE和XMODIFIERS 环境变量配置, 还有一个问题是如何在X启动时就启动输入法程序(虽然后面启动也可以,但这样的话,在此之前启动的应用程序比如konqueror就无法使用到输入法了)

Simplified Chinese Live Extension for Knoppix screenshot 1 Simplified Chinese Live Extension for Knoppix - screenshot 2

数据文件位置问题


这个问题比较棘手: 前面配置kde-i18n-zhcn时/usr/share/locale/zh_CN可以用别的目录映射,那是因为这个目录还不是很大;现在/usr/share下并没有一个叫做fcitx的目录供我们映射,难道我们要映射整个/usr/share? 显然是M:I-3.

fcitx是否一定要从/usr/share/fcitx读取数据文件呢? fcitx的文档里面提到一些数据文件可以从~/.fcitx读取,那么是否确实可行呢?我试验了一下,发现不行 :-)
难道就没有什么办法了么?在编译的时候指定了prefix=/usr/share,在运行是能否修改么?

想到别的程序也应该有这样的问题,我看了一下Knoppix里面的tuxracer等module,发现它们用了这样一个方法:先替换可执行文件里面的路径/usr/share/foo,改为相对路径, 比如
perl -pi -e 's|/usr/share/games/tuxkart|./../share/games/tuxkart|' $DESTDIR/games/tuxkart
(注意两个字符串长度需要是一样的)
然后用一个wrapper确保真正启动可执行程序时当前目录在$DESTDIR/games
cat <$DESTDIR/bin/tuxracer
#!/bin/sh
cd `dirname $0`/../games
./tuxracer $*
EOF
chmod 755 $DESTDIR/bin/tuxracer

所以fcitx的install.sh可以做成这样:
[ ! -d $DESTDIR/usr/share/fcitx ] && mkdir -p $DESTDIR/usr/share/fcitx
cp -a fcitx/usr/share/fcitx/* $DESTDIR/usr/share/fcitx/

# copy executables
[ ! -d $DESTDIR/usr/bin ] && mkdir -p $DESTDIR/usr/bin
cp -a fcitx/usr/bin/* $DESTDIR/usr/bin/
chmod 755 $DESTDIR/usr/bin/*

cp -a fcitx/usr/bin/fcitx $DESTDIR/bin/
perl -pi -e 's|/usr/share/fcitx|./../share/fcitx|' $DESTDIR/usr/bin/fcitx

# add a wrapper $DESTDIR/bin/fcitx
cat <$DESTDIR/bin/fcitx
#!/bin/sh
cd `dirname $0`/../usr/bin
exec ./fcitx $*
EOF
chmod 755 $DESTDIR/bin/fcitx

但经过实际试验,并没有成功,fcitx还是无法找到码表和词库,为什么?
strings fcitx | grep usr/share/fcitx发现并没有什么匹配的结果strings fcitx | grep usr/share也是
最后发现只能用./..来替换/usr
perl -pi -e 's#/usr#./..#' $DESTDIR/usr/bin/fcitx


环境配置

环境变量似乎比较好解决,无非是修改~/.bashrc(或者/etc/environment文件,如果~/.bashrc不好使的话),然后source一下。

慢着! X启动的时候,是否会去读取~/.bash_profile? 记得从gdm等启动X回话的时候是不读取的。
如果这里也不读取,就比较麻烦。为了确认这一点,在~/.bash_profile中添加如下一句
echo "~/.bash_profile called: **ITEMS**quot; >> /tmp/xsession_test.log
然后用root在控制台重新启动xsession:
/etc/init.d/xsession restart

结果发现没有 :-(

所以只好改用saveconfig保存文件的方式,而且这样的话这里就简单得多了
$ sudo vi /etc/X11/Xsession.d/45xsession

--- etc/X11/Xsession.d/45xsession.orig 2005-03-17 11:01:20.000000000 +0800
+++ etc/X11/Xsession.d/45xsession 2005-03-18 10:35:28.000000000 +0800
@@ -745,6 +745,13 @@ EOF
done
}

+export XMODIFIERS="@im=fcitx"
+unset LC_ALL
+export LC_ALL=zh_CN.GB2312
+if [ -x $HOME/.dist/bin/fcitx ] ; then
+ $HOME/.dist/bin/fcitx &
+fi
+
# Check for sufficient Real Memory for starting KDE or GNOME
# (We don't want to end in a swap-a-lot loop.)
REALMEM="$(awk '/MemTotal/{print $2}' /proc/meminfo)"
@@ -753,7 +760,8 @@ if [ "$REALMEM" -lt 25000 ]; then
starttwm
else
case "$DESKTOP" in
- kde|KDE) [ "$FREEMEM" -ge "60000" ] && startkde || starttwm lowmem 82; ;;
+ kde|KDE) sudo mount --bind $HOME/.dist/usr/share/locale/zh_CN /usr/share/locale/zh_CN
+ [ "$FREEMEM" -ge "60000" ] && startkde || starttwm lowmem 82; ;;
gnome|GNOME) [ "$FREEMEM" -ge "45000" ] && startgnome || starttwm lowmem 67; ;;
larswm|LARSWM) [ "$FREEMEM" -ge "35000" ] && startlarswm || starttwm lowmem 64; ;;
enlightenment|ENLIGHTENMENT) [ "$FREEMEM" -ge "35000" ] && startenlightenment || starttwm lowmem 64; ;;

然后重启动(或者象nvidia模块那样在exit.sh里面执行一下/etc/init.d/xsession restart)

备注:

当启动时添加参数lang=cn后,/etc/init.d/knoppix-autoconfig会自动对KDE的配置进行修改,使其启动时使用zh_CN; 如果配置成中文后,以后启动又用了home=....选项,则保存下来的设置会生效。所以这方面不用再担心。

回头看输入法: 启动时若添加了lang=cn,knoppix-autoconfig会添加XMODIFIERS="@im=Chinput"到/etc/sysconfig/i18n, 这个文件虽然会被/etc/profile和/etc/bashrc读取,但这个变量并没有export出来,所以还得修改。

为了减少依赖,干脆不考虑lang=cn的情况,反正自己添加的这些东西都只有在保存$HOME的情况下才有意义,

2005年3月15日星期二

Good News: KNOPPIX-3.8 released, with UNIONFS support

In a few days, KNOPPIX Version 3.8.1 will be available on the mirrors. It's an update for the 3.8 Cebit 2005 Edition, featuring:

  • Kernel 2.6.11 as default,
  • write support
    for all virtual directories (i.e. live-installation of software without
    writable media is possible) in a running live system, made possible
    through
    UNIONFS,
  • native Support for ipw2200 (Centrino2) WLAN chipsets,
  • permanent homedirectory on harddisk (even on NTFS),
  • KDE 3.3.2, Gimp 2.2.4, OpenOffice 1.1.4 and many updates,
  • Wallpaper and bootscreen graphics design by newthinking communications.

2005年3月14日星期一

用Knoppix Live Installer添加中文支持(I)

去年初琢磨过怎么对Knoppix进行remaster以添加中文支持,但这个remaster做起来实在是费劲,尤其是压缩cloop映象一节。所以后来一直就想利用Knoppix可以保存$HOME这一点来定做一个$HOME映像,大家只要下载这个映像,启动时添加home=/dev/hda?就可以了。

Knoppix Live Installer(前次的介绍)这种方式比我原来设想的似乎要更高级一点,方便一点,于是就用这种方式来试验了一下。

中文支持主要是环境配置、中文字体、中文message catalog和中文输入法。
arphic字体包和KDE的中文i18n很容易就搞定了,但中文输入法就不太顺利。

安装字体字体

安装字体我们要做的是:
1. 用apt下载当前的ttf-arphic-gbsn00lp等字体包
2. 将包解开,将ttf字体安装到~/.fonts
3. 用fc-cache生成~/.fonts
4. 注册defoma hints
前三步很容易完成:
modules/ttf-arphic-gbsn00lp/description
"'AR PL SungtiL GB' Chinese TrueType font by Arphic Technology"
modules/ttf-arphic-gbsn00lp/files:
# basename location_to_download type md5sum
ttf-arphic-gbsn00lp none apt none
modules/ttf-arphic-gbsn00lp/install.sh:
#!/bin/bash
[ ! -d $HOME/.fonts ] && mkdir $HOME/.fonts
# copy fonts
cp -a ttf-arphic-gbsn00lp/usr/share/fonts/truetype/arphic/*.ttf $HOME/.fonts

# generate font cache
fc-cache $HOME/.fonts

mkfontscale $HOME/.fonts
cp -f $HOME/.fonts/fonts.scale $HOME/.fonts/fonts.dir
xset +fp $HOME/.fonts

麻烦的是注册hints这一步需要root权限,而且不一定能够执行(因为在Knoppix光盘上运行,大部分目录都是只读的)
好在这一步不做问题也不大。

但我还是试验了一下,似乎也可以:
(添加到install.sh):
# register defoma hints
fontsdir=$HOME/.fonts
hintfile=/etc/defoma/hints/ttf-arphic-gbsn00lp.hints
sed 's#/usr/share/fonts/truetype/arphic/gbsn00lp.ttf#$fontsdir/gbsn00lp.ttf#'
ttf-arphic-gbsn00lp$hintfile > $hintfile
sudo /usr/bin/defoma-font -t reregister-all $hintfile
注意这里对/etc目录下的配置做了改动,除非用saveconfig将配置保存下来并且下次启动时加上myconfig=...选项,否则它们不会起作用

中文message catalog

其他软件的各种语言mo都是一起安装的,所以没有什么问题,不需要再做什么。唯独KDE是例外,需要另外安装一个中文语言包kde-i18n-zhcn。

这里存在的另一个问题就是这些翻译包都要放到/usr/share/locale/下面去的,但Knoppix从光盘上运行,/usr是只读的,怎么办?

好在现在的Linux内核都支持文件系统的bind(就是将一个目录映射为另外一个目录),我们只要这样就可以了
mount --bind $mydir /usr/share/locale/zh_CN
mydir是新建立的存放message catalog的地方,kde-i18n-zhcn中的mo文件解压后就放在这里
注意映射之前需要先将原来/usr/share/locale/zh_CN拷贝到新目录,否则就只有kde的翻译了

modules/kde-i18n-zhcn/description
"Chinese Simplified (zh_CN) internationalized (i18n) files for KDE"
modules/kde-i18n-zhcn/files
# basename location_to_download type md5sum
kde-i18n-zhcn none apt none
modules/kde-i18n-zhcn/install.sh
[ ! -d $DESTDIR/usr/share/locale/zh_CN ] && mkdir -p $DESTDIR/usr/share/locale/zh_CN
# copy message catalogs
mv kde-i18n-zhcn/usr/share/locale/zh_CN/* $DESTDIR/usr/share/locale/zh_CN/
# copy other translations to new folder
# WARNING: you should have enough spaces for storing all this
cp -a /usr/share/locale/zh_CN/* $DESTDIR/usr/share/locale/zh_CN/

# rebind /usr/share/locale/zh_CN/
sudo mount --bind $DESTDIR/usr/share/locale/zh_CN/ /usr/share/locale/zh_CN/

这里还需要解决一个问题: 执行上述mount之后再从KDE的Control Center或者Configuration Wizard选择"简体中文"当然没有问题。但下次重启动呢?如何让系统启动时自动执行上面的mount? 这一步必须在/home加载后,KDE启动之前完成,时机很是问题。

考虑到非KDE桌面下用这个特性的可能性比较小,所以我选择了用KDE的Autostart特性来做这一步
(添加到install.sh:)
cat < $HOME/.kde/Autostart/knx-clx-rebind.sh
[Desktop Entry]
Name=kde-i18n-zhcn
Exec=sudo mount --bind $DESTDIR/usr/share/locale/zh_CN/ /usr/share/locale/zh_CN/
Type=Application
Icon=message
Terminal=0
EOF
但这样是否切实可能,还要进一步验证。


中 文输入法我打算用比较熟悉的fcitx来做,但这里有一个障碍: fcitx需要读取/usr/share/fcitx目录下的数据文件,系统并没有先建立一个/usr/share/fcitx供我们mount --bind,而我们也不能象前面那样映射整个/usr/share. 我现在看到一个解决办法,但是否可行,明天试验了才能知道。

2005年3月12日星期六

Knoppix Live Install的大致工作流程

我一直想不用remaster的方式给Knoppix添加中文支持,所以得先看看这个东西是怎样工作的。
问题是一篇文档也没有,我只能阅读knx-live-inst.sh这个脚本。

这个东西大致工作流程如下:
先 读取所有模块下的description(get_software()),然后用xdialog显示出来供用户选择要安装哪个模块 (choose_soft()), 然后调用该模块的eula.sh显示EULA(如果该模块有eula.sh的话),然后以non_interactive方式调用自身执行 install.sh(non_interactive()),如果安装成功完成就执行module的exit.sh(如果有的话)来完成一些post install操作,然后退出。

(下面简称Knoppix Live Install为KLI)

/usr/sbin/knx -live-inst.sh会先检查有哪些module可供安装(如果当前目录没有modules这个目录就检查缺省目录/usr/share/knx- live-inst/modules,这样倒是方便了自己括这新的module),目前提供了f-prot, flash plugin等模块。

每个module下面可能有如下一些文件
description 模块的描述文件
files 要从网上下载的文件,包含网地址、文件类型
install.sh 安装脚本
eula.sh (可选)用于显示End User License Agreement的脚本
一般用在一些非free的软件上,比如flash plugin, nvidia driver
exit.sh 安装完成后执行的脚本
menu (可选)指明需要在Kstart上创建的菜单项
exes (可选)指明程序所包含的可执行文件,KLI在AppDirs模式下使用,会在~/.dist/bin下创建相应的可执行程序
(实际是链接到~/Sofeware/$MODULE_NAME/bin/wrappper-$MODULE_NAME)

KLI 先读取所有模块下的description(get_software()),然后用dialog显示出来供用户选择要安装哪个模块 (choose_soft()), 然后调用该模块的eula.sh显示EULA(如果该模块有eula.sh的话),然后以non_interactive方式调用自身执行 install.sh(non_interactive()),如果安装成功完成就执行module的exit.sh(如果有的话)来完成一些post install操作,然后退出。

回头看non_interactive(),这个函数包含了安装的核心过程:
1. 先调用setup_destdir()修改~/.bashrc(将~/.dist/bin/加到PATH, ~/.dist/lib加到LD_LIBRARY_PATH)并创建~/.dist/bin/live-wrapper
2. 然后根据MODULE/files从网上下载指定的文件(用wget或者apt-get,见函数get_file()), 放到临时目录/tmp/knx-live-inst.$,检查md5
3. 将files列出的每个文件解压到/tmp/knx-live-inst.$/${MODULE_NAME} (knx-unpack())
4. 调用MODULE/install.sh执行模块特定的步骤
5. 如果模块有menu文件,安装菜单项目(install_icons())

再来看一些细节
1.文件下载
下载的文件可能会保存在~/.knx-live-inst/cache下(DL_DIRECTORY), 如果解压某个文件不成功会删除对应cache。
传入get_file的各个参数是:
$1: Module name
$2-$5: fields in files
$2: filename
$3: location to download (for apt type, it's empty)
$4: type (apt, tgz...)
$5: md5
注意这里是支持apt的,这可以让你安装跟当前系统配套的版本,而且这也可以利用debian丰富的软件包。

2. install.sh需要做的事情
主 要只有一件事: 将需要的文件从/tmp/knx-live-inst.$ (这也是install.sh开始运行时所在的目录),拷贝到合适的位置。如果是程序运行所需要的数据文件,为了统一,可以拷贝到~/.dist下去(不 要硬编码,用$DESTDIR变量)。可执行文件可以放到$(DESTDIR)/.dist/bin里面去。

3. live-wrapper
如果打算允许用户从桌面上运行,需要编写menu文件以便KLI创建对应的"快捷方式",这个快捷方式会用~/.dist/bin/live-wrapper来启动目标程序,以便PATH,MANPATH,LD_LIBRARY_PATH等问题不会影响程序运行。

live-wrapper内容如下:
#!/bin/bash

. ~/.bashrc (PATH, MANPATH等在~/.bashrc中设置)
PROG="$1"
shift
exec $DESTDIR/bin/$PROG "$@"


4. AppDirs模式
模 块可以采用AppDirs模式进行安装,就是每个模块各自一个目录~/Software/$MODULE_NAME,这样删除起来就比较方便。当用 AppDirs模式时,KLI会在~/.dist/bin下创建一个明为wrapper-${MODULE_NAME}的脚本,
DESTDIR=$DESTDIR (后面这个DESTDIR会在生成时被替换为实际值,
等于~/Software/$MODULE_NAME)
export MANPATH=$DESTDIR/man/:$MANPATH
export PATH=$DESTDIR/bin/:$PATH
export LD_LIBRARY_PATH=$DESTDIR/lib:$LD_LIBRARY_PATH
exec $DESTDIR/bin/$(basename $0) "$@"

然后对exes里面列出的每个名称在~/.dist/bin下创建一个到wrapper的链接。
最后KLI再调用install.sh执行后面的安装。
注意AppDirs模式下DESTDIR就是~/Software/$MODULE_NAME(所以前面说install.sh不要硬编码而要用$DESTDIR)。

2005年3月11日星期五

Knoppix Live Installer

Knoppix Hacks的示例中看到Knoppix Live Installer这样一个新东西。它并不是用来安装Knoppix(到硬盘)的,而是给Knoppix安装一些额外的应用程序(当然是指以live方式运行的时候)。

Knoppix 目前用它来安装一些因为版权(比如flash plugin, msttcorefonts, nvidia graphic cards driver)或者大小(比如tuxracer, crack-attack, pingus等游戏)等原因不能放在光盘上的东西。

[@more@]
几天前看见Knoopix Hacks的介绍,下载了网站提供的示例章节。Hack 78: Scan For Virus一节提到了可以动态安装一个f-port来进行查杀病毒,哦?还可以动态安装软件?可惜文中提到的Hack 27: Use the Knoppix Live Installer并没有提供。

在网上搜索Knoppix Live Installer并没有得到什么结果,除了后来贴的那篇文摘Remaster Knoppix Without Remastering中也提到了这个东西(刚才方注意到作者就是Knoppix Hacks的作者)。

只得回家下载了新的Knoppix,开始琢磨这个东西。从ChangeLog[1]中看到其实在v3.4-2004-05-04就有这个东西了,想来当初应该看见过但不知道是个什么东西。

用它安装额外的应用程序时需要注意一点,那就是磁盘空间,应为所有的东西都是安装到$HOME目录下的,所以应该先用mkpersisthome创建一个HOME映像,建议空间选得大一点。

2005年3月7日星期一

Fw: Remaster Knoppix without Remastering

原文位置: http://www.oreillynet.com/lpt/wlg/5964

主要讲了saveconfig/knoppix的用法,以及新的knx-live-inst,另外还提供了一个新东西: http://klik.sourceforge.net


Remaster Knoppix without Remastering

http://www.oreillynet.com/lpt/wlg/5964

The saveconfig script
----------------

The
saveconfig script within Knoppix is probably the best way to "remaster"
Knoppix without remastering. You can type saveconfig from a terminal,
or otherwise you can click Kmenu-&gt;KNOPPIX-&gt;Configure-&gt;Save
Knoppix configuration. A simple GUI will pop up and allow you to choose
what categories of settings to save from desktop and program settings,
the entire Desktop directory, network settings, graphics settings, and
other system settings. Choose the settings to save, and the device to
save them to (from a list of detected devices Knoppix provides), and
the script does the rest, creating a configs.tbz and knoppix.sh file on
the device you chose.

Next time you boot, add the cheat code
myconfig=scan and Knoppix will scan all available devices for the
knoppix.sh script and then execute it. This script will extract
configs.tbz and otherwise restore your settings.

If you are the
kind of person who likes to hack around with things, you might think to
yourself: "Hmmm I bet I could tweak that knoppix.sh script and do other
things at boot." And you would be right, the knoppix.sh script is the
key to remaster Knoppix without remastering.

What is the knoppix.sh script?
----------------------

The
knoppix.sh file is a simple shell script. When Knoppix boots, it scans
the KNOPPIX directory on the CD for a knoppix.sh file (or if you use
the myconfig=scan cheat code, it will also scan other devices on your
system). If it finds this file, it will execute it. Windows users can
think of this file as an autoexec.bat script. You can basically put any
series of commands into this script and Knoppix will execute them upon
startup. A typical knoppix.sh script looks like this:

#!/bin/sh
[ "`id -u`" = "0" ] || { echo "You need root privileges to modify the system!" &gt;
&2 ; exit 1; }
[ -d "$1" ] && CONFIGS="$1/configs.tbz"
[ -f "$CONFIGS" ] || CONFIGS="/cdrom/KNOPPIX/configs.tbz"
[ -f "$CONFIGS" ] || CONFIGS="/mnt/floppy/configs.tbz"
if [ -f "$CONFIGS" ]; then
echo "^[[1mExtracting config archive $CONFIGS...^[[0m"
tar -jpPtf "$CONFIGS" | while read i; do rm -f "$i"; done
tar -jpPxf "$CONFIGS" ; chown -R knoppix.knoppix /home/knoppix
fi

The
best way to get started with tweaking this file is to run the
saveconfig script once to generate a knoppix.sh file to work from.
There are some various checks this script runs, but its basic function
is to extract the configs.tbz file. Based on what settings you saved,
this file will overwrite settings in /etc or /home/knoppix. You can
simply change the configs.tbz file if you want and add or remove files
with the settings you want.

It's important to remember that
certain parts of the filesystem under Knoppix, such as all of /usr,
will be read-only even when the system completely boots, so this means
that the interesting areas you will be able to change are in /etc/ and
/home/knoppix/. Also, at the time knoppix.sh runs, /home/knoppix
doesn't exist yet (that directory is copied from /etc/skel later), so
while you might think that you can just add a cp filename
/home/knoppix/ command to the script, it will fail when you run it. If
you want to copy files to /home/knoppix, you will need to create a
tarball from / that includes those files, that way the /home/knoppix
directory will be created for you as that extracts.

Install Programs
-------------

While
this setup is typically used for saving your settings, you can also
work around having to install programs with this method. Knoppix has
two different popular methods for installing software directly to the
live CD, the included knx-live-inst.sh script (or click
Kmenu-&gt;KNOPPIX-&gt;Utilities-&gt;Install Software while running from
CD), or klik. Both of these programs install software directly into the
/home/knoppix directory and modify file paths so that they can run from
there. After you install programs with this method, you can save your
home directory and those programs will still be there the next time you
boot with myconfig=scan.

If your program isn't included in the
list of software you can live-install, you can attempt to install it to
the local path yourself. Of course this process will vary in difficulty
depending on the complexity of the software you want to install.



Powered by ScribeFire.

2005年2月27日星期日

Book: Knoppix Hacks

cover of Knoppix Hasks

Knoppix Hacks is an invaluable collection of one hundred industrial-strength hacks for new Linux users, power users, and system administrators using--or considering using--the Knoppix Live CD. These tips and tools show how to use the enormous amount of software on this live CD to troubleshoot, repair, upgrade, disinfect, and generally be productive without Windows--without the difficulty of installing Linux itself. [Full Description]


http://www.oreilly.com/catalog/knoppixhks/
[@more@] Some sample chapters:
Hack 5: Free Your CD to Make Knoppix Run Faster (PDF)
Hack 33: Install Knoppix as a Single-Boot System (PDF)
Hack 40: Create an Emergency Router (PDF)
Hack 61: Migrate to a New Hard Drive (PDF)
Hack 78: Scan for Viruses (PDF)