Linux忘记密码后使用grub重置密码

Linux忘记密码后,可以通过修改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系统即可。

在CentOS上安装基于qemu的虚拟机(2)

1. 启动完毕后客户机无法得到网络地址:

故事的小插曲:由于虚拟机是“偷”跑在某台服务器上,不便在系统路径里留下痕迹,只能使用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.

在CentOS上安装基于qemu的虚拟机

1. 从源码安装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

MarkdownSyntax

1. 自动编号的问题:

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

用github管理octopress源码

1. 新建或改变某个已存在的源码仓库名为"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