2012-04-19
VMware虚拟机有关的几个问题

环境:XP+VMware 7.0 英文版 ubuntu 10.4 fedora 13

VMware里面安装ubuntu之后,第一次进去的时候,来到输入密码界面的时候居然键盘失灵了,这个比较囧。后来上网搜了下,发现是设置问题,但是要改设置得先进去才能改,这里首先可以通过如下方法进去:

看到上图中右下角的红色框框里面的那个小人没,点击小人来到下面的图片

点击小人会出现上图中的红色框框中的那个东西,然后点击这个东西,就会出现后面的那个界面,然后选中第一个就可以了,重启之,发现出来了软键盘,然后就可以进入系统了。

OK,现在需要修改配置文件让登陆的时候,键盘有效。

在终端输入:vi /etc/default/console-setup

然后来到文本的末尾,把[XKBMODEL=”SKIP”]一行中的”SKIP”改成”pc105”,把[XKBVARIANT=”U.S.English”]中的”U.S.English”改成空然后重启就可以了

第二个问题是VMware里面不能用U盘,我记得以前自己的可以的,只要在插入U盘的时候,选中虚拟机,然后就会询问是否在虚拟机里面用U盘,可是现在的信息是:host usb device connections disabled。上网搜了下,发现是一个服务没有开启,果断开启之.开启的方法如下:

控制面板—>管理工具—->服务—–>找到”VMware USB Arbitration Service”然后开启之,当然你也可以选择让这个服务自动开启就行了,以后就不用这么麻烦了。然后重启虚拟机就OK了

VMware里面装了fedora之后,进去发现fedora的鼠标左键不能用了。这个有点坑爹啊。

解决方法如下[需要root权限]

首先调出终端:在桌面右击—>a.然后在命令那一栏添上gnome-terminal就行了.

这里会在桌面加一个terminal的快捷方式,然后上下键可以移动了,选中terminal之后确定就启动terminal

接下来输入如下命令vi /lib/udev/rules.d/69-xorg-vmmouse.rules”然后在里面加上一句

KERNEL==”event[0-9]*”就行了,当然如果你加到中间的话,要加上一个逗号

接下来重启就行了

一切Linux的问题貌似都和配置有关~~

 

2011-07-09
Fedora 13 H3C联网

搬了宿舍,然后ip神马的好多都变了,于是又得改了,可是隔了好久了都快忘记了.幸亏有history^-^

这里把整个过程说下,也当是个备份

如果想下文件的话猛击我吧 (文件在文章末尾,这里有自动配置脚本,使用请慎重)

首先你得安装H3C的文件.如果缺一个c++包的话,那么自己下下来之后放在/usr/lib下即可

然后你需要配置ip和gateway等,下面的操作默认你是root权限

vi /etc/sysconfig/network-scripts/ifcfg-eth0

加上你的ip,gateway,dns,netmask等等之后就行了当然到了这里还不能联网,下面你就用system-config-network命令调出一个图形化窗口,修改eth0,这里的修改其实是把ip修改成静态的(其实上面可以不用编辑那么多,直接在这里以下改好也行).然后保存退出,会提醒你重启网卡或计算机之类的,你重启就行了,然后就可以联网了,如果还不行的话,你打电话问网络中心怎么回事吧,那有日志

2011-06-22
XP和Fedora的双系统之路

本来电脑上有XP和Ubuntu了,不过还是不喜欢Ubuntu,总感觉用上去不爽,想试试Fedora(中间试过CentOS,感觉太庞大了- -),我装的是Fedora 13,一开始想自己刻dvd,然后安装,无赖一直刻不上,不知道是啥原因,刻了两张都说盘被损坏了,我囧啊.然后就只能从硬盘安装了,在网上搜到一个硬盘安装fedora 13和xp双系统的帖子,照着做就行了,似乎只需要那个grldr文件就可以引导了,然后那文章就讲的很详细了,首先是让你可以进入引导程序,也就是在boot.ini里面加上一句C:\grldr=”Boot Loader”,这样只要grldr文件的位置在c盘根目录下就可以引导了,接下来就是安装fedora了,也就是如下命令







root (hd0,0)

kernel /isolinux/vmlinuz

initrd /isolinux/initrd.img

boot

当然hd0,0这是你xp装在了c盘第一个分区,如果不是那就类推吧,然后接下来就是会要求你选择fedora的ISO文件放在哪,那么你放哪将就填哪,哪里也需要填那个盘,自己推一下就行了(如果不对会让你回来继续选择的),选对之后,就会进行安装了,安装过程中只有一点一定要注意的就是千万别覆盖了你的xp,也就是选择装在哪的时候,空白区和最后一个create custom layout,边上有个缩略图,自己看看.
然后就是把修改写到硬盘,也就是安装fedora到硬盘了,接下来就是配置用户名和密码神马的了,其他的就over了.

======================我是分割线============================
这里说下联网,我的是H3C的校园网,由于在Ubuntu下联过网,所以轻松点,首先配置ip和dns gateway等等东西,这些在文件etc/sysconfig/network-scripts/下的ifcfg-eth0,自己加上就行了,然后在命令台敲命令system-config-network(命令可能有误,不过第一个是system,自己tab一下吧)然后选择 静态ip(其实在配置ip dns gateway那可以加上一句BOOTPROTO=static应该就行了),然后安装H3C的客户端,网上一搜一大把(没图形化界面,然后连接是用linux1x的)网上有一个自动配置脚本,不过对于Fedora 自己得改脚本,不然可能会悲剧.我是自己配的(因为不会改脚本- -,太难改了&太懒了)配好之后应该就可以直接连上网了,如果不行,你可以打电话给网络中心(别和我说你们学下的校园网没网络中心,没有那就自己折腾吧)问问是啥原因,因为那边有记录的(我有次就是ip没配好,为了网络中心才配好的)

==========================邪恶的分割线========================

一般来说还有一个东西需要安装,那就是中文输入发,我习惯了fcitx,所以就继续用它,(现在有各种云输入法,暂时用用可以,但是云输入法绝非长久之计啊)yum install fcitx之后,就各种无语了,一个不自动启动,而是ctrl+space不能切换输入法,然后网上搜了一大把,基本就是一个各种软件冲突,其实我也不知道到底谁和谁冲突,怎么冲突的- -||.然后我重装了几次之后,居然就可以了,不过中间还是安装网上的做法做的,没做完一次就要重装一次啊.在ubuntu下可以用im-switch来设置的,fedora似乎有个im-chooser,不过不会用,路过的有谁会的就说下呗,那个开机自动启动,可以在系统-首选项-启动应用程序增加一个叫fcitx的启动项就ok了,只要路径对了就没问题,名字那啥都是浮云

2011-03-25
C语言编译时的undefined reference to 'sqrt'

今天编译一C程序时,发现无论如何sqrt就是没定义,math.h也加了.实在是无语阿,后来搜了一下,发现是链接时的问题,也就是需要自己链接数学库,似乎Linux下的数学库是不自动链接的,也就是说需要你去链接.不过有些系统还是自动链接的.如果发现你加了某个系统函数的头文件还是出现没定义的错误的话,可是试着自己在编译时加上链接该库的指令,链接数学库是用的 -lm 也就是gcc -o example.out example.c -lm

2010-12-31
Linux-fork(2)

由于这篇会比较长,所以就不接在上一篇后面了,在此再开一篇.这里说说和fork有关的两个比较有趣的程序

第一个是这样的[一组,一共两个程序对比]

#include ;
#include ;
int main ()
{
pid_t pid
printf(fork);//注意这句和下面的区别
pid=fork();
if (pid < 0)
printf(error in fork!);
else if (pid == 0)
printf(i am the child process, my process id is %dn,getpid());
else
printf(i am the parent process, my process id is %dn,getpid());
retrun 0
}
#include ;
#include ;
int main ()
{
pid_t pid
printf(fork\n);//注意这句和下面的区别
pid=fork();
if (pid < 0)
printf(error in fork!);
else if (pid == 0)
printf(i am the child process, my process id is %dn,getpid());
else
printf(i am the parent process, my process id is %dn,getpid());
return 0
}

上面的两个会输出什么呢?

答案是

第一个输出:

forki am the child process, my process id is 2955

forki am the child process, my process id is 2954

第二个的输出是

fork

i am the child process, my process id is 2955

i am the child process, my process id is 2954

是不是觉得和我昨天说的不一样呢?怎么第一个中的fork输出两次呢?这里就和printf的缓冲有关了,具体的可以参考这里

下面的是转自这里

我试验了下,结果和博主的相似.

.给你两分钟抢答时间

.

.

.

.

.

.

.

.

OK,答案来了.

对一下答案吧:[这分析和结果是复制过来的.]

[hardy@localhost fork]$ ./fork
father
son
son
son
father
father
son
father
son
son
father
father
son
father
总共7个son7个father。你答对了么?

这道题需要在纸上画画才好理解[由于格式会不对,所以我用图片,速度不给力的还请见谅]

其中每一行分别代表一个进程的运行打印结果。

当产生子进程的时刻,子进程打印son,当子进程调用fork的生成子子进程,他就提升为father。
总结来说,father永远打印father,son在fork之前是son,fork之后就为father,同时生成新的son。
这个比喻就像真正的父子,孩子长大了生了小孩,孩子就成了父亲。而父亲永远是父亲。

我自己试验的时候的结果如下:

2010-12-30
fork函数小测试

本篇文章还是beta版,由于本人对这个函数的了解还不是非常清晰,暂时只知道返回值有两个,返回两次.一个是,表示创建的子进程,一个是创建的子进程的id.如果返回-1表示创建失败,下面就不考虑了.下面的函数是测试用代码.

代码如下:

#include
#include
#include

int main(void)
{
int p;
printf(“main——\n);
p = fork();//调用fork函数
printf(“after-fork*\n);
if(0 == p)
{
printf(“child %d—–ppid->%d\n,getpid(),getppid());
}
else
{
printf(“parent %d—\n,getpid());
}
printf(“over—*\n);
return 0
}

结果如下:

main——

after-fork*

child 2579—–ppid->2578

over—*

after-fork*

parent 2578—

over—*

上述结果说明一些事情:首先是前面我说的.还有就是fork函数后面的都会被子进程和父进程都执行.还有一个是说这两个是并行的,也就是说可能先执行父进程再进行子进程,不过暂时结果没见过.等进一步了解之后,再来更新本篇文章.

2010-12-23
Linux Grub加密

上一篇文章中说到最好给grub也加密,由于我自己也没加密过,所以搜了下,方法如下 本人试验过可用
为grub密分为二种,一是明文,二是采用MD5算法的加密。
明文加密:编辑 grub.conf文件
vi /boot/grub/grub.conf 在default=0下面加一行 password=1234567890(这个就是明文密码)

MD5加密:先要命令 grub-md5-crypt计算出MD5的值,然后复制这个值到grub.conf文件中 password –md5$BYxEn$e5X/xOTS2pTpPPWtgIMhU1(这个就是用MD5加密后的值)
转载自:http://blog.csdn.net/magicbreaker/archive/2008/11/23/3357209.aspx 另外可以参照:http://linux.chinaitlab.com/safe/798285.html[说的比较好]

2010-12-23
Linux下单用户模式修改错误配置文件

晚上同学发过来一条消息说他的Linux出问题了,让我看看,如图

root前面多了个sarwar
一开始我以为他他改的PS1,让他推出用root登录下再改PS1,可是他说他的密码错误了,这个就尴尬了,然后问他进行了什么操作,他说改了/etc/passwd这个文件.这就是问题所在了。到这里一般有两种方法解决,一是重装,因为是装载虚拟机里面,重装也不是什么很大的事,不过Red Hat9装起来还是比较麻烦的。二是通过单用户来修改错误配置,下面就讲下怎么通过单用户来修改错误配置首先来到grub项的时候如下图

这时按下e然后出现下面的界面

这时选中第二项再按下e会出现如下界面

在这里输入空格加1[空格是必需的,1代表单用户模式]然后回车出现如下界面

这时再按下b然后系统就会重启,重启后就是以单用户模式启动了.于是你就可以在这里修改错误的配置文件了.所以一般来说不需要知道别人的密码也可以进入他的Linux系统,因为用如上方式可以修改密码,而且不需要知道原来的密码.所以一般最好给grub也加上密码.这样就可以了

2010-12-22
Linux Shell遇到的问题

今天上实验课,遇到了一些Shell的问题,有些是帮同学解决问题时遇到的,有时是自己遇到的,也让我对某些命令有了个更好的了解.写此文章纯属备份.

挂载U盘的方法.

1)插入U盘,fdisk -l得到U盘对应的分区.

2)新建一个文件夹,一般建在/mnt下,名字一般加usb.[mkdir usb]

3)挂载.mount /dev/sdb1 /mnt/usb[红色的地方是你机器上查出来的分区]

卸载就直接用umount /dev/sdb1或者umount /mnt/usb

还有就是shell里面的x=x+1的写法,一开始由于这个导致我的程序各种无语,要不就是死循环,要不就是找不到命令.后来一个命令一个命令的分开试,然后再组起来.才发现是这句话的错误,原因是我的’+’两边没加空格.这还是自己写的少的原因.x=x+1有两种写法, x=$(($x + 1))和x=expr $x + 1[是反引号]

2010-12-15
VMware 安装RedHat9时光盘无法挂载

昨天,同学把我叫过去,让我帮他装RedHat9.以前我也没装过RedHat9,不过我想应该很容易的,和其他的Linux系统应该没什么差别.不过中间还是遇到了一个小问题。问题如下 当第一个ISO文件安装完成后,得换盘.这时问题来了,换了盘之后出现无法挂载(could not mount).这个原因其实是VMware造成的.也就是说,当你的第一个ISO完成安装后,VMware把它弹出来了,这时它会断掉CD connection.如下图:[红色的地方]

这时红色箭头所指的地方是没勾上的.也就是会出线无法挂载的问题.只要勾上就行了,然后换盘就可以继续安装了。