November 2010

grub 和 grub2 的重建

我的小黑是双系统,windows + ubuntu ,前者用来打游戏或者网上银行,基本很少用。但无奈,最近坏了,重装了个英文版的windows 上去,要重建grub 。grub 和 grub2 的重建会稍有不同,在这里 mark 一下。

开始的步骤都一致,我是用livecd ,也可以用usb 什么的,主要是要个linux 的环境。

grub 的重建:

sudo grub  # 进入grub ,之后的操作在 grub> 的提示符下进行

find /boot/grub/menu.lst # 没有错误的话,就会返回本来装载有grub 的分区,如 (hd0,1)

root (hd0,1) # root 刚才的返回

setup (hd0) # 安装grub

quit # 退出

sudo reboot 即可

###################################

grub2 的重建:

用grub 的方法已经不可行,不过要利用一下grub 的find 功能

sudo grub # 进入grub

find /boot/grub/grub.cfg # grub2 的菜单配置文件不再是 menu.lst ,而是grub.cfg ,没有错误的话,就会返回grub2 所在的分区 , 如 (hd0,1)

quit # 退出grub

(hd0,1) 也就是第一个硬盘的第二个分区,一般是 /dev/sda2

sudo mount /dev/sda2 /mnt # 挂载之前装有 grub 的分区

sudo grub-install –root-directory=/mnt /dev/sda  # 安装grub2

零编码实现非办公网络http 验证

有个需求,需要网站对非办公网络的访问进行验证,办公网络正常访问。
我山寨一下吧,没理由去改php 代码的。
不详说了,直接贴配置(别人贴代码我贴配置。。。)
set $safe 0 ;
location / {
if ($http_x_forwarded_for ~ (x.x.x.x)|(y.y.y.y)|(z.z.z.z) ){set $safe 1;}
if ( $cookie_bad_man = “x” ){ set $safe 1;}
if ($safe = 0){rewrite “^.*$” http://wp.helosa.org/redirect/ redirect;}
index index.html index.php;
root /data/wordpress/;
}
location /redirect/ {
charset utf-8 ;
alias /data/redirect/;
auth_basic “~oO-_-Oo~”;
auth_basic_user_file  htpasswd;
expires -1 ;
set $bad_man “x”;
add_header “Set-Cookie” “bad_man=$bad_man ; path=/; domain=wp.helosa.org”;
}
原理是,如果x-forwarded-for (因为前面有代理)符合办公网络ip ,放行(set $safe 1).
如果$safe 为0,跳转至 /redirect/ 目录
这个 /redirect/ 目录,设置http 验证,验证文件,用htpasswd 建一个吧
如果验证成功,set cookie ,主要是set 一个标示位,在这里是 bad_man ,当见到这个标志位的,也是放行的。
在 /redirect/ 下,有个index.html ,内容可以如下:
<html><body>
<meta http-equiv=”refresh” content=”0;url=http://wp.helosa.org/”>
</body></html>
主要用于跳转。
这样,就可以做到,办公网络不用验证,而在家访问,就要http 验证了。