Installing Debian jessie on Loongson notebook(8089_B) with Ubuntu keyboard suits

I got a white yeeloong notebook last year, and it costs me 300RMB which ships with a Loongson 2F CPU, 1GB DDR2 memory bar, and a 160GB HHD.

The netbook has a pre-installed Liunx based operating system, I can't tell its distribution, and it looks quite like a Windows XP. Since then, I put it in my closet and never use it again.

Yesterday the untouched toy crossed my mind, so I took it out and spent a whole night to get Debian Jessie working on my yeeloong notebook. Here are some procedures you may need to note if you want to have your own box running.


At the beginning, I download the vmlinux and initrd.gz file from Debian mirror. I set up a TFTP server on my mac, ensure it's working from local. later I power on the notebook,  enter into the GMON screen, using ifaddr to assign a IP address manually, and it can ping to my mac, this means the networking works now. Problem comes since then, I execute load directive to load the vmlinux file, everytime after several minutes waiting, it shows connection timeout, after some time debuging, nonthing exceptions can be found since the tftp server and the connectivity between my mac and yeeloong both normal.

I give it up and find a USB stick, this time I'm going to put vmlinix and initird file into USB and let the notebook boot from USB. You have to check that the filesystem is formatted as ext2/ext3. Most importantly, the single partition must not be larger than 4GB, say, you have a 8G USB,  you need to format at least 3 partiitons, 3-3-2 is a good choice. If the partition is larger than 4GB, you can't even enter into PMON, and it just stalls here after you power on with USB attached to your notebook with "filesys_type() usb0 don't find" showing on the screen.


After entering into PMON, you should find your USB using devls directive, then type:
> bl -d ide (usb0, 0)/vmlinux
> bl -d ide (usb0, 0)/initird.gz

Don't copy directly, you need to figure out partitions location in your USB, maybe yours is (usb0, 1), and your vmlinux file is called vmlinux-3.14-2-loongson-2f.

Be patient, I waited about 10 minutes before both files loaded into memory successfully, press "g" to let it run. Haaaaam, there're fews steps to get a brand new toy.

The installation process now begins, press Yes/No, answer questions as your normal. at the end, I choose to install LXDE desktop environment. For me, I waited about 2 hours to finish the installation.

Now, reboot, and finally, it enters into LEVEL 3 without X because of some buggy tools.

Download the xserver-xorg-video-siliconmotion package from here, don't upset with the tool's version, you need some modifications to make it work on jessie.

Using dpkg to unpack the deb file, remove xorg-video-abi-12 from its control file in "Depends" section, repack the file, before dpkg -i, using apt-get to install the xserver-xorg-core file.

startx, you will get the final screen. The default network manager for LXDE is Wicd Network Manager which is fine, what if you want to use command line, you need to modify the interface file and some other steps before connected to internet. 

Wow, with Ubuntu keyborad suits, it's definitely a good combo.

How about the performance? No matter what I run, it always ends with CPU bound, and the average load with LXDE is around 1. That does not hurt, since it does not bother me too much, but It takes more than 3 minutes to boot up, probably slower than the majority of Windows users ;-)

Since the dummy box is terribly slooow, Why you buy the box? well, just for fun.

换了套新工作环境

一年折腾一次,一次折腾两天。
花了点时间上了套四屏幕的工作环境。之前的工作环境是:
* 一台 mba,基本用来拿在手上到处跑。
* 一台台式机,Arch,还是 3.4 的 kernel,看 /lost+found/ 还是 12 年 2 月分的,工作主力,印象中是自费笔记本给公司打了大半年工之后给配置的。
* 台式机左边是另一台台式机,配置跟上面的类似,主要用来看监控,看图。使用时间跟上面一样。

后来随着要盯的图越来越多,要开的屏幕越来越多,两台 Arch/Awesome 已经无法满足需求了,尽管一台 Arch 默认可以切换 9 个屏幕,但是切来切去依然是是很不方面。
于是搞了个四屏的架子&一个四屏的显卡。架子型号是 BEWISER S4;四屏的显卡是 Nvidia quadro nvs

下图是新的环境。

把四台显示器上架捣鼓捣鼓一个多小时,显卡的 setup 绕了些弯。
最初听说是不支持 Linux,心想既然看看监控也就忍了,真的上上去了之后发现 Win7 太难用了。一块屏幕下面没法继续分屏,即使人肉把两个浏览器堆在一个屏幕上,由于浏览器乱七八糟导航栏之类的存在还是会浪费非常多的空间。即使他们可以手动去除,但是,用过平铺窗口管理器的都知道,他们离心目中想要的样子还是差很远。
于是尝试用目前服役的 Arch 来安装这块多屏显卡,结果手贱在升级之前 Syu 了下,整个系统都玩挂了,不想折腾了,确定 Ubuntu 可以安装 awesome 之后,直接搞了台 12.04 的机器过来。
安装 NVIDIA-Linux-x86_64-340.46.run 这个驱动,安装之前要关闭一切的 X,具体的安装过程看这几篇文档就好了(1, 2)。 

如果最后没成功,按照他的提示基本就是要么显卡没插系统没检测到,要么就是系统有其他不兼容的驱动存在等等之类问题。
nvidia.ko 生成了之后,按照我这边的情况是没发使用的,我的 master screen(四个显卡口的第一口)系统起起来之后一直是 Ubuntu 的紫色屏幕,后来估计是 xorg.conf 的问题,一看果真是。
xorg.conf 的书写还蛮麻烦的,需要先熟悉下语法。另外务必写对 BusID,否则再怎么折腾都是起不来的。
Nvidia 自带的 nvidia-setting 不是很好用,我试了几次没成功就直接改 xorg.conf 文件了,理论上 nvidia-setting 的所有变更都会反映到 xorg.conf 里面。
折腾到这里就差不多了,Ubuntu 该装什么就装什么,改成 awesome 的,外表看上去跟 Arch 差别不大, 目前的是:
* 左边一台继承自之前老的纯 Arch,已经不大用了,准备还给 IT 了。
* 中间四台屏幕由右下角的主机带着,主力工作环境,Ubuntu 12.04+Awesome 管理器,几乎所有的工作都在上面进行。上方的两块用来看我们核心业务的 dashboard,zabbix 的监控会在另外的一个桌面上,左下角的主要是浏览器,firefox 全局 sock proxy,chromium 的不开 proxy,右下角的写代码登录线上机器。OpenVPN,anyconnect,synergys,sock proxy 全部在右下角的另外一个桌面上。
* 右边的 mba 依然是打下手的工作。之前是把 anyconnect 放在这台机器上的,后来发现 Ubuntu 可以通过开启 OpenVPN 以及 anyconnect(anyconnect 真是个恶心的玩意儿,给你强行推送路由表,给你强行修改 iptables。推就推了,还把整个 10/8 的全给推过来了,要是你的内网也是这个段的,那是彻底废了),mac 现在除了开会几乎不用了,不过用 preview 看 pdf 倒是蛮爽了,尤其是高亮操作,Linux 下目前没有一款软件能真正的实现此类功能。
* 全局通过 synergys 以及一个 thinkpad 键盘控制所有的屏幕操作。
新安装的 chromium 好像没法在浏览器里面设置 socks5,不过可以通过命令行直接启动。一套好的做工环境对效率的提升还是非常明显的。
我这次可没黑苹果,别再发生什么口水战了。

家用路由器被入侵了

某天上网浏览网页,半天都返回不了结果,OS X 虽然不怎么样,Firefox/Chrome 浏览个网页应该没什么大问题。
最初以为是浏览器的问题,直接重启,无效;重启 Mac,继续无效。好吧,既然重启都不生效,索性咱们从专业的角度来分析分析问题。
抓包。结果令人惊讶。

我的机器主动给路由器(192.168.2.1)发送了大量的 RST 包,在没有任何主动 SYN 的情况下。第一反应就是受到中间人攻击了。
登到路由器后台一看,果真有几个不认识的客户加到了这个 SSID 里面。
后续的重启改密码就不说了,虽然用的是 WPA2 的加密方式,但是密码太弱智了,花几分钟暴力破解一下应该都能出来,引以为戒。

后续留几个连接大家可以参考参考。
如何通过 Sequence Number Predictionl 的方式来进行 MITM 攻击,手法跟我遇到的类似。

出现 TCP rst 的几种可能:
1.1. Where do resets come from? (No, the stork does not bring them.)
1.2. RST flag at end of TCP transmission 
1.3. What causes a TCP/IP reset (RST) flag to be sent? 

2.1. Why TCP Reset sent after receive [FIN,ACK] Packet? 
2.2. TCP option SO_LINGER (zero) – when it's required

3.1. Windows sends RST after SYN-ACK on a TCP connection
3.2. RST after SYN-ACK
3.3. Why on receiving SYN/ACK, a RST packet is sent with certain sites
3.4. why kernel sent RST to a remote TCP server after the machine receiving a SYN/ACK packet?
3.5. why do Client send a RST packet during TCP handshake? [closed]
3.6. Why would a client send a RST packet as reply to a SYN,ACK? 

4.1. TCP: Server sends [RST, ACK] immediately after receiving [SYN] from Client
4.2. Why do I see a RST, ACK packet instead of a RST packet? 

最近半个月的工作[14P]

5 月发生的事,6 月补充完,9 月发出来 ;-)


5 月 13 日周二
开始我们另外一个核心 IDC 最后一次常规性 10G 升级,下面的一部分我们后来把他总结成了《5 月故障总结(post-mortem)》
回家睡了会儿,3:00 am 起床,4:00am 开始连续干了 6h
回公司休息了 1h,塞了点巧克力复活
中午去水立方进行了常规的 1h 训练
回来面(对了,我们目前招高级应用运维工程师 PE,有兴趣的给我简历,邮箱是 w 在 umeng 点 com)了一个候选人,结果在我问到第二个问题的时候就怂了,第一个问题是常规性的自我介绍,第二个问题也是我最喜欢问的问题之一,最近半个月在做什么
由于 uplink 依然在老的网络环境中,我们老的 3750X 到新的 Nexus 中间的 8G port channel 链路中的一条物理链路由于 LB 的算法不科学,导致其打满丢包的状态,当机立断,直接让 NE 更改了 LB 的算法,效果明显

5 月 14 日周三
由于 uplink 这个不稳定因素的存在,开会讨论最后一次也是最重要的升级以及收尾工作,由原本的周四凌晨升级提前到了周三凌晨进行
10G 的最后一次也是最重要的升级,应为涉及到切换我们的 uplink,迁移我们的 GW 以及我们两地双机房中间的互联链路迁移
晚上去和颐休息了 3h,凌晨 3 点干到早上 7 点,期间除了 uplink 切换成功之外,其他的均已失败回滚告终,回酒店休息了 3h
中午回公司继续,讨论了凌晨出现的一些问题以及解决方案,其中我们两地双机房互联链路不通的问题最后发现是 HSRP 的问题
凌晨 GW 迁移失败之后,我跟我们 ne, director 回公司模拟了一下当时出现问题的场景,想了几种可能的原因,不过都被实际的模拟结果所否定,唯一的可能性就是服务器会自动的更新 arp 表,找到新的 GW 地址
下班之前,上面遇到的所有问题都已经找到了问题的根源,想到了对策,唯独 GW 的问题,这个对我们整个生产环境的影响绝对是毁灭性的,一旦 GW 迁移失败,我们所有跨 VLAN 的访问都将失败,由于当时时间太紧迫,根本没有时间让我去 debug 就回滚了,我也就无法得知当时真正的现象以及后续的细节
临走之前,我们 director 问我要不要他过去帮忙,我当时是拍着胸脯说的「相信我,你回家休息吧」,虽然我当时有 95% 的把握确认了上面提到的迁移失败的原因以及 80% 左右的把握让我在非常短的时间内 debug 找到问题并且修复,其后者是最具有挑战性的

现在看到的我们的还是 1G 的上联,等你看到这篇博客的时候,应该已经升级到了 10G 的上联了

5 月 15 日周四
这次升级提前预留了充足的时间,从 3:30 – 6:00,我觉得 3h 的时间足够我 debug 一个中等难度的线上问题了
跟昨晚一样,先是回酒店休息了一下,凌晨 2 点开足马力一直干到了早上 8 点多,GW 的问题也在我们开始的第一步被我很快的发现了问题的原因并且修复,两地双机房互联 HSRP 的问题也后续被我们 ne 一举解决,「基本完美」收官,为什么这么说?因为后续的几天出现了若干的问题,好在都不是我们核心的 Nexus 引起的
回酒店休息到 11 点,打车回家准备继续休息,结果在车上就收到报警说我们的一台前端的 ngx 挂了,当时电话跟我们工程师沟通了下,看现象不大像是新升级的网络造成的,回家又花了 1h 时间救了把火,最后查明原因发现确实跟网络没有关系,只不过在这个敏感的时间点上,出现任何的问题,正常人都会不由得往网络上面倾斜
下午先赶到公司跟我们 director 沟通了进展的,然后赶到清华,在那儿度过了下午剩余的时间,干嘛的了?我花了 3h 的时间去拜拜 RMS 大神,花了 1h 的时间跑到教室外面的走廊插上了 3G 网卡排查了一起路由问题
RMS 大神确实蛮有意思的,下面这三段视频是我当时在现场拍的,虽然 RMS 说不要把这些视频照片传到 youtube, instgram 上,但我还是本着共享的精神跟大家分享了:

  1. Windows is malware
  2. Dancing during class break
  3. St. iGNUcius avatar

下午在会场收到反馈说,我们某个 storm cluster 的处理性能出现了问题,时间点跟我们升级网络的时间几乎吻合,但是从我们内网的各项监控指标来看,数值得到了前所未有的好转,pkg loss 由原来的 8% 直接变为了 0,latency 也由原来高峰时期动辄 4, 5ms 直接下降到了 0.2ms 以下,直觉告诉我几乎不可能是核心网络引起的,但是,没有更有力的数据来证明这些
看码农们在邮件里面以 「猜测」、「推脱」的姿态开始了问题的 debug 之后,我直接以「明天人齐了一起讨论下吧。」结束了这场闹剧
听完演讲之后本想回公司报个销就回去休息的,结果的结果,碰巧我们一个核心业务线上出现了很严重的性能问题,伴着麦当劳雪碧继续搞到了接近凌晨,没找到的问题原因,但是紧急扩容了一些机器,情况有所好转

两个出口的 ngx 都挂了


两个出口的流量一个跌没了一个直接爆了

Continue reading

1000 天的日日夜夜

11 年的 7 月 10 号来到这里,一周之后的晚上,跟我们 CTO 以及另外一个 TL 一起开始了我们第一个正式 IDC  的「破土动工」,机器是不会说谎的,下图是我们第一台交换机的信息。

May 22 2014 是我们第一台线上机器跑到 1000d 的日子,这是目前我们仅有的三台跑着 CentOS 5.6 2.6.18-238.el5xen 的机器;另外,也是三台仅有的跑着 xen 的机器,当年曾经穷的把 LVS 放在这上面跑。如果不是 208.5d 的 bug,估计同一时段会有很多的机器跑到 1000d,现在同时期上的那批机器不少都跑到了 600、700d。

三年时间发生了很多事,很多有趣的事,不少悲伤的事,没有永远的朋友也没有永远的敌人,只有共同的利益。