顯示文章

這裡允許您檢視這個會員的所有文章。請注意, 您只能看見您有權限閱讀的文章。


文章 - andrew

頁: [1] 2 3
1
檢查你編譯時的 -I 參數. 通常位於 CFLAGS 裡面

2
通常你可以參考 uboot 的 bootcmd, 或是觀察有沒有 read write 相關的指令.

3
今天改 code 時不小心發現的~
事實證明....寫 code 很容易把一個人逼瘋!
[attachment=1]

4
gcc 最简单的编译也出错.....
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crt1.o:in fuction '_start'

(.text+0x18): undefined reference to 'main'
collect2: ld returned 1 exit status

我不知道你想幹嘛?
但如果連錯誤訊息都不想看, 發這篇文章簡直是浪費版面!

5
我沒有自己 porting 過, 但是你有考慮使用 busybox 的 fdisk 嗎?

6
其實,我也是建議先從x86 base Linux 開始瞭解起會好很多,好處是

1. PC硬體零組件取得容易(除非真的要開發ARM driver or porting AP 再考慮買特定的實驗板)
2. 可以藉此瞭解Linux開機流程(想做embedded system必定要瞭解)
3. 練習rebuild kernel for hardware
4. 可以執行emulation
5. DRAM空間大很多,可以免除很多不方便
6. 新手可以練習從HD移轉system到另一個HD/Flash Disk ,然後測試移轉過去的系統開機


非常贊同! 我覺得新手可以做看看這種練習~
用 VMWare 或是 VirtualBox 之類的環境也可以練習歐~

1. 自己在 Linux 建立一個資料夾, ex: rootfs

2. 在 rootfs 資料夾下建立 Linux 開機所需的基本 root filesystem
    (可參閱 Linux From Scratch: LFS 文件)

3. 編譯 linux kernel, 拿掉不需要的東西, 精簡化

4. 利用各種能將 rootfs 封裝成 image 的 tools 進行封裝, ex: genromfs
     (http://freshmeat.net/projects/genromfs/)

5. 修改 grub 的選單

6. 開機測試!

----

Tip: 假如你不想處理 busybox 的話,

有個我以前用過的驗證方式, 因為 Linux kernel 開機時,
會去執行 /bin/init (事實上他有很多選擇啦, 不詳述...)

所以你只要用 C 寫一個無窮迴圈
ex: 每隔 3 sec 一直印 "Hello Linux ~ I'm NOT init"
然後編譯成執行檔之後, 故意把他取名叫做 init, 然後放在 rootfs/bin 下面.

開機之後, 假如你成功  mounted rootfs, 就會執行你的 init (當然是假的 init 辣)
就會一直印

"Hello Linux ~ I'm NOT init"
"Hello Linux ~ I'm NOT init"
"Hello Linux ~ I'm NOT init"
"Hello Linux ~ I'm NOT init"

試試看^^ 很好玩喔~







7


首先,其實在下並不是什麼高手,進這一行的資歷比起版上的高手算是資淺很多,
本身也並非很資深的工程師。
這篇文章是給跟我一樣同為新手的人一點方向,也請熱心的大家一起來補充!

我當初也是跌跌撞撞地進入這一行~
不過我覺得自己還算幸運,好像不小心走對了方向....
版上很多人都在問,要怎樣入門? 需不需要去上課? 有沒有參考的書?

這裡我提一個比較不一樣的觀點,也許實際上很難達到.....但是先不管!
以我工作到現在的感想是,你想近這個領域的話,就去『找一份這樣的工作』
這樣最快! 也最有系統~ 比上一堆課都還有用!

---

你一定會想問? 哪有這麼容易就能找到這樣的工作?

你會發現,只要在討論區上問說『新手要怎麼入門』?
會得到一些五花八門的答案,像是『C語言必備』『組合語言要懂』『電子電路的基礎』
『複習計算機組織』『修單晶片的課程會有幫助』.....等等
不過, 等全部學完, 人都往生了....

其實這些答案都對,但是你可能不知道的是,其實不是每個工作都需要知道這件事情,
一個嵌入式產品從誕生到量產,都需要很多不同職務內容的 RD 來幫忙,
每個 RD 所需具備的知識內容一定是不一樣的。
所以就看你所在的公司,在這個產品開發的流程中,扮演什麼樣的角色!

---

就我目前所在公司(ODM廠)看到的流程來說,假如要做一個網路產品,wireless router 好了,
通常就是先決定 cpu 要用哪一家的,wireless chip 要用哪一家的,switch chip 要用哪一家的?
這些公司,就是我們口中說的 vendors(協力廠)。
決定好了之後,你用的開發環境(SDK),通常 vendors 都會提供(通常是提供 cpu 的那家公司)

我們 ODM 廠要做的事情,就是把這包 SDK 的架構弄懂,
然後把我們要加上去的 service 一一加上去,比方說一台 wireless router 上面會有什麼服務?
dhcp,NAT,routing 總要有吧? 或許還會有 vpn,ddns....等等的服務。

然後負責的工程師可能就會去網路上找 OpenSource 的 dhcpd,iptables...
然後嘗試將它修改後 porting 到 SDK 的環境上,
最後 build 出可以在 target board 上執行的 firmware。

簡單的說,整個開發工作就大致上是這樣,而且遇到比較難解的問題的時候,
vendors 廠的工程師也會來協助!

所以假如你找的公司是 ODM 廠,就是做產品的 software,做系統整合。
通常你要熟悉的就是 C 語言,還有學會在 Linux 上進行編譯的那一套流程(Makefile...等等),
其他的知識,你都可以在工作中慢慢補強~

假如你是我口中所說的那些 vendors 廠,尤其是 cpu 廠(系統晶片廠),
我個人覺得那對技術門檻的要求比較高,你可能真的要懂組合語言,懂 compiler,
懂一堆比較偏底層機制的知識,因為你可能要負責生出 SDK。

說真的,每次 chip vendors 來 support 的時候,
我都覺得他們很厲害,講的東西對我來說是另一個世界講的語言! = ="
不過利用這個 project 的機會,多跟他們打交道,自然會學到一些東西的!

---

所以你只要知道該公司扮演的角色,進入這一行的機會還是有的。
你一定想不到,我當初近這一行的時候,並不是負責很核心的開發工作,而是在負責寫 web UI。
沒錯! 就是寫網頁啦! 看起來我的工作跟 Embedded System 很不相關,
事實上我寫 HTML 的時間比寫 C 還多很多~ 而且我還寫了很久哩....
但是這個工作卻是我覺得入門最好的進入點。

很多網路設備都需要有人寫使用者介面,這也是整個嵌入式產品的一部分。
你放心,還是可以學到東西的; 你知道一支沒有 filesystem 的 wifi-phone 要怎麼弄出 web UI 嗎?
當你從 UI 上填一個值,按 OK 之後,你知道系統偷偷做了哪些事情嗎?
而且你還真得要知道這些事情才行,因為寫系統服務的人會告訴你,從 UI 上傳下去的值要檢查什麼,要注意什麼?
然後你只要花點心思去 trace 整個流程,跟寫 service 的人多聊聊,就會在工作中,漸漸地建立整個系統觀~

只要用心,多思考,總是會有很多有趣的議題的~
到現在我也幾乎不寫 UI 了,已經在做其它更有趣的事情了~

---

書的話,市面上的書也很多,很多書是那種需要搭配板子實習的,假如你沒有板子,說真的也沒什麼用!
而且我覺得我過去買的那些書,我看的時候完全都沒感覺,反而是工作一陣子之後,
在回頭去看看,才會跟現有的經驗做連結,才會有豁然開朗的感覺!

其實在下並非資訊系本科的學生,而且科系還差真遠,
所以我工作後,花了很多時間自己再進修。
關於上課,其實在下也曾去上過一些課,我對上課這件事情,是支持的,
我也覺得我當初上的那些課程給我的幫助是正向的~
但是慎選補習班是很重要的! 一定要有實習, 時數要夠~
不可能會有『快快樂樂無痛學會 Embedded Linux』這種事情~

另外,非常強烈建議你,假如你決定要去上課!
一定一定一定一定一定一定一定一定一定一定要熟悉 Linux 到一定的程度,
不是架 server 這種事情喔, 是至少了解 Linux 的指令,開機流程,和系統設計的邏輯,
因為我之前去上課的時候,總是會發現有些學員連基本的 Linux 使用都有問題,
常常老師已經在繼續講下一段了,他還很困惑於剛剛的指令在做什麼事情~
只是一股腦的想學就來上課,效果是有限的~

這點還好我當初做對了選擇,我先去上了 Linux LPI 的課,
當然不是為了要考證照啦! 只是為了要了解 Linux。

而且我忍不住要提一件事情,我還真他X的幸運!
我在台南念書時,有報名 LPI 的課,沒想到老師是 netman 大大!
後來我到新竹工作後,可以重聽一次,沒想到老師是 小州 大大,你說說我是不是很幸運!

我始終都記得 netman 大大在第一堂上課時所提的金字塔學習觀念~
我一直都非常感謝兩位老師幫我紮下的基礎,他們教會我的是一個學習 Linux 的方法!
這對我後續的學習新東西時,有很大的幫助!

所以一定得把基礎打好,Linux 就像積木一樣,你手中握的積木越多,學習的彈性會越大。
你手中握的都是別人用積木組好的套件時,你會在學習上有一種很虛的不安全感!

---

以上, 只是個人淺見, 也請各位有經驗的大大多多分享與指導囉, 感謝!

順便提一下,之前我翻到一本書,我其實還沒時間去看它,
但是我覺得寫的不錯:『Linux系統架構與目錄之解析。 作者:邱世華 』
它講了很多我覺得不錯的系統觀念,可以參考看看囉~

在此祝各位工作愉快!



8
我是一個剛接觸embedded system的新手
想請問一下各位前輩有沒有什麼好的網站可以推薦我一下
就是有關embedded方面的
國內外的都好
謝謝大家

其實這個領域很奇怪, 我每次 google 到的都是零散的資訊, 很難有一個網站可以很有系統的告訴你這些知識.
通常都是你遇到問題時, 用 google 關鍵字, 看看有沒有人遇到類似的問題...

網站的話, 我還真沒有特定常常去逛哪幾個網站.
不過我剛發現我的最愛裡有這個, 可能以前有找過資料吧! 參考囉~
http://www.linux-cn.com/html/linux/embed/index.html


9
最後就是netstart的實驗板了,整個課程板子真正有用到的只有10分鐘,叫我們用console線把一個檔案傳到板子上而己,廣告上明明就標榜有實驗板可以使用,但上課時境然是使用軟體模擬器,說因為我們不會用怕我們不小心把板子弄壞了,!@#$%^!就是因為不會用才繳錢來的不是嗎?真是夠了。

不給用板子這點實在是太誇張了, 我知道有些老師甚至會為了教學自行找廠商開發實驗版.
好啦! 話說回來, 假如是新手的話, 我覺得去上一些入門課還是一定會有幫助的,
你沒有真實的玩過板子, 那種感覺是差很多的, 只是要慎選補習班啦!





10
首先, 因為發現有些提問放太久了, 或是問題中沒有提供足夠的資訊讓版友回答,

我想也不會有人想回答了, 所以刪除之!



再者, 在此宣導各位提問者, 當問題解決後, 請記回到版面寫下您的心得.

我發現版上很多提問的文章, 有開頭, 也有熱心的版友參與討論,  並且給予經驗上的建議,

但卻總在最後不見原始提問者將測試後的心得做回饋!

任何解決後的心得, 甚至是測試後又發現的新問題, 都是很好的回饋, 也都可以寫!



另外, 我把一些我個人覺得整理的比較有系統的文章暫時置頂!

假如個位覺得影響閱讀的話, 可以再提出來討論~

11
Embedded 討論版 / 回覆: 如何在IXP編譯程式
« 於: 2009-09-08 05:33 »
謝謝前輩回答問題
目前的情況:
要將寫好的程式丟到ixp機器上
目前只知道兩種方法
第一種是在pc上模擬ixp環境,將程式編譯之後,在放入ixp裡面
第二種是將程式丟入ixp上,利用ixp裡面的gcc來編譯

小弟選擇了第二種方法
不過現在不知道該從哪個地方去著手@@

如果你說的第二種方式, 是指將 source code 丟到 IXP 的 target board 上,
再用 gcc 編譯執行的話, 那你應該需要一個 for IXP platform 的 toolchain,
一般你的 SDK 會提供, 不然的話你得自己 cross-compile (@@||)

我沒完過 IXP 的環境, 我說的也許不正確,
但是其實一般很少用第二種方式做的.


12
Embedded 討論版 / 回覆: 編譯 kernel
« 於: 2009-04-03 14:51 »
我有先裝toolchain ~ 我在檢查一下好了@@

你  echo $PATH 看看, 路徑應該包含你的 toolchain 才對!

13
建議你 porting busybox, 裡面已經有 reboot 的指令了,
如果你看 reboot 的 source code, 他其實是送 SIGTERM 這個 signal 給 init.
參考看看囉~

請問我要寫一個linux ARM下的reboot程式 我該如何著手?
我想要像linux 的 reboot一樣

14
我有想過這件事情耶.

不過~事實上, 他們希望我們把 code 上傳到他們的 server 進行遠端 build code 做驗證,
可以 build 出 firmware 我們才算完成任務. 所以才會遭遇這個問題~

如果要求他們在 server 上開啟 setuid, 我不確定他們會同意....(難道無解 :-[)

ps: 我嘗試過先用 root 建立好 /dev 下的檔案, tar 起來,
     但是一般 user 嘗試解壓縮它時, 一樣會遇到權限不符的問題喔.

15
我們在開發 embedded system 時遇到一個問題,
產生 firmware 的過成大約是這樣:
1. 產生 filesystem
2. 產生 kernel image
3. 整合 1 & 2 變成 firmware

但是1.的步驟需要用到 mknod 的指令建置 /dev 下的裝置檔.
一般的開發者都用自己的 Linux 環境, 所以自己是 root, 執行 mknod 沒有問題,
但是客戶要求我們可以用一般 user 的身份 build firmware,
這會使得產生 filesystem 的過程中發生 mknod 權限不符的錯誤.

請問各位有遇過這樣的問題嗎? 是如何解決的呢?


16
引述: "netman"
若是用 logger 命令的話, 除了你前面提到的 level 外, 還要指定 facility 的.

如果只針對 level, 不知道可否修改 syslog.conf:
*.err /var/log/messages


Hi 陳老師:

其實我曾經是你在台南的學生(感謝您)...哈哈!

這個問題已經解決了, 最近有時間才把它整理上來,

因為我們的 syslogd 和 klogd 都是使用 busybox 套件提供的,
而且通常我們都不使用 config file 來做,
而是直接寫在 code 裡面, 你說的 logger 我有去看過,
不過在編譯 busybox 的時候, 我們預設並沒有編譯進去,
所以我的方向就變成一定要從修改程式碼著手,

我在網路上查到的資訊告訴我:

撰寫 kernel module 時使用的 printk() 函數可以丟出核心的訊息
你可以打 dmesg 看到那個訊息, 測試的方法就是去寫個測試的 module,
然後在 init_module() 和 cleanup_module() 時分別以 printk() 印出字串,
例如: test.o, insmod test.o 時和 rmmod test 時都會印出字串,
這些字串都可以用 dmesg 看到.

另外, printk()可以傳參數指定 LEVEL,
例如: printk("<1>Hello");
      printk("<3>Hello");
分別指定 KERN_EMERG 和 KERN_ERR 等級(參考: man 2 syslog)


關於 syslogd 和  klogd 的運作概念, 我喜歡看這一個網頁上的圖,
參考: http://www.rhce.com.tw/rhel/syslog/index.html
它很清楚的說明之間的關係, 透過 printk() 所印出的訊息會先丟給 klogd,
klogd 再傳給 syslogd 然後紀錄到 /var/log/message.
一般的應用程式(APP)也可以透過設定檔, 委託 syslogd 紀錄到 /var/log/message,
或是自行撰寫程式碼將訊息紀錄到 /var/log/message.

所以, 如果我要對核心的訊息做 filter, 我要處理的 "那一段" 應該是
klogd --> syslogd 的這一段.

我在網路上看到的第二個資訊就是, 如果你同啟動 klogd, 和 syslogd,
不管你的level設定是什麼, 所有的核心訊息都會紀錄到 /var/log/message 中.
事實上在一般的 PC 上或是使用預設的 busybox 都是如此,
但是當我看過原始碼之後, 發現一切都是程式碼在作祟.

打開 busybox 的  klogd.c, 可以看到下面這段 code:

static void doKlogd(...)
{
   ...

   syslog(priority, "%s", message);

   ...
}

如果你去 search 'syslog' 的字串, 你會發現它呼叫了幾個這樣的函數,
這個函數做什麼用呢? 簡單的說就是當你啟動 syslogd 時,
如果呼叫它, 你帶的 message 就會傳給 syslogd,
然後 syslogd 就會幫你紀錄到 /var/log/message 中,

其中的 priority 就是我們剛剛在討論的 level (0-7),
所以...是不是很好改了, 我只要加上:

if (priority < KERN_WARNING) // KERN_WARNING = 4
{
   syslog(priority, "%s", message);
}

就可以讓 klogd 只把 level < 4 的訊息丟給 syslogd,
就這麼簡單.....Open Source 萬歲!


關於 syslog() 函數的使用可以參考這篇:
參考: http://fanqiang.chinaunix.net/a4/b8/20010524/190000219_b.html

ps: 另外, 我第一次 po 文章時所說的 remote log 無法傳送的問題,
    後來發現其實可以正常運作, 可能是我的程式之前沒寫好,
    使用 busybox 的 syslogd 作 remote log的方式是:
    syslogd -R <ipaddr>
    我也測試過 printk() 的訊息可以正確的丟到remote 端.

17
我遇到一個情況, 系統每次開機時:

1.我會去執行 dhcp client
2.設定好網路組態
3.執行 ntpclient的程式去做網路對時

但是因為這三個程序是寫在 rc 的啟動script 中,
又因為是dhcp的關係, 所以你不能保證執行(3)的時候,
(1),(2) 的dhcp 已經取得資訊並且設定完成.

常常遇到的問題是當 dhcp client 尚未將網路組態設定好時,
如果就去執行 ntp client程式, ntp client 就會發出
"Unknown Host" 的錯誤訊息, 然後結束,
可以理解, 因為 Gateway, DNS 都還沒設定之前,
根本無法連到 ntp server.

所以問題變成是 - 怎麼確保 ntp client在網路組態生效之後才執行,

我試過修改原始程式讓 dhcp client 再要到網路設定之後,
利用 system("ntpclient"); 這個方式去啟動,
但是有些邊際效應產生, 結果不是很好,

另外, 有個方向是利用我們的函數,
因為 dhcp 取得網路組態之後會將設定寫入 FLASH 中,
我們也有funciotn可以存取, 例如: get_flash("gateway");

所以我有想過在 dhcp client 的程式中寫個 while(1) {...}
裡面隔一段時間就 get_flash("gateway"), ...等等的數值,
如果不是 "0.0.0.0" 就去啟動 ntp client,
不過感覺這樣做效率會不好, 所以想請問大家有沒有好的解決辦法???

18
Hi all:

不管是為了在 Linux 上作程式開發,或是為了證明自己對 Linux 的熱情,
你可能會採取的方式就是花個幾萬塊去敗一台 PC 灌 Linux,
但如果你像我一樣窮的話,大概會尋求用 MinGW+MSYS,Cygwin,VMWare...等等的替代方案,
這幾個東西我都粗淺的玩過,不過我這邊要推薦的方式是使用 CoLinux。

小弟覺得 MinGW+MSYS,Cygwin 的方案沒有讓我有 "使用Linux的感覺",
可能我這個人比較龜毛,我就是不爽打 ls 時會看到像 "\Documents and Settings" 這樣詭異的目錄,
VMWare 給我的感覺蠻肥大的,雖然你可以自己客制化安裝,但我總是覺得它很佔資源又蠻龜速的。
而且像我這樣沒錢又買不起正版的人,如果不用 VMWare Player 的話,大概又要花額外的時間找XX檔...非常麻煩。

我相信有用過 CoLinux 的人應該會對它的表現感到滿意,
網路上有很多熱心的前輩寫了很多教學檔,有些教學甚至非常深入,
教你在 CoLinux 上安裝自己的 Linux Distro (哇~~)
當初小弟也是看了一堆文章後才辛苦地建立了我自己的 CoLinux 環境,
但是跑過一次流程之後,你就會很清楚 CoLinux 的運作哲學了。

--------------------------------------------

首先,這篇文章談不上什麼 "分享" 啦!主要是我自己整理的 "學習筆記" ,
我會用 "最簡單" 的方法去做,並沒有什麼高段的技術可言(因為高段的我也不會),
我直接使用網路上人家包好的 image 做說明(Mini Fedora Core 1),
如果你想自己在 CoLinux 上弄個 SuSE Linux 或是其他我沒聽過的 Distro,
小弟就真的無能為力囉!因為我也沒嘗試過在 CoLinux 上重新安裝 Linux Distro。

先說說我的需求,當初會去用 CoLinux 是因為公司只分配一台 NB 給我,
我個人用 vi 寫程式又非常龜速,我曾經也是懷抱滿腔的熱血逼迫自己使用 vi,
並且配合 ctags 和 taglist plugin,使用了一個月之後還是不習慣,
主要的原因是不是對指令不熟,而是我操作的很慢,Trace Code 還好,
但是寫的速度就是慢,我也嘗試過一些 Linux 下的 IDE 環境,但.......
抱歉!我真的覺得很難用。

之後,我在討論區上看到一個方式,就是用個很鳥的軟體(名稱我忘記了)去 mount FTP 資料夾,
概念是你先在 Linux 上啟動 FTP Service,在 Windows 上執行那個軟體,
利用那個軟體去把遠端 Linux 主機上的 FTP 目錄 mount(也許Windows上叫做"連線遠端磁碟機")
成 Windows 上的一個磁碟機,這樣你就可以用你心愛的 UltraEdit 去 Trace Code,
不過....超難用的,龜到爆!如果你的情書放在 Linux 主機上的話可以這樣修改,
但千萬不要想要用它來寫程式,光是在一個大型專案之中做 "Find in Files" 的動作所花的時間
足夠讓你去茶水間泡杯茶或是跟公司的總機小姐聊個天打情罵俏一下,
好啦!我承認我當初就是懶得去學什麼 SAMBA 啦!(後來用 SAMBA 之後速度 "明顯提升")

對於 Embedded Linux 的開發工作,小弟只是個剛入門的菜鳥,所以如果有什麼地方的用詞不嚴謹,
或是觀念上不正確,還請各位前輩不吝指教。

以下我會從安裝 CoLinux 開始說明,然後示範安裝並且設定一些開發 Embedded Linux 專案時常用的套件,
像是 tftp Server 之類的,還有一些我自己在管理 Project 的方法,
這個部分包括如何擴充 CoLinux 的容量(就是你打 df -h 看到的那些資訊)。

最終的目的就是協助各位將你的 Embedded Linux 開發環境移到 CoLinux 上,
如果你有什買什麼開發板的話,你可以試著將你現在用的 Cross-Toolchain 和
 Project SourceCode 放到 CoLInux 上編譯看看,如果你也喜歡這個開發模式,就推廣一下吧!
目前小弟所在的公司就是用這個開發方式唷!

ps: 蝦密?X-Window!你要 X-Window......
  抱歉,這篇文章不會告訴你怎麼在 CoLinux 上安裝 X-Window,
  不過我會在文中給你一個參考網頁,它教你怎麼用 apt 裝 Gnome 環境,
  當初我的確參考它在 CoLinux 上裝過 X-Window,
  用 VNC Viewer 去看還會有登入畫面耶(真是見鬼了!)

  效能怎樣?......我覺得還可以看啦!但我相信你不會想用它來看網頁!

--------------------------------------------

目錄:

[1] CoLinux 簡介
[2] 下載所需套件
[3] 安裝 CoLinux
[4] 解壓縮 Root FileSystem & swap Devic
[5] 設定網路名稱 & 修改 fc1.colinux.xml
[6] 啟動 CoLinux
[7] 後續的網路設定
[8] 設定/啟動/關閉 swap
[9] 相關套件安裝
[10] 設定 Service 以及開機後立即啟動服務的方法
[11] 在你搞爛系統之前
[12] 關於分割區的的擴充和 Project 管理
[13] 有的沒的 - 將 CoLinux 以 Windows "服務" 的方式來啟動
[14] 其它無關痛癢的議題

--------------------------------------------

[1] CoLinux 簡介:
  略過......哈哈!自己去 Google 一下吧!

--------------------------------------------

[2] 下載所需套件:

  官方網站: (http://www.colinux.org/ )
  下載處: (http://sourceforge.net/projects/colinux )

  下載:
    (1) coLinux-0.6.3.exe (coLinux主程式)
    (2) colinux_minimal_fedora_core_1.zip
      (Root FileSystem Image, OS Image,隨便你要叫他什麼,反正就是有人先幫你安裝好
       Minimal Fedora Core 1,然後封裝成一個檔案)

  下載WinPcap: (http://www.winpcap.org)

--------------------------------------------

[3] 安裝 CoLinux:

  基本上用 "下一步" 安裝法就可以安裝好了,但是有兩個地方請注意:

  (1) 安裝時取消 Root Filesystem image Download 選項,因為我們會自行下載。
    (就是你剛剛下載的 colinux_minimal_fedora_core_1.zip )

  (2) 建議安裝在c:\colinux 或是 d:\colinux (建議有3G以上的空間)
    (小弟的測試環境安裝在d:\colinux下)

  安裝過程中會安裝一個虛擬的網路卡: "TAP-Win32 Adapter V8 (coLinux)"
  安裝完後重新開機之後,檢視你的 "網路連線" 應該會多一張虛擬的網路卡。

--------------------------------------------


[4] 解壓縮 Root FileSystem & swap Device:

  安裝完 CoLinux 之後,你應該會在安裝目錄下看到幾個檔案,像是:
  vmlinux,initrd.gz
  我想這不用我說明吧,但是這樣還不能使系統運作,因為你只有 Kernel image 和
  Initial Ram Disk,一般開機完之後不是有個動作叫做 mount Root FileSystem 嗎?
  是的,以下就來 "安裝它"(其實只是把它解壓縮出來而已啦!)

  將 colinux_minimal_fedora_core_1.zip 解壓縮之後可以看到:

D:\colinux_minimal_fedora_core_1>dir

磁碟區 D 中的磁碟沒有標籤。
磁碟區序號:  AAA0-D909
D:\colinux_minimal_fedora_core_1 的目錄
2006/02/16  下午 05:03    <DIR>          .
2006/02/16  下午 05:03    <DIR>          ..
2004/03/10  上午 05:55                45 blank_1.bz2
2004/03/10  上午 05:55                49 blank_10.bz2
2004/03/10  上午 05:55               113 blank_100.bz2
2004/03/10  上午 05:57               785 blank_1024.bz2
2004/03/10  上午 05:57               112 blank_128.bz2
2004/03/10  上午 05:57               208 blank_256.bz2
2004/03/10  上午 05:58               306 blank_384.bz2
2004/03/10  上午 05:58               402 blank_512.bz2
2004/03/10  上午 06:00                79 blank_64.bz2
2004/03/10  上午 06:00               594 blank_768.bz2
2004/04/14  上午 08:05               490 fc1.colinux.xml
2004/04/14  上午 08:17        83,727,430 fc1_2GB_root.bz2
2004/04/13  下午 09:12             1,413 README.txt
      3 個檔案      83,732,026 位元組
      2 個目錄   9,922,768,896 位元組可用


  這邊我需要的檔案有:
  (1) blank_128.bz2 可以被格式化為 swap device。
  (2) fc1_2GB_root.bz2 是 Fedora Core 1 的 Root FileSystem,解壓縮之後約 2G 多。
  (3) fc1.colinux.xml 是 CoLinux 的主要環境設定檔,它與安裝完 CoLinux 之後,
    會在安裝目錄下看到的 default.colinux.xml 是同一個東西,
    原則上你只要使用它去修改就可以了,概念上"有點像"是 Grub 和 fstab 的綜合體。

  安裝: (路徑可以自由設定)
  (1) 解壓縮 fc1_2GB_root.bz2 會得到檔名為 fc1_2GB_root 的檔案,將它複製到d:\colinux\下。
  (2) 將 fc1.colinux.xml 複製到d:\colinux\下。
  (3) 解壓縮 blank_128.bz2 會得到檔名為 blank_128 的檔案,
    將它複製到 d:\colinux\ 下並更名為 swap_device

  ps: 事實上我上面步驟中所用的檔名與目錄,你都可以自己更改,只要在接下來的設定檔中正確地指到
    Root FileSystem 和 swap device 所在的路徑。

--------------------------------------------

[5] 設定網路名稱 & 修改 fc1.colinux.xml:

  這是比較重要的步驟,很多人無法完成 CoLinux 的開機都是因為這邊的步驟發生錯誤:
  修改 fc1.colinux.xml (剛才複製到d:\colinux\下了):

<?xml version="1.0" encoding="UTF-8"?>
<colinux>
  <block_device index="0" path="\DosDevices\d:\colinux\fc1_2GB_root" enabled="true">
  </block_device>
  <block_device index="7" path="\DosDevices\d:\colinux\swap_device" enabled="true">
  </block_device>
  <bootparams>ro root=/dev/cobd0</bootparams>
  <image path="vmlinux"></image>
  <memory size="128"></memory>
  <network index="0" type="bridged" name="LAN">
  </network>
</colinux>

  重點說明:

  (1) block_device index 0 是我們的 Root FileSystem 所在位置,
    不管你放在哪裡指定到正確的路徑和檔名就好。

    它的 device 不像我們所熟悉的 hda0, hda1,而是 cobd0, cobd1,
    我猜是 "COlinux Block Device" 的意思,稍後 CoLinux 開機之後,
    你應該可以在 /dev/ 下看到這些 devices。

  (2) block_device index 7 是 swap device,為什麼一定要是 "7"?
    我看討論區的文章說是這一個 Root FileSystem 的預設值?
    我之前嘗試手賤改了 index 值,但是我忘記測試有沒有成功?
    因為反正 index 7 可以用,我也很懶得去測試,如果你測過的話可以告訴大家結果如何!

    不過基本上在 CoLinux 開機之後,你去check /etc/fstab 的設定和 fc1.colinux.xml
    的設定互相對應就沒問題了(這個過程也可以讓你了解 CoLinux 的配置哲學)。

  (3) 其中這裡示範的網路設定方式為 bridged,注意 name 的設定是你網路連線的名稱,
    安裝 CoLinux 時會安裝一張虛擬網卡 "TAP-Win32 Adapter V8 (coLinux)",
    我目前的電腦連線出去的網卡是 "Intel(R) PRO/100 VE Network Connection",
    他的連線名稱為 "區域連線" ,也許你安裝 CoLinux之後,會有個 "區域連線2"。

    因為修改設定檔 fc1.colinux.xml 不支援中文名稱,
    所以你只要在 [開始] --> [設定] --> [控制台] --> [網路連線] 中,
    在那個 "區域連線" 上按右鍵,重新命名為任意名稱,
    在設定時填入 name="YOUR_NETWORK_CONN" 中就可以了,
    這裡我將原本的 "區域連線" 更名為 "LAN" ,將 "區域連線2" 更名為 "TAP",
    由於我是透過 "LAN" 那張網卡連線出去的,所以在剛剛的是定中才會設定 name="LAN"。

    說明一下目前我的工作環境的網路是透過 LAN 連線出去,在 10.10.2.x 的網段上,
    透過DHCP自動取得IP,(但其實固定的也沒有差別啦)。

  ps:
    在 SourceForge 上你可以下載到不同的 Root FileSystem Image(Gentoo, Debian...),
    你可以為每個 Root FileSystem Image 撰寫不同的 *.xml 設定檔,並且各別取不同的名字,
    然後在啟動 CoLinux 時傳參數指定到不同的 *.xml 設定檔,就會開啟不同的 OS,
    但是......你會這麼變態嗎?(我硬碟小啦!... >_<)

--------------------------------------------

[6] 啟動 CoLinux:

  使用 Windows 的 Command Line Window (cmd.exe)
  (記住我剛剛將 CoLinux 安裝在 d:\ 下)

  1. D:\coLinux>colinux-daemon.exe -h

  Cooperative Linux Daemon, 0.6.3
  Compiled on Sun Feb  5 20:25:03 2006
syntax:
  colinux-daemon [-h] [-d] [-t name]
         ([-c config.xml]|[configuration and boot parameters])
   -h             Show this help text
   -c config.xml  Specify configuration file
          (default: colinux.default.xml)
   -d             Don't launch and attach a coLinux console on
          startup
   -t name        When spawning a console, this is the type of
          console (e.g, nt, fltk, etc...)

  這是說明檔,不用再說明了吧,重點是 -c 可以自己指定設定檔的名稱,
  不指定的話,預設會找 colinux.default.xml

  注意:
    執行之前必須先安裝好WinPcap,否則會出現找不到wincap.dll的錯誤而無法啟動。

  執行:
    colinux-daemon.exe -c default.colinux.xml -t nt

  (跑了一大串資訊之後...)

Fedora Core release 1 (Yarrow)
Kernel 2.6.11-co-0.6.3 on an i686

colinux login:

  預設帳號是root,不用密碼。

--------------------------------------------

[7] 後續的網路設定:

  登入之後 ifconfig 你會發現預設的 ip 是 192.168.0.40,
  你可以經過修改 /etc/sysconfig/network-scripts/ifcfg-eth0 讓你的 CoLinux 與你的網段一致。

  修改網路設定:
  (1) /etc/sysconfig/network-scripts/ifcfg-eth0
  (2) /etc/resolv.conf

  修改完後: service network restart
  就可以 ping 出去囉!

--------------------------------------------

[8] 設定/啟動/關閉 swap:

  記得我們剛才設定的 swap 嗎?

  (1) 確定你的config.xml有這一段:
    <block_device index="7" path="\DosDevices\d:\colinux\swap_device" enabled="true">
    </block_device>

  (2) 確定你的 CoLinux 系統的 /etc/fstab 有這一段:
    /dev/cobd7 swap swap defaults 0 0

  (3) 以 free 指令查看 swap 有沒有啟動

  (4) 若要關閉 swap 用 swapoff -a 指定

  (5) 若想自行增加或替換swap大小:
    可以去下載 swap (http://gniarf.nerim.net/colinux/swap/)。

    或是去下載 blank (http://gniarf.nerim.net/colinux/blank/)
    再自行 format 為 swap device,修改方式:

    1). 先改 config.xml
    2). 開機後改 /etc/fstab
    3) # mkswap /dev/cobd7 (視你的設定而定)
    4) # swapon -a
    5) # free (檢查)

--------------------------------------------

[9] 相關套件安裝:

  然後呢?......基本上,Linux OS 有了網路之後,剩下來應該就是你的事情囉!
  這一版的 Mini Fedora Core 1 上的預設安裝套件非常少,連 gcc 都沒有,
  但它有 apt 和 wget 可以讓你下載套件,你可以開始用 apt-get 安裝所有你需要的套件。

  其實我也是因為學習安裝 CoLinux 才學會使用 apt 指令的,關於apt的指令,
  我個人推薦這篇文章:
  http://apt.nc.hcc.edu.tw/web/apt/apt.html

  這是我自己安裝的套件 (for My Projects):

  apt-get update (每次使用之前一定先下這個指令)
  apt-get dist-upgrade (建議先將目前的套件更新)
  (這個步驟有夠久,先去泡杯咖啡吧!)

  apt-get install gcc
  apt-get install make
  apt-get install genromfs
  apt-get install lftp
  apt-get install vsftpd
  apt-get install tftp-server
  apt-get install tftp
  apt-get install samba
  apt-get install samba-client
  apt-get install subversion
  apt-get install tar
  apt-get install gzip
  apt-get install unzip
  apt-get install ncurses(或ncurses-devel)
  (沒有這個ncurses套件,make menuconfig 不會顯示畫面)

  apt-get install file
  apt-get install man

  視你需要做增減,重點就是善用 "apt-cache search <keyword>" 指令找到你要的套件。

  這個微型化的 Linux 版本上面所安裝的套建,和啟動的 Service 非常少,
  這可以讓你練習管理自己的 Linux 主機,包含套件管理,System Services 管理...等等。

  如果你願意的話,你可以用 apt 自己把 X-Window裝起來,用 VNC 或是 FreeNX 連進去之後,
  你會看到一個 X-Window 登入畫面,並且可以使用你的桌面環境。

  想要動手裝看看的話,可以參考這一篇:
  http://pukiwiki.kandix.idv.tw/index.php?Fedora%2FMiniFedora

--------------------------------------------

[10] 設定 Service 以及開機後立即啟動服務的方法:

  設定 tftp server, samba server, vsftpd,設定的方式應該不用我說明了,
  網路上可以找到很多文件。

  我記得 CoLinux 預設只啟動 sshd,那麼如何設定開機後自動啟動其它的 Services 呢?
  也許你以前很依賴 RedHat/Fedora 的 setup 指令,但是 CoLinux 沒有這個指令唷~

  請你學會正統 Linux 用的指令 - chkconfig
  不再贅述了,請參考這一篇:
  http://linux.vbird.org/linux_basic/0560daemons.php#starting_daemon

  ps: 使用 ssh 登入 CoLinux 時,帳號/密碼為 root/colinux。

  ps2: 我自己目前都把專案放在 CoLinux 中,並且將專案資料夾以 SAMBA 分享給
     Windows 系統 "連線遠端磁碟機"(我真討厭這個冗長的名稱!)
     這樣我可以用我的 UltraEdit 去看 Code。

  ps3: 因為啟動 CoLinux 的方式是透過 Windiws Command Line 的視窗,
     而且視窗大小不好調(事實上,我不知道怎麼調啦!)
     複製貼上的行為也是 Windiws Command Line 的模式,
     所以我建議用 Putty 或是 SecureCRT 之類的軟體 ssh 進去做編譯。

--------------------------------------------

[11] 在你搞爛系統之前:

  到這邊你已經建構了一個完整的開發環境,也安裝了你所需要的套件,
  所以我會建議你在你搞爛你的 CoLinux 系統之前先備份吧!

  現在就先 poeroff CoLinux,然後把你的 d:\colinux\fc1_2GB_root
  壓縮備份起來 (壓縮之後 size 約在 300Mb 以下)

  你可以連 *.xml 的設定檔和 CoLinux 的主程式一起燒錄起來,然後放在你家的貓找不到的地方,
  這樣你下次想幫別人安裝或是重新安裝時,就不用在重新搞 apt update 那個步驟了。

--------------------------------------------

[12] 關於分割區的的擴充和 Project 管理:

  到這邊如果你應該有足夠的資訊可以把你的嵌入式專案搬移到 CoLinux 下,
  並且在 Build firmware 之後透過 tftp load 到你的 Target Board 上。

  可是你可能會問,當初我們安裝的 RootFS 約有 2G 的空間,如果我需要維護不同的專案,
  勢必一定會到空間吃緊的狀況,這個時候就需要擴充分割區了,
  其實概念跟你在 PC 上裝一顆新的硬碟很像啦!

  步驟如下:

  (1) 下載 ext3fs image (http://gniarf.nerim.net/colinux/fs/)
    把它解壓縮到你喜歡的地方,這裡示範是: d:\colinux\fs_2048Mb
    (我下載的是已經格式化為 ext3 的 2G FileSystem 空間)

  (2) 修改 config.xml,增加一個新的 block device:
    <block_device index="2" path="\DosDevices\d:\colinux\fs_2048Mb" enabled="true">
    </block_device>

  (3) 開機進 CoLinux 之後,修改 /etc/fstab:
    增加: /dev/cobd2 /mnt/projects ext3 defaults 0 0

  (4) # mount –a (可在下指令之前和之後用 df 指令檢查比較)

  一般而言我們可以將/home,/opt,/mnt,/YOURNAME,使用額外的 FileSystem image,
  好處是方便管理與備份,比如你可以為每一個 project 開一個 "cobd?" 設定 /project?? 之類的掛載點,
  然後設定 SAMBA 讓 Windows mount 它,這樣要備份的話也只是備份那個 /project?? 所對應的
  Filesystem Image File 而已。

  ps:
    我的管理方式是我去下載很多 ext3fs image,並且全部都 mount 到 /mnt/ 下的資料夾,
    比如 /mnt/project01,/mnt/project02 其實都對應到各自的 Ext3 格式的 FileSystem Image。

    我把各個專案用到的 SourceCode 和 Cross-Toolchain 都放進去 /mnt/project?? 中,
    然後在我的工作目錄下(例如: /home/andrew)去做 Symbolic Link 到 /mnt/ 下的各個專案,
    這樣就算是要設定 Cross-Toolchain 的 PATH 都不會有問題。

    有些龜毛的 Cross-Toolchain 一定要你安裝在 /opt下,
    但你又不想增加 Base OS 系統(指 Root FileSystem 的分割區)的空間時,
    都可以用 Symbolic Link 的方式解決。

    我這樣做的用意是我想切開 Base OS 系統所用的 image (例如:fc1_2GB_root)
    和存放專案所用的 image (例如:fs_2048Mb)。
    所以我想備份專案時,或是我想把專案移交給別人時,
    只要將專案對應的 image tar 給其它成員就好了!

  ps2:
    另外,當你開啟 SAMBA 分享專案時,可能會發生你在 Windows 上用 UltraEdit 去修改
    卻不能存檔的情況發生,主要的原因幾乎都是因為你連線時的帳號,
    對那個 Project 存放路徑的權限設定的關係,解決的方式我就不談了,
    相信大家都會用 chmod,chown,chgrp 的指令。

--------------------------------------------

[13] 有的沒的 - 將 CoLinux 以 Windows "服務" 的方式來啟動:

  每次都要寫一長串指令來啟動 CoLinux 是不是很麻煩,跟我這樣做:

  (1) 開啟一個命令列視窗 (開始=>執行=>cmd)
    cd D:\coLinux
    D:\coLinux>colinux-daemon.exe –h (看--install-service)

  (2) 打: colinux-daemon.exe -c default.colinux.xml -t nt --install-service coLinux
    (最後一個 "coLinux" 的名字是自己取的,將會加到 Windows 的啟動服務清單中)

  (3) 要啟動 coLinux 可以直接執行:
    net start coLinux
    要停止 coLinux 可以直接執行;
    net stop coLinux
    或是直接到 "服務" 裡去啟動或停止 coLinux,您也可以將其設定成開機後自動啟動 coLinux。

  ps: 不過...有誰會無聊到去用它嗎?誰願意一開機就有個 CoLinux 啟動吃我的記憶體,
    還是寫個 DOS Batch File 吧:

    D:\coLinux\colinux-daemon.exe -c D:\CoLinux\colinux.xml -t nt

    如果你變態到一次使用多個 OS image,你可以在桌面寫幾個這樣的 Batch Files,
    然後每一個都指到不同的 *.xml。

--------------------------------------------

[14] 其它無關痛癢的議題:

  這是幾個無關開發工作的議題,但是是我目前想知道的議題,
  如果你剛好有研究過且測試過的話,希望你可以跟大家分享一下吧:

  (1) 我不知道怎麼 Compile CoLinux 的 Kernel (升級?)
  (2) 我不知道在 CoLinux 下怎麼用 minicom (我測試都沒成功耶)
  (3) 怎麼在 CoLinux 上安裝我想要的 Distro?

--------------------------------------------

2006/05/19 Andrew

(END)

19
Embedded 討論版 / Re: 想問embedded的工作
« 於: 2006-05-18 22:13 »
引述: "hon0612"
想問一下,做embedded的工作一定要大學畢嗎?
然後,也要寫程式的專長嗎?
因為我只會embedded 裡面的程序和 shell script而已
embedded 能Run 起來
除了學會了embedded還要學會什麼,才能到embedded的公司上班呢?


不一定要大學畢業, 一般來說一定要會C語言,
我會建議你去找個跟embedded system開發相關的工作會比較快,
除非你是電機資訊背景的學生, 否則像我這樣的人
都會先指派從上層的UI開始寫, 熟了之後再往下層學習.

embedded system的開發工作範圍很寬, 如果是軟體而言,
通常從底層的driver撰寫, 上層的application porting,
到UI的撰寫通常都會分工進行, 越上層工作和硬體比較無關,
基本上只要會用C語言, 懂得Linux的操作, 最好知道Makefile怎麼用...
剩下的就在工作中學吧, 版上有很多從事這個行業的人,
相信大家會給你一些中肯的意見.

20
Hi all:

我想在我的嵌入式系統中弄個syslog的機制,
我使用busybox提供的syslogd和klogd,
關於這方面目前我所認知的是:

(1)使用syslog()函數可以讓一般的Application將message紀錄到
   /var/log/messages中, 但是syslogd必須要啟動, 否則訊息不會被寫入/var/log/messages中.

(2)使用printk()函數可以讓Kernel Module把訊息紀錄到/var/log/messages中,
   但是syslogd和klogd都必須先啟動, 否則訊息不會被寫入/var/log/messages中.

---

但是因為我又不想紀錄太多的訊息, 所以我想詢問的是要怎麼對訊息做過濾,
關於這方面目前我所認知的是:

(1)使用syslog()函數時可以設定level, 關於level的定義如下:

   0: LOG_EMERG
   1: LOG_ALERT
   2: LOG_CRIT
   3: LOG_ERR
   4: LOG_WARNING
   5: LOG_NOTICE
   6: LOG_INFO
   7: LOG_DEBUG

例如, 如果我在Application中寫了這樣的程式碼:
syslog(LOG_NOTICE, "System Message - Notice");
syslog(LOG_INFO, "System Message - Info");

syslogd啟動後執行, 會在/var/log/messages中看到下面兩項訊息:

Jan  1 00:00:50 Hostname syslog.notice System log daemon exiting.
Jan  1 00:00:50 Hostname syslog.info System log daemon exiting.

(2)使用printk()函數也可以設定level, 定義如下:

   0: KERN_EMERG, 系統無法使用
   1: KERN_ALERT, 必須立即執行
   2: KERN_CRIT, 緊急狀態
   3: KERN_ERR, 錯誤狀態
   4: KERN_WARNING, 警告狀態
   5: KERN_NOTICE, 正常狀態且十分重要
   6: KERN_INFO, 報告
   7: KERN_DEBUG, debug-level訊息

例如, 我寫了一個簡單的kernel module,
再insmod時會 printk("<4>Hello, World\n");

若klogd和syslogd"同時啟動"(我測試的結果似乎兩個都要啟動?)
insmod之後會在/var/log/messages中看到:
Jan  1 00:39:38 Hostname user.warn kernel: Hello, World

---

我想做的事情就是做過濾, 比如說我只想讓syslogd 紀錄
LOG_ERR以上的層級(就是只顯示0~3的層級) <== 對一般Application而言
KERN_ERR以上的層級(就是只顯示0~3的層級) <== 對kernel事件而言

要如何做到呢?

---

另外, 我還發現一件詭異的事情, 測試這兩個case時,
如果使用remote logging (指令: syslogd -R <ip>)
我發現application的訊息可以被傳到遠端,
但是kernel module所紀錄的訊息只能被紀錄在target端, 無法傳送到遠端!
不知道是什麼原因, 有人試過嗎?

---

OK~以上是我目前的測試和認知, 如果各位也有開發過syslog的話,
請給我一點建議和觀念上的指證, 謝謝!

21
用thttpd試試看吧, Embedded Linux中常用的
至於CGI你可以參考:

嵌入式Linux 程式設計 王進德
Linux程式設計教學手冊(Beginning Linux Programming中譯本)

這兩本書都有一些章節介紹CGI(用C語言實作)

22
Embedded 討論版 / ram disk
« 於: 2006-04-24 20:10 »
我也是新手, 這是我的看法, 如果有不嚴謹或錯誤的敘述還請個為高手說明:

for 1:
建構embedded linux所用的Ramdisk就是你開機之後所看到並且使用的filesystem,
如同你說的是製作成壓縮格式, 例如*.gz之類的,
不過事實上你可以存放在不同的媒介之中,
但應該是於開機之後, 將那個壓縮格式的Filesystem(ex: *.gz)解壓縮到RAM上,
而不是一開始就將壓縮格式存在RAM中.
為什麼? 因為解壓縮到RAM之後, 可以控制Filesystem是否為可讀寫?

for 2:
事實上Kernel與Filesystem在Embedded Linux系統中"可以是"兩個獨立的東西,
我的意思是Kernel不需要被包在Filesystem之中
不需要, 但是也是可以統一製作成一個image, 事實上, 經你這樣一問,
我目前好像也沒有看過把Kernel一起放進去Filesystem的壓縮格式中的做法,
我也沒有嘗試過這樣是否可行, 這個等待高手回答吧!
不過我想說的是kernel是kernel, Filesystem是Filesystem, 是可以分開的!
如果你玩過一些開發板所附的BSP, 應該會有感覺,
有些開發環境要你先load Kernel再load filesystem, 然後開機...

當然囉, 因為(1)所說的緣故, 你應該可以猜到Kernel本身要支援gzip的解壓縮(以gz為例)
所以編譯Kernel時要確定有選(通常預設是有的)

23
我沒用過這個東西, 不過編譯時遇到這樣的問題, 我會先去check Makefile裡的CFLAGS的路徑, 看看這些路徑是不是能讓我找到reg.h

引述: "shanchieh"
Greeting,

[shanchieh@rh9 gdbserver]$ ./configure --target=arm-linux

然後 make CC=arm-linux-gcc
 
但是再編譯到 /sys/reg.h 都會出現錯誤 (No such file or directory) ,
謝謝您。

24
引述: "CFC"
各位朋友們好,我是CFC
因此,小弟不自量力的想要成立一個屏東的LUG
希望各位朋友們能夠給些建議:)
也希望各位屏東的朋友們能夠加入一起努力:D

這是小弟的E-mail: zusocfc@gmail.com
小弟的YIM: lstella220
小弟的MSN: skywind0000@hotmail.com


加油,我也是屏東人,我也希望屏東也有這樣的組織。

25
Linux 討論版 / 如何make一個www server的kernel
« 於: 2005-11-01 11:07 »
引述: "HaWay"
有小的 www server.... 不過我忘記名子了... XD

kernel 的部份要靠自己了.... #_#a


你說的會不會是這個?
http://www.acme.com/software/thttpd/
因為我之前的公司好像也用這個 :p

26
Embedded 討論版 / 一個新手的問題
« 於: 2005-11-01 09:24 »
可以壓..討論版的公用在於交流..不限作業系統! :lol:

27
當一份專案的程式碼 經過多人經手荼毒後, 可能會有一些"垃圾"存在?

比如說: 宣告, 但是永遠用不到的變數, 或是永遠也不會被呼叫到的函數!

它散佈在程式碼專案中....

這些通常都是 "前人" 所留下來的 code, 而前人通常都已經離職了!

除了一行行程式碼去trace之外, 我想知道的是各位是否知道有

沒有什麼工具或是什麼好方法可以找出這些垃圾?

28
Embedded 討論版 / [請教]使用CF記憶卡作Router
« 於: 2005-10-11 09:23 »
引述: "學飛的小鳥"
以前看到過有用轉接卡將記憶卡直接插在IDE的位置模擬HD...


像是這個: http://www.fabiatech.com/products/fb4617.htm
拍賣網站也找得到, 關鍵字用 CF IDE Adapter就可以了!

29
肉腳版 / Re: 謝謝!!我也很想Show出來。
« 於: 2005-08-14 23:58 »
引述: "New_Hand"
看到回覆,我再開機,想把訊息抄下來,結果現在連進去root都已無法輸入password(不理我),所以,現在我很想重新安裝,該如何移除呢?
謝謝!!


如果要完整移除的話, 我只提醒你記得清除MBR, 你可以用windows開機片開機後打 fdisk /mbr 我想分割硬碟的概念你應該有吧!

如果你要裝Linux+windows的並存系統, 推薦去學會使用spfdisk.

另外...開機時若發現異常, 假如你可以進入Linux環境, 初步的檢查動作可以在開機後打 dmesg 看看在哪出錯?

30
肉腳版 / Re: 電話交換機!!
« 於: 2005-08-14 23:49 »
你可以玩玩看這個
http://www.asterisk.org/

頁: [1] 2 3