Conner's profile☆ Conner Wang ☆PhotosBlogListsMore ![]() | Help |
|
|
November 08 Windows 7和Ubuntu 9.10双系统的安装步骤最近刷新了BIOS,并且安装了Windows7,用得还可以,决定以后摒弃Vista和Xp。而就在10月29日,Ubuntu也发布了其最新版的9.10,因此决定将以前的Xp,Vista,Ubuntu 8.10 & Mac Leopard四系统更新为Windows7,Ubuntu 9.l10和Snow Leopard。 笔者以前写过两篇文章,1. XP、Vista和Ubuntu三引导系统安装;2. iPC Mac OSX Leopard安装成功。分别介绍了Xp,Vista,Ubuntu 8.10 & Mac Leopard四引导系统的安装,而现在要实现新的Windows7,Ubuntu 9.l10和Snow Leopard(日后再安装)三系统的安装,原理是一样的,这里再简单缀述一下。不同之处在于,摒弃了Xp,也就没有了Xp的boot.ini,但这样也更统一和简单了。 初步设想: 1. 先安装Windows 7 具体做法如下: 1. 安装Windows 7 2. 下载并安装Grub4Dos(如果你有Ubuntu安装光盘,则更简单,就不用Grub4dos了,直接光盘引导并转至第3.5步) 将下载下来的Grub4Dos解压,并将其中的grldr,grub.exe,grldr.mbr,menu.ls等四个文件拷贝到C盘跟目录,以管理员身份打开命令行并执行如下命令,从而使Win7的bootloader能够引导Grub4dos: 3. 下载并从硬盘安装Ubuntu 9.10 3.1) 从下载的Ubuntu的iso文件中解压出casper文件夹中的vmlinuz、initrd.lz并复制到C盘根目录下 3.2) 编辑C盘根目录下建立menu.lst文件,加入: 3.3) 将ubuntu-9.10-desktop-i386.iso复制到任意盘(如果是另一块硬盘、移动硬盘或U盘更好)根目录下 3.4) 重启电脑,选择"Install Ubuntu"进入Ubuntu的Live CD系统 3.5) 打开终端,执行sudo umount -l /isodevice(如果不执行这步,安装过程中将无法分区,不过如果你的iso文件在另外的硬盘或U盘上,则可省略这步) 3.6) 点击桌面上的安装快捷方式进行安装 (你可以在安装的时候上上网或者玩会游戏,这点Ubuntu设计的比较好) \ 3.7) 注意安装过程中有一个高级选项,请不要将引导程序装到mbr里去,而要安装在Ubuntu所在的分区 3.8) 安装完毕后先不要重启,称机将Ubuntu分区的前512字节拷贝出来,以备引导之用。 4. 让Windows7能够引导Ubuntu 大功告成! November 07 xargs命令的用法摘抄自《LINUX与UNIX Shell编程指南》中的内容供参考。 在使用find命令的-exec选项处理匹配到的文件时,find命令将所有匹配到的文件一起传递给exec执行。不幸的是,有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。Find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。 July 10 如何在shell中改变输出字符的颜色用C或C++: 具体颜色代码参见这篇文章: So You Like Color !!! (The mysterious ^[[ characters) The Color Code: <ESC>[{attr};{fg};{bg}m <ESC>[{attr};{fg};{bg}m The first character is ESC which has to be printed by pressing CTRL+V and then ESC on the Linux console or in xterm, konsole, kvt, etc. ("CTRL+V ESC" is also the way to embed an escape character in a document in vim.) Then {attr}, {fg}, {bg} have to be replaced with the correct value to get the corresponding effect. attr is the attribute like blinking or underlined etc.. fg and bg are foreground and background colors respectively. You don't have to put braces around the number. Just writing the number will suffice. {attr} is one of following 0 Reset All Attributes (return to normal mode) {fg} is one of the following {bg} is one of the following So to get a blinking line with Blue foreground and Green background, the combination to be used should be May 11 在交互式shell脚本中设置读超时和缺省值最近在写一个auto test的工具,以使程序build完以后进入RT。
想实现的功能为:编译完成以后提示是否进行RT,如果什么都不选,则10秒钟以后测试自动开始。
我打算通过在makefile中调用shell脚本来实现的。关键是这个读取操作超时如何实现?
通过man手册查到,在Linux下,read命令有一个超时参数-t,通过设置该参数可以直接控制read命令的超时时间。
但我们的脚本要求能在Solaris和Linux下同时使用,很遗憾的是Solaris下的read命令没有这个-t参数。
在Gary同志的提示下,终于找到了如下方案:
----------------------------------
while :; do stty -icanon min 0 time 100 echo -e "\n RT will automatically start in 10 sec. Run Test?[yes]: " read ANSWER case "$ANSWER" in y|Y|yes|YES|"") stty sane; break ;; n|N|no|NO) echo "RT not runned!"; stty sane; exit ;; esac done test code... ---------------------------------- February 18 Vimdiff的用法手工做code merge的时候,经常会用到文件比较与同步的工具。vimdiff是我比较喜欢的。 首先保证系统中的diff命令是可用的。Vim的diff模式是依赖于diff命令的。 Vimdiff的基本用法就是: 如果希望交换两个窗口的位置,或者希望改变窗口的分割方式,可以使用下列命令: 光标移动 文件合并 同时操作两个文件 上下文的展开和查看 February 10 Solaris同Linux的一点区别Solaris经常会同时提供一些常用命令的两个版本,它们一般会分别位于以下两个文件夹中。
/usr/bin 标准地System V命令 /usr/ucb 传统地BSD命令 虽然是同一条命令,但在这两个目录中的不同版本的用法可能不同。 比如ps命令,两个目录下的ps分别属于不同风格的unix命令,其参数自然略有不同,输出也可能会有所不同。 Solaris中默认使用/usr/bin中的ps版本,用惯了Linux的朋友可能发现ps aux不能work了。这时你可以尝试使用用ps -ef来替。或者使用BSD风格的/usr/ucb/ps aux命令,它和Linux地ps命令相当。 January 18 Windows/Linux/Unix/Mac多系统中时间不一致的问题先说两个概念吧: Windows(XP和VISTA)和(Linux/Unix/Mac)缺省看待系统硬件时间的方式是不一样的: 这样,当PC中同时有多系统共存时,就出现了问题。假如你的Ubuntu和WindowsXP中设置的时区都为北京时间东八区,而你在Ubuntu中把当前系统时间更改为9:00AM。则此时硬件中存储的实际是UTC时间1:00AM。这时你重启进入Windows后,你会发现windows系统中显示的时间是1:AM,比Ubuntu中慢了八个小时。同理,你在Windows中更改或用网络同步了系统时间后,再到Ubuntu中去看,系统就会快了8小时。在实行夏令时的地区,情况可能会更复杂些。 原因知道了,那怎么来解决这种冲突呢。一种就是让Windows把硬件时间当作UTC,与Linux/Unix/Mac保持一致。另一种就是让Linux/Unix/Mac把系统时间当作本地时间,与Windows保持一致。 1. 让Windows把硬件时间当作UTC 2. 如何让Linux/Unix把硬件时间当作本地时间(以Ubuntu为例,其它Unix类系统与之类似) 3. 让Mac把硬件时间当作本地时间 January 17 iPC Mac OSX Leopard安装成功装了好多遍,最后终于成功装上了,在此记录一下。 我的本本硬件配置如下: 原有系统为: 最初先尝试的ToH版的,刻了一张抹盘工具的CD和一张安装DVD。但是抹盘工具死活不能启动,显示still waiting for root device。不管是开启ACHI还是关闭ACHI都是这样。那张安装DVD倒是能启动,但老是抹盘不成功。 后来刻了个iPC版DVD,一开始也是不能抹盘。后来用PM将分区ID改为AF,就可以成功抹盘了。 安装过程一切顺利,就是装完后老是一出现苹果界面就重启。后来在安装过程中选择单CPU补丁,就可以成功启动了。 但是新的问题又来了,重启开机后看到多语言欢迎后显示: 总结一下,安装过程中要选择的部分如下: 安装完成后,运行如下命令将Mac系统启动项加如Vista的Boot Manager启动菜单中:C:>bcdedit /create /d "MAC OSX Leopard" /application bootsector January 03 XP、Vista和Ubuntu三引导系统安装先装Xp再安装Vista,由Vista的bootmgr引导ntldr,ntldr引导Xp。这没什么技巧,也没什么好说的。关键说说第三个系统Ubuntu 8.10 Desktop (Alternate版的安装也可借鉴此法)的安装。 1、下载最新版本的Grub4DOS,解压缩后将目录中的grldr(不是grldr.mbr),grub.exe和menu.lst这三个文件复制到C盘根目录下 2、在boot.ini 文件内容末尾加上一行 C:\grldr=“Grub 4 Dos” 3、从下载的Ubuntu的iso文件中解压出casper文件夹中的vmlinuz、initrd.gz并复制到C盘根目录下 4、编辑C盘根目录下建立menu.lst文件,加入: 5、将ubuntu-8.10-desktop-i386.iso复制到任意盘(如果是另一块硬盘、移动硬盘或U盘更好)根目录下 6、重启电脑,进入Ubuntu的Live CD系统 7、打开终端,输入sudo umount -l /isodevice(如果不执行这步,安装过程中将无法分区,不过如果你的iso文件在另外的硬盘或U盘上,则可省略这步) 8、成功后点击桌面上的安装快捷方式进行安装 9、注意安装过程中不要将引导程序装到mbr里去,而要安装在Ubuntu所在的分区 10、再次启动Ubuntu Live CD。假设Ubuntu安装在sda3上,则执行: sudo dd if=/dev/sda3 of=/dev/sda6/linuxloader/ubuntu.lnx bs=512 count=1 11、重新启动,进入vista,将上一步生成的ubuntu.lnx拷入c盘根目录下 12、用管理员权限运行cmd来添加ubuntu启动菜单: 重启系统就可以从菜单中选择进入Ubuntu了。 至此,Grub 4 Dos 的任务就算完成了,你完全可以将它从C盘和boot.ini中去掉。不过你可能会想留着它可能还有用,万一以后又从硬盘装系统什么的,还能用到。但是它待在XP的ntldr的启动菜单中又很不方便,每次开机进XP都要从两层菜单中选择。其实可以不让 grub 4 dos 菜单待在XP系统的ntldr菜单中,而待在VISTA的bootmgr的菜单中。但必须做如下设置: 13、将grldr.mbr、grldr、grub.exe和menu.lst拷到C盘根目录下 14、用管理员权限运行cmd来添加grub 4 dos启动菜单: 这样无论是XP、VISTA、UBUNTU 还是 GRUB 4 DOS 都统一由Vista的bootmgr来进行管理,启动时只做一层选择即可,很方便而又不容易出现什么问题。 注:大家可以看出1、2两步所完成的功能完全可以用13、14这两步所用的方法来实现。 嗯,很有成就感嘛!就还差一个Mac系统了,抽空也找个来装装玩! December 12 Redhat Eterprise Linux 5允许root帐户的telnet和ftp服务其实这些东西都没什么技术含量,有时工作中需要用到,而时间长了又经常就会忘掉,所以为了以后查找方便,就记在这里了。
1. 为root用户开启telnet服务
红帽推荐用户使用安全的ssh来远程登录服务器,而不要使用telnet,因为telnet连接服务器时,密码是以明文方式传输。因此默认root是不允许telnet直接登录服务器的。 希望强制允许root通过telnet连接服务器,可以修改/etc/pam.d/login
注释掉这样的一行: auth required /lib/security/pam_security.so 有的机器上可能是这样的一行: auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so 修改完成以后,用户应该就可以以root身份登录服务器了。
如果还不行,那就将/etc/securetty这个文件改个名,该文件是定义root只能在tty1~tty6的终端上登录的,[man login]中有相关说明。 2. 为root用户开启ftp服务
修改/etc/vsftpd/vsftpd.conf local_enable=YES 这样就允许本机Linux帐号进行ftp登录。 注释掉/etc/vsftpd/ftpusers的root这行; 注释掉/etc/vsftpd/user_list的root这行; 这样就允许root帐号进行ftp登录了。 November 28 同时使用SSH命令行方式和PUTTY方式实现自动登录读本篇前请先阅读前些天写的ssh安全自动登录这篇文章,它是关于如何使用SSH命令行方式实现自动登录的。 由于ssh-keygen -t rsa命令所生成的私钥文件与PUTTY所用的私钥格式是不一样的,所以要借助PUTTY提供的一个叫PUTTYGEN的工具来进行转换。 打开PUTTYGEN.exe,导入用ssh-keygen -t rsa命令生成的私钥文件X,然后另存为私钥文件X.ppk,这样生成的私钥文件就可以被PUTTY使用了。 具体使用方法如下: 1. Session选项卡 November 09 tar命令的通常用法tar -cvf filename.tar files 将所有文件打包成filename.tar tar -tvf filename.tar 显示filename.tar包内的文件列表 tar -xvf filename.tar 将filename.tar文件解包 November 04 ssh安全自动登录1.在本地主机上运行 如果密钥设置了密码, 就用密钥的密码登录,如果没设密码,就直接登录进去了。 由于scp和sftp都是基于ssh的,因些这样生成的密钥亦可用于scp和sftp,这要你就不用每次都输入密码了。 echo "FROM: $1" if [ -e ~/.ssh/X ] #/bin/bash if [ -e ~/.ssh/X ] then sftp -o IdentityFile=~/.ssh/X connerw@host1 else sftp connerw@host1 fi October 31 Vim-Ctags-Taglist阅读C/C++代码之(四)—快速打开工作空间很不幸,Ctags的auto-cursor-preview脚本并不能和Taglist很好的在一起工作。它们都借助于updatetime来更新信息,有时它们会出现窗口的错乱。所以我常会在两种模式下工作。 我会在$HOME目录下建立一个文件夹来管理我的工作空间(估且这么叫吧),不妨叫viworkspace。我通常会这样组织我的工程,假定我的源码在.../src/目录下,我会在~/viworkspace/下建立一个符号链接src指向实际的源码目录.../src/。然后我在~/viworkspace/目录下运行ctags -R *,会在当前目录生成一个tags文件。然后我会在以下两种模式下工作: 第一种就是auto-cursor-preview模式 我在~/viworkspace/创建一个叫workspace1的文件,其内容为如下的vi脚本: set tags=~/viworkspace/tags "设置tags文件 "设置自动预览 func PreviewWord() let w = expand("<cword>") " get the word under cursor if w =~ '\a' " if the word contains a letter silent! wincmd P " jump to preview window
第二种就是Taglist模式 "******************************************************** let Tlist_Compact_Format=1 "设置标签列表为紧凑模式,去掉多余空行 TlistToggle "开启Taglist列表 set tags=~/viworkspace/tags "设置tags文件 最后,在.vimrc中添加键盘映射。 "******************************************************** 这样,只要以后启动了vim,按下<F2>就会自动进入源码目录,用netrw打开文件列表,并进入auto-cursor-preview模式。同理,按下<F3>就会自动进入源码目录,用netrw打开文件列表,并进入Taglist模式。在这两种模式下,只要在文件列表中选择要打开的文件,并按回车,就可以开始代码之旅了。 October 25 Vim-Ctags-Taglist阅读C/C++代码之(三)—Taglist
想不想一侧显示变量或函数列表,另一侧显示源代码窗口,Taglist可以帮你实现这点。 1.下载taglist.zip并解压到 $HOME/.vim,会产生以下两个目录: 2.确保.vimrc文件中开启了: filetype on 2.切换到 $HOME/.vim/doc,启动Vim并执行":helptags ."命令来产生taglist的帮助文件,没有这一步,你在VIM中就无法查看taglist的帮助。 3.使用":Tlist[Toggle]" 命令开启与关闭taglist窗口,使用TlistOpen和TlistClose来打开和关闭taglist窗口。 4.使用回车键或鼠标双击来浏览相应tag。用o在新窗口中打开标签,用p在预览窗口打开标签使鼠标仍留在taglist窗口。 5.为方便使用,在.vimrc中作如下设置: 下面这张效果图来自Taglist官方网站的Screenshot。 October 24 Vim-Ctags-Taglist阅读C/C++代码之(二)—Tag预览在使用Ctags生成的标签信息阅读代码的时候,可以在你的.vimrc中加入如下脚本来实现将当前光标下的标的签定义自动显示在预览窗口中。 set updatetime=50 "setup for ctags auto-cursor-preview func PreviewWord() let w = expand("<cword>") " get the word under cursor if w =~ '\a' " if the word contains a letter silent! wincmd P " jump to preview window October 23 Vim-Ctags-Taglist阅读C/C++代码之(一)—Ctags很多Linux/Unix程序员都希望能拥有Source Insight那样的杀手级的工具,能在代码之间无拘无束、来去自如。但是Source Insight只能用于Windows平台,而且价格也不菲。当然,我们会去找一些替代案,虽然功能无法超越Source Insight,但是够用就好,不是吗?Ctags就是一个很好的借助标签信息来实现代码跳转和补全的一个很好的选择。 1.在源码根目录下执行ctags --sort=yes -R 2.vi -t $tag启动vim并自动定位到tag的定义处。如果不是在tagfile所在目录下打开vim,需在vim启动后设置set tags=path/tagfile。 3.如果有鼠标的话,设置 4.如时标签有多个匹配,会显示tag i of N,可用:tfirst跳转到第一个匹配,:tlast跳转到最后一个匹配,:tprevious跳转到前一个匹配,:tnext跳转到下一个匹配,:tselect选择要跳转的匹配。 5.其它 6.常用命令助记 g CTRL+] 与tjump等价 下面这些命令与上面类似,但是都是在预览(preview)窗口中显示tag定义。 October 20 vim的目录浏览功能netrw插件是vim的标准插件,在.vimrc中只要设置了 netrw插件的项是网络读写,但我们经常用到的却是它的目录浏览功能(取代了先前的explore.vim)。 打开目录命令 浏览文件 命令列表 October 16 Ubuntu下Samba方式访问Vista经常要在VMware虚拟机下与windows主机共享文件,一个方案就是在Guest OS中装上VMware-tools,然后采用文件夹共享。但是并不是所有Guest OS都能找到对应的VMware-tools。而Samba则是一个很好的方案: 我的Host OS是Vista,Guest OS是Ubuntu 8.04。 1. 先在Vista中认置一个共享文件夹叫vmshare。 2. 再在Ubuntu中安装Sambfs,执行如下: 3.手动挂载: 4.开机自动挂载: mount -a October 09 Red Hat Enterprise Linux 5上安装java运行环境 今天在 Red Hat Enterprise Linux 5上安装eclipse的C/C++版本,但是提示JVM版本为1.4,必须1.5以上才能运行。于是下载了一个jdk-6u7-linux-i586-rpm.bin文件进行安装,但是安装完以后,运行java -version,仍然显示为版本1.4。
要经过什么样的配置呢?从网上搜索了一些方法,凭我的直觉觉得这些方法都不是我想要的。经过摸索,我找到的方法如下。
/usr/bin/目录中有4个链接文件:java、javac、javadoc、javaws。它们分别指向系统默认的java安装,即先前的1.4版本。
从Sun网站下载的jre或jdk默认安装在/usr/java目录下。这个目录中还有两个链接文件:链接default指向latest,链接latest则指向java的最新版本目录。
于是,我在/usr/bin/ 目录下执行以下4条命令,重建java链接:
ln -sf /usr/java/default/bin/java ln -sf /usr/java/default/bin/javac ln -sf /usr/java/default/bin/javadoc ln -sf /usr/java/default/bin/javaws 这时运行java -version,正确显示java version "1.6.0_07"。
因为我不是java程序员,所以对java的配置不是很了解,但是上面的方法的确让我的eclipse工作了。如果您有更好的方法,请赐教,不胜感激! |
|
|