双系统XP和Ubuntu: 重新安装XP后GRUB出错进不了Ubuntu的解决办法
使用ubuntu liveCD
打开Terminal
sudo -i (使用root身份)
grub (这个地方需要花一点时间)
find /boot/grub/stage1
(会出现(hdx,y) -> 里面没有空格. 我的出现的是(hd1,3),说明ubuntu是在第二块硬盘上,第3个分区)
root (hd1,3)
setup (hd1)
grub> setup (hd1)
Checking if “/boot/grub/stage1″ exists… yes
Checking if “/boot/grub/stage2″ exists… yes
Checking if “/boot/grub/e2fs_stage1_5″ exists… yes
Running “embed /boot/grub/e2fs_stage1_5 (hd1)”… 16 sectors are embedded.
succeeded
Running “install /boot/grub/stage1 (hd1) (hd1)1+16 p (hd1,3)/boot/grub/stage2
/boot/grub/menu.lst”… succeeded
Done.
grub>quit
Ubuntu下设置VirtualBox的Bridge Network(桥接模式)
****************************************************************************
系统: Ubuntu 8.04
问题: VirtualBox创建的虚拟机WINXP,使用Bridge Networking,代替NAT
*******************************************************************************
因为把一个旧电脑当作一个服务器,并且晚上用来下载东西。系统是Ubuntu,用VirtualBox创建了一个虚拟系统XP,在XP中安装EMULE来下载。结果发现EMULE是LOWID。进而开始研究为什么会是这样,才会开始鼓捣虚拟机的Bridge Networking(桥接模式)。
系统本身是开启了UPnP端口的,EMULE使用的端口也都开着。路由器中也开放了相应的端口 打开了UPnP和DMZ为相应电脑的IP地址比如说是192.168.0.115。
后来才想到,路由器指向的IP是Ubuntu系统的IP,而不是虚拟系统的。 因为在虚拟系统中,VirtualBox默认使用的是NAT,所以默认IP是10.0.2.*,子网掩码是255.255.255.0,网关是10.0.2.2。因为路由根本没指向虚拟系统XP,所以EMULE根本就无法得到HIGHID。
NAT是VirtualBox默认的Host OS 和Guest OS连接方式。这种方式下,Guest OS是Host OS的内网,它们之间不是对等的,IP地址也不是在一个区域。 但是是一个比较简单方便的方式。但是路由器中不能进行虚拟机的端口映射。你不能输入10.0.2.*进行指向,因为路由中已经设好了区域为192.168.0.*。
Bridge Network方式下,Guest OS的IP和Host OS的IP属于同一个区域。他们之间是对等。相当于这个区域中的两个独立的电脑。路由器因而也能进行虚拟机的端口映射。
VirtualBox没有像VMWare那样可以自由选择Bridge Network方式。所以需要手动来设置。
设置方式有两种:
一种是通过DHCP,但是这种IP地址不是固定的。
第二种是手动设置静态IP地址。本文是采取这种方式。
首先安装所需要的工具 uml-utilities和bridge-utils:
sudo apt-get install uml-utilities bridge-utils
修改/etc/udev/rules.d/20-names.rulesx:
sudo cp /etc/udev/rules.d/20-names.rules /etc/udev/rules.d/20-names.rules.backup
sudo gedit /etc/udev/rules.d/20-names.rules
把最后一行
KERNEL==”tun”, NAME=”net/%k”
改为:
KERNEL==”tun”, NAME=”net/%k”, GROUP=”vboxusers”, MODE=”0660”
然后保存。
(注:不知道为什么修改这个文件,Ubuntu社区文章中有这一段,也许是为了把tun加入到Group vboxusers中吧。我下面还有一个地方是把用户加入到Group vml-net中,有的人这样做,有的人没有,我没有试过不加会是什么样)
在Host OS中创建一个vboxbridgedrun文件,来建立一个Bridge和tap device,IP是由bridge来取得,而不是ethX或tapX。
(注:下面的这些都可以在终端中用命令方式打出来,但是问题在于,电脑重新启动后,就不再有效。所以建立一个启动文件,让它自动随电脑启动)
sudo gedit /etc/init.d/vboxbridgedrun
内容如下:
————————————————————————————————————————
# VirtualBox Bridging
# Create a tap device with permission for the user running vbox
tunctl -t tap0 -u username #username是你运行vbox的用户名,有的人用{}括起来
chmod g+rw /dev/net/tun #有的人用chmod 0666 /dev/net/tun
# Bring up ethX and tapX in promiscuous mode
#注意这里的eth1,因为我的电脑上有两个网卡,这里用的是eth1,一般是eth0,根据情况#来修改
ifconfig eth1 0.0.0.0 promisc
ifconfig tap0 0.0.0.0 promisc
# Create a new bridge and add the interfaces to the bridge.
brctl addbr br0
brctl addif br0 eth1
brctl addif br0 tap0
#下面是两种获取IP的方式
#第一种是手动设置,把Host OS系统中的地址信息添加到下面去,比如我的依次为
#192.168.0.115,255.255.255.0,192.168.0.1
ifconfig br0 *.*.*.* netmask *.*.*.* up
route add default gw *.*.*.*
#第二种是DHCP方式
#dhclient br0
————————————————————————————————————————
给上面的文件vboxbridgedrun加上可执行权限:
sudo chmod +x /etc/init.d/vboxbridgedrun
建立一个vboxbridge文件来执行vboxbridgedrun文件:
sudo gedit /etc/init.d/vboxbridge
内容为:
/etc/init.d/vboxbridgedrun & #直接在终端中打入这句也是可以的
然后加上执行权限:
sudo chmod +x /etc/init.d/vboxbridge
最后在/etc/rc2.d目录下做一个到/etc/init.d/vboxbridge文件的链接 S999vboxbridge:
cd /etc/rc2.d
sudo ln -sf ../init.d/vboxbridge /etc/rc2.d/S999vboxbridge
(注: S是代表start,K代表是stop,一般在rc6.d中是K,因为rc6.d是reboot模式
999是让它在最后启动)
(另外,我在rc5.d目录中也做了一个这样的链接)
再打开System – Users and Groups – uml-net,加上当前用户的名字。
重启电脑后,打开VirtualBox,在虚拟系统的Network设置中,把“Attached to ”选项从NAT改为Host Interface,然后在下面的“Interface Name”选项中,加上tap0
这样就完成了整个设置。启动Guest OS后,手动设置静态IP地址,比如:
192.168.0.116,255.255.255.0,192.168.0.1
然后打开浏览器,就可以发现已经可以上网了。
而且Host OS也可以同时上网。
(注:之所以在这里强调Host OS也可以同时上网,是因为有时候当设置不对,Host OS和Guest OS之中只能有一个上网,另外一个不能。还不知道为什么会导致这样。)
另外还有删除上面的设置的命令:
删除tap0
tunctl –d tap0
删除br0
ifconfig br0 down
brctl delbr br0
把tap0和eth0都移出bridge(br0)
brctl delif br0 tap0
brctl delif br0 eth1
Ubuntu – 出现Low Graphics Mode的解决办法
因为没有显示器连接在在HOME SERVER上,一开始的时候,就算设置成自动登录,但是重新启动后,发现不能用VNC进入。后来发现,是因为重启后,系统停留在一个地方,提示,Low Graphics Mode,所以不能自动登录
再后来因为选择了Always choose Low Graphics Mode,所以用VNC进入系统后,发现VNC CLIENT只能用640X480的分辨率,非常低。装上显示器后,发现系统变成640X480,而且不能修改,驱动提示是vesa的。
解决办法:
System – Preference – Main menu
在other那里,选择Screen & Graphics
然后回到Application – others – Screen & Graphics
在这里可以修改screen resolution和驱动程序,刷屏率等
虽然在这里不管怎样修改,都不成功,而且屏幕变花了 (在VNC里是不花屏的)
后来没办法,用LIVE CD
进入后,在Terminal中,
sudo mkdir /media/disk
sudo mount /dev/sda6 /media/disk
sudo cp /etc/X11/xorg.conf /media/disk/etc/X11/xorg.conf (记住先备份)
Remove write permissions from the file
sudo chmod -w /media/disk/etc/X11/xorg.conf
重新启动电脑进入系统后,发现已经恢复正常,如果分辨率有点高,可以进入Screen&graphcis中调整
用的驱动是i810的,因为HOME SERVER的主板是INTEL 845的
