分类 Network 下的文章

提问:如何只用一个root bash重起Linux系统

假设你远程连着一个 Linux 系统 shell, 这个 shell 是 root shell, 但是任何其它外部命令都没得用. 如何将这台 Linux 系统重起呢?这个 Linux 是默认安装的 fedora core, 没有自己重新编译 kernel 之类事情。

这个问题的背景是这样的,最近远程升级一台 FC2 -> FC6, 因为 FC3 有 udev 问题,FC4 有 non-ext3 root 问题,所以决定不重起一路冲上 FC6,结果忘记了 FC5 的 glibc 2.4 强迫需要新版本 kernel,于是升到一半就挂了。这时候唯一能用的命令是 bash 内部命令和静态链接的程序,可惜平时没有想到会出现这样的事情,没有储备一个 busybox 之类的东西,系统上面仅有的一些静态链接命令都是 dmraid 之类搞硬盘的。其他命令统统不可用。

这个问题的答案我已经找到了,聪明的读者们,你们知道我是怎么做的吗?请在留言里面发表你的办法.

FC6 升级成功

真是不容易,头一次碰上版本升级可以正常上去的。以前每次都要踩到FC的bug。

附: FC 各版本升级 bug

FC1 -> FC2 : 基本没有问题,除了 FC2 认键盘经常会出问题,但是这个对远程升级没有影响。
FC2 -> FC3 : FC3 使用 udev, 在 obsolete 原来的 dev 这个包的时候,会把 /dev 删光光!如果你是自己编译 kernel 没有使用 initrd 的话,就会死的很抽象。
FC3 -> FC4 : /boot 所在的分区如果不是 ext3 或者 ext2 的话,那么十有八九起不来,这个是 FC4 grub 的一个 bug。
FC4 -> FC5 : 在某些情况下面 kernel 命令行上面如果加 selinux=0 关闭 selinux 的话,会导致起来以后网络完全不通。在 /etc/selinux/config 里面关上没事。

修改Windows TCP参数来对付北京网通垃圾的ADSL

最近北京网通的 ADSL 实在快不能忍了,到晚上就丢包率过 10% ,上个 bbs 卡得不行,于是 google 了一通,修改了几个Windows TCP的参数,以浪费带宽为代价提高响应速度(比起下载和上 bbs 来,我还是更重视 bbs 速度,我想网游一族应该也是这样)。效果似乎还可以,不知道是心理作用还是怎么回事。不过确实见不到在 bbs 上面一卡半天的现象了。

这些修改都可以在 http://www.winguides.com/registry/category.php?310 找到,针对不同系统的区别也有介绍,下面只在 Windows 2003 上面测试通过,其他系统可能不是在这个注册表位置,或者根本就不支持。

所有的修改都位于 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 下面,大部分都在注册表里面默认没有,需要手工添加,都是 DWORD 类型的值。

1: InitialRtt

这个是 Windows 对于一个 TCP 连接的初始重传超时。单位毫秒,改成 1000 ,你要改成 500 估计也问题不大。

2: TcpMaxDupAcks 默认 2 , 改成 1, 单位是个,

这个参数控制 TCP 快速重传,TCP 通常是在重传定时器到时的时候才重新传输某个帧,虽然重传定时器是自适应的,但是如果还算通畅的网络上面忽然丢一个,比如北京网通 ADSL 这样的,上 BBS 将会明显感到卡了一下。快速重传对这种情形很有效,它是如果看到对方发了好几个相同的 ACK 过来,就知道对方一直在等同一个包,于是 TCP 协议栈会马上重传这个包。上面提到的这个参数就是控制 Windows 看到几个重复的 ACK 时候就进行快速重传,默认是 2 ,实际指的是看到三个序列相同的 ACK。 我改成 1 。

其他还有不少 TCP 调节选项,但是对这个丢包影响不是很大了。所以不在这里介绍。

修改完以后需要重启一下机器生效。

Fedora Core 5 引发的血案

最近网络上面到处都是血案,我这里也出了一桩。

我的机器一直用的是 FC 系列,自己已经习惯 Redhat 系列发行版了,也懒得换。每次新系统出来的时候,我都顺手 yum 升级上去。感觉不比 debian 的 apt 差太多。FC5 出来以后我又照常 yum 上去了,没想到这将会是一系列恶梦的开端。

4 月某个时间,学校里面停了一次电,来电以后我的机器就连不上了。和 youngcow 还有 trueice 一起去机房看了一眼,它运行的好好的,登录进去看看,路由什么的都对,ping 哪里都不通,连 arp 都无法获得。停掉 iptables ,问题依旧,甚至开始怀疑网线有问题,把网线也换了一根。结果全都不好用。而且 ifconfig 是可以看到网卡收到包的,但是就是没有进入协议栈。最后是灵机一动,把 kernel 命令行上面的 selinux=0 去掉,发现就忽然什么问题都没有了。于是大骂一通 FC5 开发者的变态然后回家。

如果事情发展到这里就结束了,那么也称不上血案。我回到家一连,发现还是连不上。于是很郁闷的给 youngcow 发短信,约过几天再去机房看,这次它是彻底 panic 掉了。重启之后还没怎么操作就又panic 一下,看调用栈是在 via_rhine 里面,这个是机器上面一块闲置网卡的驱动,并没有接线。再次重启,在 panic 之前卸载 via_rhine 模块,修改 modprobe.conf 让它不要加载这个网卡。这次看起来似乎安全了,再次收工回家。

对,事情和你猜的一样,到这里还没有结束,回去路上顺手用手机连了一下,发现还是无法连接,彻底晕菜。决定买台机器装个新系统换掉这位大爷了。这次隔了一周多才过去,买好了机器,打算去把硬盘拆回来整理整理。在机房里面发现机器运行的好好的,并没有 panic,就顺手搞了两下,把网卡换了一块,网线换了一下。没有想到的是奇迹出现了,一切都变得非常正常。。。

于是 FC5 引发的血案到这里就收场了,虽然直到最后我也没有搞明白到底是什么地方出了问题:我自己新装了一个 FC5,发现即使给 kernel 加上 selinux=0 ,系统网络也可以正常使用;换回来的 3com 905b 在新买的机器上面也非常正常;机房的网线在第一次时候和 youngcow 对换过,在最后搞定那次又换回来了,也就是说网线也没有动。那么到底是什么东西出问题了呢?恐怕只有我的 RP 了吧。ft. 这个血案最终造成的影响是我多买了台机器,把我珍藏的 Intel e100 网卡给用掉了。当然,还有我的机器当了半个多月。。

PS: 后来发现机器也不算太白买,老爸那台机器的声卡烧掉了,周围找不到能用的声卡,于是干脆把新买的机器(P4 2.8C + Intel 865GV + 1G RAM)给老爸用了。早知道是这样就不买 P4 2.8C 了,不如买只赛羊,省电还不吵。

最近评论

时光机

其他