Jul 5, 2013
TechnologyLinux忘记密码后,可以通过修改Grub启动参数来进行修复, 举Ubuntu13.04为例:
出现Grub菜单时,按"e"键或是其他键进入Grub的编辑方式。
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-baec278e-2b9f-4513-a6f1-e148ac6295d7' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos2 --hint-efi=hd0,msdos2 --hint-baremetal=ahci0,msdos2 baec278e-2b9f-4513-a6f1-e148ac6295d7
else
search --no-floppy --fs-uuid --set=root baec278e-2b9f-4513-a6f1-e148ac6295d7
fi
linux /boot/vmlinuz-3.8.0-19-generic root=UUID=baec278e-2b9f-4513-a6f1-e148ac6295d7 ro
initrd /boot/initrd.img-3.8.0-19-generic
}
改动下面这行
linux /boot/vmlinuz-3.8.0-19-generic root=UUID=baec278e-2b9f-4513-a6f1-e148ac6295d7 ro
为
linux /boot/vmlinuz-3.8.0-19-generic root=UUID=baec278e-2b9f-4513-a6f1-e148ac6295d7 rw init=/bin/bash
init=/bin/bash将把系统启动到一个没有root密码的shell, rw则允许修改密码,否则ro的情况下无法更新密码。
使用改动后的grub启动系统。在Grub2中一般是按F10, Grub中则是回车后按"b"键,具体需参考grub的帮助。
系统启动到shell后, 输入passwd username重设自己的密码后,reboot系统即可。
Jul 5, 2013
Technology1. 启动完毕后客户机无法得到网络地址:
故事的小插曲:由于虚拟机是“偷”跑在某台服务器上,不便在系统路径里留下痕迹,只能使用CPU/内存资源,采取了挂载NFS文件系统的方法,Qemu和vde均自行编译,先于vde编译的Qemu在配置的时候未能激活vde选项,造成客户机中无法找到vde配置的网络。
现象:重新编译qemu,使用下列命令时报错:
./configure --prefix=Your_place_here --target-list="i386-softmmu \
x86_64-softmmu i386-linux-user x86_64-linux-user" --enable-kvm \
--enable-user --enable-vde
安装vde2到系统路径后重编译qemu成功。而后
$ export LD_LIBRARY_PATH=/usr/lib:$LD_LIBRARY_PATH
则可正常启动vde/qemu
2. 开启Linux内核的forwarding, 这样客户机可以接入Internet.
echo 1>/proc/sys/net/ipv4/ip_forward
3. 增加更多的核:
在启动参数中添加:
-cpu host -smp cores=2,threads=1
To be continued.
Jul 4, 2013
Technology1. 从源码安装qemu和vde(Virtual Distributed Ethernet)
Qemu的安装过程比较标准,编译vde时则需要有些小改动:
$ svn co https://vde.svn.sourceforge.net/svnroot/vde/trunk/vde-2 vde_svn
$ cd vde_svn
$ autoreconf -fi
$ ./configure --enable-experimental --prefix=./Your_Destination
$ make
$ sudo make install
在编译vde时,需要安装python-devel包并创建一个空的"stropts.h"文件才能通过编译:
$ yum install python-devel
$ touch /usr/include/stropts.h
2. 创建虚拟网络, 并使用slirpvde建立默认的dhcpd服务器:
$ vde_switch -s /tmp/switch
$ slirpvde -s /tmp/switch --dhcp
Starting slirpvde: virtual_host=10.0.2.2/24
DNS =10.0.2.3
dhcp_start =10.0.2.15
vde switch =/tmp/switch
3. 创建qemu镜像并开始使用cdrom镜像安装系统:
$ qemu-img create -f qcow2 Windows.qcow2 16G
Formatting 'Windows.qcow2', fmt=qcow2 size=17179869184 encryption=off cluster_size=65536 lazy_refcounts=off
# 使用创建的镜像安装系统
$ qemu-system-i386 -net nic,macaddr=52:54:00:00:EE:17 -net \
vde,vlan=0,sock=/tmp/switch -m 765 -enable-kvm -cdrom \
/path_to_your_iso.iso -boot d \
/path_to_your_image/Windows.qcow2 -vga std -vnc :7
4. 在本机上,可以使用vncviewer来查看安装情况:
$ vncviewer Your_server_ip:7
5. 安装完毕后,启动创建好的虚拟机:
$ qemu-system-i386 -net nic,macaddr=52:54:00:00:EE:17 -net \
vde,vlan=0,sock=/tmp/switch -m 765 -enable-kvm \
-hda /path_to_your_image/Windows.qcow2 -vga std -vnc :7
6. 指定物理网卡:
model=? ,rtl8139可以被Windows自动驱动
qemu-system-i386 -net nic,model=rtl8139,macaddr=52:54:00:00:EE:17 -net vde,sock=/tmp/switch -m 765 -enable-kvm -hda ./virt/Windows/Windows.qcow2 -vga std -vnc :7
Jul 3, 2013
Technology1. 自动编号的问题:
Markdown里的自动编号只适用于块(block)中的自动编号,也就是说,在使用了例如Solarized格式化代码块以后,全局中的自动编号不再起作用。
正常的自动编号, 不会有问题, 前标号分别为1/2/3:
1. item 1
2. item 2
3. item 3
加入代码块后的情形:
item 1/item 2/item 3都将以1. item开头, 前标号变成1/1/1:
1. item 1
// code blocks
2. item 2
// code blocks
3. item 3
解决方法:使用Markdown转义字符, 在.前加\
1\. item 1
2\. item 2
3\. item 3
2. Solarized高亮代码的两种用法:
把代码放在如下块中:
{% raw %}
//Your code here!
或者
```
//Your code here!
```
{% endraw %}
代码高亮方法
a. 指定codeblock参数:
{% raw %}
#include <stdio.h> int main(void) { printf("Hello World!\n"); return 0; }
{% endraw %}
结果:
#include <stdio.h>
int main(void)
{
printf("Hello World!\n");
return 0;
}
b. 指定多行代码参数:
标题"Discover if a number is prime”, 链接地址"http://…", 链接名称"Source Article”.
{% raw %}
class Fixnum
def prime?
('1' * self) !~ /^1?$|^(11+?)\1+$/
end
end
{% endraw %}
class Fixnum
def prime?
('1' * self) !~ /^1?$|^(11+?)\1+$/
end
end
3. Syntax Highlight 在 ArchLinux 上的问题:
因为ArchLinux默认的python版本是3, 导致pygments不能正确解析源文件,编辑:
vim ~/.rvm/gems/ruby-1.9.3-p448/gems/pygments.rb-0.3.4/lib/pygments/mentos.py
第一行
/usr/bin/env python –> /usr/bin/env python2
Jul 3, 2013
Technology1. 新建或改变某个已存在的源码仓库名为"debian_octopress”,以后可以用“https://github.com/kkkttt/debian_octopress.git”来访问此仓库。
2. 配置Git:
$ git init
$ git add README.md # 这个文件中可以添些项目的描述文字
$ git commit -m "First Commit"
# 配置git的本地用户名和email
$ git config --global user.email "kkkttt@gmail.com"
$ git config --global user.name "Trusty"
# 将文件夹里所有内容加入到git中并提交
$ git add .
$ git commit -m "First Sourcecode Commit"
# 同步到github
$ git remote add origin https://github.com/kkkttt/debian_octopress.git
$ git push -u origin master --force
3. 删除本地文件夹并同步到Github的方法:
$ git rm -rf public.back
$ git commit -m "remove backup directory"
$ git push origin master
4. 将本地修改同步到Github:
$ git commit -m "do some changes"
这时候会列出本地修改过的内容,运行:
$ git commit -a
修改需要提交的修改后运行下列命令后同步到Github:
$ git push origin master