發表文章

目前顯示的是 9月, 2014的文章

厚薄厚讀書法

記得我大學有看過一本書介紹讀書法,裡面有提到 厚 薄 之類的關鍵字,那時候記得跟我自己的讀書法很像,現在卻找不到相關訊息了,網路上都只有薄到厚,厚再到薄而已。所以記錄一下。 高中最喜歡的是物理,那時候買二手物理參考書都薄薄的一本,所以我第一次讀的時候,有很多疑問,就在問題、公式旁邊打個大問號,順便把該頁摺個角,所以整本讀下來,折了很多頁,書也變厚了。 接下來,讀第二次的時候,因為有了後面的知識,所以前面的一些問題已經解開了,我就會順便寫上解答,然後再把摺角還原,這時候書就變薄了。 第三次讀的時候,知識又更深了,發現一個問題可以有更好的解法或是某些感想,於是又再寫上去,再把該頁摺角。書又變厚了。 畢業後也捨不得丟掉那些參考書,四年後才拿去回收~

default kernel cmdline/bootargs

最近再想一個問題,如果編譯Kernel的時候預設有加上cmdline了,那Bootloader再傳bootargs的時候,會怎麼樣? 找到的網頁可能是參考arm的,說預設的會直接被覆蓋掉,但這無法解釋x86平台的行為。 所以去找了一下kernel的code,發現會直接把bootloader傳過來的 append 到 預設的cmdline去,所以如果有相同的argument的話,應該default的會先拿來用吧。 arch/x86/kernel/setup.c static char __initdata command_line[COMMAND_LINE_SIZE]; #ifdef CONFIG_CMDLINE_BOOL static char __initdata builtin_cmdline[COMMAND_LINE_SIZE] = CONFIG_CMDLINE; #endif #ifdef CONFIG_CMDLINE_BOOL #ifdef CONFIG_CMDLINE_OVERRIDE strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE); #else if (builtin_cmdline[0]) { /* append boot loader cmdline to builtin */ strlcat(builtin_cmdline, " ", COMMAND_LINE_SIZE); strlcat(builtin_cmdline, boot_command_line, COMMAND_LINE_SIZE); strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE); } #endif #endif strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE); *cmdline_p = command_line;

minicom -p pseudo terminal -d device 狀態列顯示bug

最近工作上用到一條指令 minicom -o -p /dev/pty/3 同事執行之後,又進到Configuration畫面設定 Port為 /dev/ttyS0,讓我覺得很怪,因為Host這裡沒有實體的Serial Port,使用的是虛擬tty /dev/pty/3,可是minicom右下角的狀態列顯示的卻是 /dev/ttyS0。 覺得好像是bug,於是分析一下minicom的code想搞懂 pseudo terminal 跟 real serial device有什麼不一樣,因為在argument會有使用 -d [device] 跟 -p [pseudo device]。 用 apt-get source minicom抓到source minicom 使用 open 的參數是 dial_tty,如果有設定 -p 參數的話,會檢查一下路徑的規則,例如有沒有 pty 之類的字眼,然後就直接複製到 dial_tty,如果dial_tty是空的話,再執行open之前,會先找到正確的P_PORT,再複製到dial_tty,所以minicom最後使用的是 dial_tty,但狀態列那邊顯示的卻是 P_PORT,應該是bug了,找了一下minicom upstream,應該是 alioth。 https://alioth.debian.org/tracker/?func=detail&atid=100031&aid=314803&group_id=30018 這裡的bug似乎不太活躍,可能太穩定了,上幾個issue都是好幾年前了@@。 為了怕沒有人維護,所以我又去Ubuntu那邊報了一個。 結論:Upstream那邊隔天就立刻回覆 committed 了。