2008-09-28

用kexec快速切换内核

详见:http://www.linuxsir.org/main/node/296

总的来说:



  1. 内核版本必需为 2.6.13 或以上,因为自该版本起内置了 kexec 系统调用的程序。

  2. 内核编译需加入 kexec 支援
    Processor type and features --->

    [*] kexec system call (EXPERIMENTAL)


  3. 系统需要安装 kexec-tools

  4. 用 /sbin/kexec 加载另一内核,语法是:
    kexec -l <kernel-image> --append="<command-line-options>" 
    如:
    kexec -l /boot/lfskernel-2.6.25.4 --append="root=/dev/sda6 ro nomce vga=0x317"

  5. 想重启内核,就以 kexec -e 来切换。




//EOF Read More...

2008-09-26

FtpViewer 初始版本源代码

源代码下载:http://sites.google.com/site/dave3068/Home/my-project/FtpViewer_src.zip

见:http://sites.google.com/site/dave3068/Home/my-project

history:
2008-09-26 最初版本。
2008-09-27 有所改进,界面有所改进、增加删除功能。(今后不会再增加功能,有违做这个软件的初衷)

注:
为何不加入上传下载功能?
毕竟我写这个工具的初衷是:某FTP提供限额文件存放服务,而我的限额到了,我想看看哪些东西占用空间,并将其删除,并没有其它需求。
而对于FTP的上传、下载:每个操作系统安装后一般都默认自带了命令行的ftp工具,通过脚本可以很方便的实现文件的上传、下载。所以我认为没必要再提供多余的操作。


//EOF Read More...

sun.net.ftp.FtpClient 编码问题解决

使用 sun.net.ftp.FtpClient 在遇到中文文件名和中文目录名时会出现些问题。

  1. list() 得到的文件名乱码,这个很好解决:

    /**
    * 字符编码转换:ISO-8859-1 => GBK
    *
    * @param str
    * @return
    * @throws UnsupportedEncodingException
    */
    public static String iso2Gbk(String str)
    throws UnsupportedEncodingException {
    return new String(str.getBytes("ISO-8859-1"), "GBK");
    }


  2. 遇到某中文目录时会无法进入,这个问题困扰我好几天(这几天一直在摆弄这个)。
    发现服务端接收到的中文目录名都成乱码了,一开始我以为通过 new String() 的方式也可以解决。
    其实不然,怎么试都不行,好象在 sun.net.ftp.FtpClient 里面会自动转换成 ISO 的编码。
    今天偶然有机会看到 sun.net.ftp.FtpClient 的源码才发现果然如此。
    sun.net.ftp.FtpClient 有个超类 sun.net.NetworkClient 在里面会将所有传输出去的编码都转换成 ISO 的。看来问题出在这里了。
    同时 sun.net.NetworkClient 还有个:

    /* Name of encoding to use for output */
    protected static String encoding;

    这个可以控制其编码,于是乎:

    /**
    * 设置连接编码
    *
    * @param encodingStr
    */
    public static void setEncoding(String encodingStr) {
    sun.net.NetworkClient .encoding = encodingStr;
    }

    将编码设置成 GBK 问题即解决。


至此,遇到的两个编码问题都已解决,一切都是那么轻松 ^_^ 。

//EOF Read More...