HACK & HINT
  F O R T U N E  E L E C T R O N I C  M A T E R I A L S  C O.,  L T D

Questions

  1. UNIX用户怎样与WINDOWS用户互发控制台信息?
  2. 在UNIX下如何更改显示器的刷新频率?
  3. LaTeX生成DVI文档时常出现underfull提示,它对文档到底有什么影响?
  4. 在LINUX中如何加载NTFS文件系统?
  5. 如何用NT LOADER引导UNIX/LINUX操作系统?
  6. 怎样在LINUX下使用WINDOWS的simsun字体
  7. Linux忘记root密码怎么办?
  8. 在Linux下如果挂接USB DISK?
  9. 在Linux下有关声音文件处理的应用程序
  10. How to rebuild RPM datebase
  11. 如何将RPM文件解开(不是安装)

Answers

  1. UNIX用户怎样与WINDOWS用户互发控制台信息?

    发送控制台信息给WINDOWS主机比较容易实现,需要要安装SAMBA,然后将下面的脚本复制为/usr/bin/net文件,并用chmod 777 /usr/bin/net使其可执行。

    #!/bin/bash
    #/usr/bin/net
    case "$1" in
        send)
            echo "$3"|smbclient -I "$2" -M `nmblookup -A "$2"|sed -e '1d' -e '3,/*/d'|cut -f2|cut -d' ' -f1`
                ;;
        *)
            echo "Usage:net send  "
            exit 1
    esac
    

    收取WINDOWS主机发来的控制台信息可以在你的smb.conf文件的Global段增加如下一句:

    messsage command = cat %s | mail root -s "PopMsg from: %f";rm %s;
    

    这句话的意思是SAMBA收到的信息以邮件的形式发给用户(root),邮件标题为"PopMsg from: 主机名"。当然,要想正确收到信息你需要配置好sendmail或其它邮件程序。

  2. 在UNIX下如何更改显示器的刷新频率?

    在UNIX下可以使用xvidtune这个工具来调整显示器的刷新率,在调整好之后,你需要将调整好的参数写到XF86Config文件中,否则重新启动之后又会回到原来的样子。在工具界面有个show按扭,它会将当前的参数输入到控制台,类似于:

    "1024x768"     94.50   1024 1084 1180 1356    768  769  772  812 +hsync +vsync
    

    将这个参数作为Modeline的值写到Section "Monitor"一段中,如下:

    Section "Monitor"
            Identifier   "Monitor0"
            VendorName   "Monitor Vendor"
            ModelName    "Monitor Model"
            DisplaySize  310        233
            HorizSync    30.0 - 96.0
            VertRefresh  50.0 - 160.0
            Option      "dpms"
            Modeline    "1024x768"     94.50   1024 1084 1180 1356    768  769  77 2  812 +hsync +vsync
    EndSection
    
  3. LaTeX生成DVI文档时常出现underfull提示,它对文档到底有什么影响?

    生成DVI时出现很多这样的提示,虽说不影响生成DVI, 但不很清楚对文档就底有什么影响,信息如下:

    #latex test.tex
    ...
    Underfull \hbox (badness 10000) in paragraph at lines 192--193
    Underfull \hbox (badness 10000) in paragraph at lines 194--195
    Underfull \hbox (badness 10000) in paragraph at lines 206--221
    Underfull \hbox (badness 10000) in paragraph at lines 224--230
    Underfull \hbox (badness 10000) in paragraph at lines 224--230 [7]
    Underfull \hbox (badness 10000) in paragraph at lines 240--241 [8] [9] (./test.aux) )
    (see the transcript file for additional information)
    Output written on test.dvi (9 pages, 27268 bytes).
    Transcript written on test.log.
    

    LaTeX遇到的文字间距太宽或太窄时,计算出badness值超过了设定的容忍值,因此就会有underfull or overfull的waring,用CJK包的时候常常有,可以不必理会。

  4. 在LINUX中如何加载NTFS文件系统?

    在FreeBSD等UNIX系统中对NTFS格式是默认支持的,但在LINUX中这个特性默认是没有打开的。可以通过重新编辑内核的方式打开NTFS格式的支持,但重编内核的工作量比较大,简便的方法是从这里下载一个NTFS内核支持包(RPM格式),安装后即可。

    加载NTFS分区的方法是:

    #mount -t ntfs /dev/hda1 /mnt/ntfs
    

    如需中文文件名支持,你需要这样做:

    #mount -t ntfs -o iocharset=cp936 /dev/hda1 /mnt/ntfs
    

    需要注意的是,这个内核支持包只对特定的内核版本有效(2.4.18-14),其它内核版本的支持包可以从这里下载。

  5. 如何用NT LOADER引导LINUX操作系统?

    在LINUX中有一个工具dd,它可以精确定量的复制磁盘上的数据。系统引导数据通常写在磁盘(或分区)的前512字节,因此只要用dd命令将这512字节内容复制为一个文件,即可用它来引导LINUX系统。

    假设硬盘分区情况如下:

       Device Boot    Start       End    Blocks   Id  System
    /dev/sda1   *         1      2234  17944573+   7  HPFS/NTFS
    /dev/sda2          2235      3278  18385930   83  Linux
    /dev/sda3          3279      4427    538146   82  Linux swap
    

    在上边的磁盘中,分区sda1装有WINDOWS2000,sda2装有LINUX操作系统,并且LILO安装在sda2(如装在sda1,则需要在LINUX系统中将LILO重新安装到sda2分区),在LINUX中执行如下命令:

    #dd if=/dev/sda2 of=/linux.sec bs=512 count=1
    

    这个命令会在根目录下生成一个linux.sec文件,将其复制到WINDOWS分区的C盘根目录下(具体可以使用FTP,MAIL等方式进行复制),然后修改NT LOADER的boot.ini文件,改法如下:

    [Boot Loader]
    Timeout=10
    Default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
    [Operating Systems]
    multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional" /fastdetect
    c:\linux.sec="RedHat Linux 8.0"
    

    如果不出意外,现在你就可以用NT LOADER来引导LINUX了。

    为什么那么多人喜欢用NT LOADER来引导LINUX呢?我就不用:P

  6. 怎样在LINUX下使用WINDOWS的simsun字体

    很多人装了LINUX之后,都会觉得X-WINDOWS的字体很难看,不如WINDOWS看着清晰,下面介绍如何在REDHAT8下使用WINDOWS的SIMSUN字体。

    此文摘自linuxsirs.org

    1.在/usr下建一个文件夹system,然后在里面建两个文件夹fonts和truetype,命令如下:

    #cd /usr
    #mkdir system
    #cd system
    #mkdir fonts truetype
    

    2.从windows的fonts目录拷贝以下字体文件到/usr/system/fonts,要特别注意字体文件名的大小写,以下字体文件名都是小写:

    simsun.ttf     #如果是simsun.ttc改名成simsun.ttf
    tahomabd.ttf
    tahoma.ttf
    verdanab.ttf
    verdanai.ttf
    verdana.ttf
    verdanaz.ttf
    

    3.把/usr/system/fonts下的所有文件拷贝到/usr/system/truetype下,然后从这里下载fonts.dir文件, 保存到/usr/system/truetype下,再将fonts.dir复制一份改名为fonts.scale.

    4.从这里下载redhat8.tar.gz文件, 然后再到text模式执行以下几步操作。(因为有很多兄弟说在xterm执行会提示崩溃):

    #tar zxvf redhat8.tar.gz
    #cd xft2-test-fans
    #chmod +x install.sh
    #./install.sh
    

    5.装完之后进入xwindows,然后从这里下载gtkrc.zh_CN文件并保存到/etc/gtk/下覆盖原文件.

    6.修改/etc/X11/XF86Config文件,见下面红色部分,因为篇幅关系,下面只是XF86Config文件的中间一部分,前面的、后面的部分都不要动。

    RgbPath "/usr/X11R6/lib/X11/rgb"
    
    # Multiple FontPath entries are allowed (they are concatenated together)
    # By default, Red Hat 6.0 and later now use a font server independent of
    # the X server to render fonts.
    	...
    	FontPath "/usr/system/truetype"
    	FontPath "unix/:7100"
    EndSection
    
    Section "Module"
    	Load "dbe"
    	Load "extmod"
    	Load "fbdevhw"
    	Load "dri"
    	Load "glx"
    	Load "record"
    	# Load "freetype"
    	Load "xtt"
    	Load "type1"
    EndSection
    

    7.运行命令fc-cache -f,运行qtconfig,在Fonts那个tab中激活Xft和aa.然后选择菜单中的File-save。如果运行#fc-cache -f很长时间没相应,可按ctrl+c结束,继续进行下一条操作。

    8.退出X,重新进入

    9.控制中心,将字体选择为Tahoma 9,等宽字体选择为SimSun 9(1024x768,其他分辨率按照需求修改).

    10.启动konqueror浏览器,配置,将外观字体选择为Tahoma 9,浏览器字体设置全部设置为Tahoma(1024x768,其他分辨率按照需求修改).

    11.启动konsole,将字体设置为Terminal 10,并保存设置(1024x768,其他分辨率按照需求修改).

    这个汉化的方法的优点就是打开了字体平滑,效果非常好,在浏览器里可以正常的显示粗斜体,在保证了速度的同时美化了redhat linux. 看看我的桌面效果吧~

  7. Linux忘记密码怎么办?

    一. 如果你使用lilo引导操作系统:

    1. 在出现 lilo: 提示时键入

    lilo: linux single

    (如果是图形模式的Lilo请先按ctrl+x进入文本模式), 回车后进入linux单用户模式;

    2. 修改口令文件:

    #vi /etc/shadow

    将第一行,即以root开头的一行中root:后和下一个:前的内容删除,改成如下模样:

    root::......

    保存口令文件,重启计算机,此时root密码已经为空.

    二. 如果你使用grub:

    1. 在出现grub画面时,用上下键选中你平时启动linux的那一项(别选dos哟),然后按e键;

    2. 再次用上下键选中你平时启动linux的那一项(类似于kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/),然后按e键;

    3. 修改你现在见到的命令行,加入single,结果如下:

    kernel /boot/vmlinuz-2.4.18-14 single ro root=LABEL=/

    4. 回车返回,然后按b键启动,即可直接进入linux命令行;

    5. 修改口令文件:

    #vi /etc/shadow

    将第一行,即以root开头的一行中root:后和下一个:前的内容删除,改成如下模样:

    root::......

    保存口令文件,重启计算机,此时root密码已经为空.

  8. 在Linux下如果挂接USB DISK?

    本方法在RedHat 8.0下测试通过.

    USB闪存在LINUX下的设备文件名叫做/dev/sda, 在只存在一个分区的情况下一般都为/dev/sda1, 因此使用USB盘一般可以用下面的命令:

    #mount -t vfat /dev/sda1 /mnt/usb        #事先应存在/mnt/usb目录。
    

    如果恰巧你像我一样使用的是SCSI接口的硬盘,而SCSI硬盘的设备文件使用的名称是/dev/sda1,/dev/sda2 ..., 此时,USB盘的设备名就变为/dev/sdb1:

    #mount -t vfat /dev/sdb1 /mnt/usb
    

    当然在挂接时可以不必指定其文件系统类型,LINUX会自动判断其文件系统的类型。

    #mount /dev/sda1(sdb1) /mnt/usb
    
  9. 在Linux下有关声音文件处理的应用程序

    A.关于编码和播放等问题

    (1). 用play可以播wav文件,事实上 play 只是一个 shell script, 真正的工作是由 sox 在做的. 不信你可以"vi /usr/bin/play"看看它的内容.

    (2). sox 可以播放很多不同格式的文件. 若 sox 无法正确辨认文件, 可先用 file 命令查看文件格式, 再改成正确的扩展名 (或在 sox 命令列上,文件名之前, 加上 -t参数.

    sox /usr/share/sndconfig/sample.au -t ossdsp /dev/dsp

    (3). cdda2wav 可以把cd 以轨道为单位, 转换作成 .wav文件. 例如:

    cdda2wav -sx -t 2 -D /dev/cdrom melody.wav 

    这个命令将以最高品质将CD上第二首歌 (第二轨道) 存成 melody.wav文件.

    (4). wavplay 可以播放 .wav文件.

    (5). bladeenc 可以把 .wav文件转换成 .mp3 格式文件.

    (6). 直接把 CD里的第二首歌存成 melody.mp3 格式:

    cdda2wav -sx -t 2 -D /dev/cdrom - | bladeenc STDIN melody.mp3

    (7). mpg123 可以播放 .mp3 文件.

    (8). wavrec 可以把 aumix 所指定的音源上正在播放的声音录制成 .wav 格式文件. (若希望将录制成果直接转给 bladeenc 制成 .mp3 格式, 需在录制时加 -s 48000 参数)

    (9). 录音前, 先用 aumix 确认想录的音源左边都有 "R" 字样, 不想录的音源左边是空白或是 "P" 字样.

    B.关于音乐文件的批量处理问题

    批量处理一般用在将音乐文件刻到光盘上的过程中,可以刻成CD格式,也可以直接将MP3文件直接写到CDR中。下面介绍一些常用的方法:

    注:以下命令均在bash中完成。

    (1)将所有的mp3文件集中到一个文件夹中,如果文件名中有空格,用下划线代替:

    for i in *.mp3; do mv "$i" `echo $i | tr ' ' '_'`; done

    (2)制作CD前,需要将它们转换成wav格式,命令如下:

    for i in *.mp3; do mpg123 -w `basename $i .mp3` .wav $i; done

    注:命令`basename $i .mp3` .wav 将用wav扩展名代替mp3. 我有101种方法来实现这种功能,这里是另一个:

    `echo "$i" | sed 's/.mp3/.wav/g'`

    (3)执行"file *.wav"命令,然后查看输出内容不同于16bit stereo 44100 Hz的所有文件.

    (4)如果存在格式不统一的文件,需要将他们转换为上述的规格,例如将文件track01.wav转成44.1kHz可以用如下命令:

    sox track01.wav -r 44100 track01-new.wav resample

    Sox非常之流行,因此很有可能在每个GNU/Linux发行套件中 都是缺省安装的,也可以从这里找到. 当然,命令行参数对于普通的用户多少还是有些神秘的.请参考这里,多了解一些使用技巧吧.

    7.正常化你的WAV文件,以避免过分的音量失真.我使用了一个由Chris Vaill所编写的程序,叫做normalize. 这个程序可以从这里或者这里取得.

    使用如下的命令格式,可以使得音量尽可能的大(-m是指定mix模式):

    normalize -m *.wav

    可以说,LINUX下的Sound和Midi资料是非常丰富的,有兴趣的可以看看这个主页.

  10. How to rebuild RPM datebase

    Rapire RPM database index, simply execute commands below:

     rm -f /var/lib/rpm/__db* 
    rpm -vv --rebuilddb 
    
  11. 如何将RPM文件解开(不是安装)
    rpm2cpio xxx.rpm | cpio --extract --make-directories
回到顶部
Copyright © 2003 Aquino Studio
Designed by Aquino