2010年1月24日 星期日

如何建立 patch

假設要製作 Linux kernel 原始碼中 arch/arm/boot/Makefile 的 patch。首先準備好修改前後的檔案,例如 Makefile 及 Makefile.orig。然後使用 diff 指令產生兩個檔案的差異,指令如下:

LC_ALL=C TZ=UTC0 diff -up Makefile.orig Makefile > arch_arm_boot_makefile.patch

這時會得到以下的內容:

--- Makefile.orig 2010-01-14 01:26:36.000000000 +0000
+++ Makefile 2010-01-24 11:16:04.848551840 +0000
@@ -17,6 +17,16 @@ ifneq ($(MACHINE),)
include $(srctree)/$(MACHINE)/Makefile.boot
endif

+SEC_OUTDIR := $(shell if [ -f /etc/inetd.conf ]; then \
+ cat /etc/inetd.conf | grep in.tftpd | awk '{print $$8}'; \
+ elif [ -f /etc/xinetd.d/tftp ]; then \
+ cat /etc/xinetd.d/tftp | grep server_args | \
+ sed 's/^.*-s //g'; \
+ elif [ -f /etc/default/tftpd-hpa ]; then \
+ cat /etc/default/tftpd-hpa | grep OPTIONS | \
+ sed 's/^.*-s //g' | sed 's/\".*$//g'; \
+ fi)
+
# Note: the following conditions must always be true:
# ZRELADDR == virt_to_phys(PAGE_OFFSET + TEXT_OFFSET)
# PARAMS_PHYS must be within 4MB of ZRELADDR
@@ -56,8 +66,9 @@ $(obj)/compressed/vmlinux: $(obj)/Image
$(obj)/zImage: $(obj)/compressed/vmlinux FORCE
$(call if_changed,objcopy)
@echo ' Kernel: $@ is ready'
- cp -f arch/arm/boot/zImage /tftpboot/
- @echo ' Kernel: $@ is ready'
+ $(shell if [ -d $(SEC_OUTDIR) ]; then \
+ cp -f arch/arm/boot/zImage $(SEC_OUTDIR); fi)
+ @echo ' Kernel: $@ is also ready at $(SEC_OUTDIR)'

endif

但由於避免使用 *.orig 這類的名稱,且可以在最前面加上產生 patch 的指令,因此修改成如下:

diff -up old/arch/arm/boot/Makefile new/arch/arm/boot/Makefile
--- old/arch/arm/boot/Makefile 2010-01-14 01:26:36.000000000 +0000
+++ new/arch/arm/boot/Makefile 2010-01-24 11:16:04.848551840 +0000
@@ -17,6 +17,16 @@ ifneq ($(MACHINE),)
include $(srctree)/$(MACHINE)/Makefile.boot
endif

+SEC_OUTDIR := $(shell if [ -f /etc/inetd.conf ]; then \
+ cat /etc/inetd.conf | grep in.tftpd | awk '{print $$8}'; \
+ elif [ -f /etc/xinetd.d/tftp ]; then \
+ cat /etc/xinetd.d/tftp | grep server_args | \
+ sed 's/^.*-s //g'; \
+ elif [ -f /etc/default/tftpd-hpa ]; then \
+ cat /etc/default/tftpd-hpa | grep OPTIONS | \
+ sed 's/^.*-s //g' | sed 's/\".*$//g'; \
+ fi)
+
# Note: the following conditions must always be true:
# ZRELADDR == virt_to_phys(PAGE_OFFSET + TEXT_OFFSET)
# PARAMS_PHYS must be within 4MB of ZRELADDR
@@ -56,8 +66,9 @@ $(obj)/compressed/vmlinux: $(obj)/Image
$(obj)/zImage: $(obj)/compressed/vmlinux FORCE
$(call if_changed,objcopy)
@echo ' Kernel: $@ is ready'
- cp -f arch/arm/boot/zImage /tftpboot/
- @echo ' Kernel: $@ is ready'
+ $(shell if [ -d $(SEC_OUTDIR) ]; then \
+ cp -f arch/arm/boot/zImage $(SEC_OUTDIR); fi)
+ @echo ' Kernel: $@ is also ready at $(SEC_OUTDIR)'

endif

那麼怎麼使用這個 patch 呢?指令很簡單,如下:

patch -d $PWD/s3c6410-linux-2.6.27 -p1 < arch_arm_boot_makefile.patch

就可以用這個 patch 去修改 $PWD/s3c6410-linux-2.6.27/arch/arm/boot/Makefile 了。

延伸閱讀:

2010年1月22日 星期五

網路評論員?五毛黨?

最近看到「五毛黨」這個名詞,一時還想不出來是什麼,於是上網查了查,原來所謂「五毛黨」,指得就是網路評論員,是由政府部門聘雇在網路上發表評論的一群人。任務是主動導帖、積極跟帖、適時轉帖,特別是在發生突發事變的關鍵時刻,他們更肩負著引導網上輿論的重責大任。

在中時電子報對「五毛黨」的報導中提到:

根據網傳的「五毛黨」工作方法,他們日常工作是按照網站區分小組,並主要入侵熱門網站,對於某些人氣不錯的論壇,網友信用度比較高,這時「首先要做的是製造一種混亂,通過似是而非的文章進行干涉,跟帖做非理性的故意曲解、製造誤會和爭辯,轉移網民的注意力。」

在維基百科也可以找到以下這段說明:

在中國大陸,「網路評論員」最早出現南京大學官方BBS——南京大學BBS上。在小百合BBS拒絕按照官方命令進行整改,宣布關站之後,南京大學校方在原有域名上開設官方版本的南京大學BBS,指令學生會幹部及一部分熱心上進人士為「網評員」,「納入學校勤工助學體系,根據每月的考評結果發給適當的勤工助學補助」。這些網評員的主要職責是,「南京大學電子論壇通過發帖發布正面信息,跟帖回應抵制消除負面信息,營造積極健康的校園網路環境,同時對校內外網站上有關學校的重要信息及時上報學校網路管理工作領導小組辦公室」。隨後各個學校紛紛招聘網路評論員。

哈!原來如此,講白了不過就是中共當局用來控制、導引人民思想的一個棋子嘛!

延伸閱讀: