哈爸給你問之 如何學好 Linux( 入門篇 )- Q&A

聊天 Agenda

聊天規則

進門請禮貌打招呼,離開也請打招呼再離開,線上活動,不介意大家隨時離開

請先報到,如果有正在做東西,可分享的,請跟大家分享

很多人一起聊天,容易混亂,聊完也無法有效收集成果。

所以嘗試用共筆的方式,看看能不能聊出點花樣。

所有地方都是開放大家隨意編輯,請大家多多貢獻與分享,相信來的能人很多,請大家一同幫助 Maker 的新手

覺得這樣聊天對您有幫助,立即邀請您線上好友參與。也可分享 hackpad 資訊,方便大家參與

共筆注意事項

請注意,此為公開的紀錄,可公開分享的才寫在這裡。其他在臉書閒聊就好

為減少可能的爭議,本共筆著作係採用 創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權

文件生命週期

準備期:

線上共筆期:

會後整理期:

結束封存期:

顧問準備事項

在當天討論之前,本篇主要是給顧問團提前準備相關的 Q&A, 以及互相認識,年落感情之用,希望在當天之前,只有顧問才能看到內容(準備時期,保持點神秘感)。當討論開始,就會開啟權限給所有人可讀寫

顧問白板

此區讓大家認識這次的顧問團,請顧問們自行填寫。建議列上正在做的東西,推薦的臉書討論區等

哈爸

參與人員報到區

請報到,歡迎提供聯絡方式(臉書,Email),需要保持神秘感,可用綽號

Maker1

Maker 的玩具

請參與者,有再做東西的,可以分享一下。比較容易找到同好,也容易得到別人的幫助

哈爸給你問之 如何學好 Linux( 入門篇 )- 參考資料

問與答

為方便追蹤與解答,發問時請直接在此文件中加入新的提問,之後,可將同一個問題發到聊天區,提醒大家已提問。

本問答為個人淺見,僅提供參考。由於是共筆型態,也歡迎大家持續補充與修正

常見的相關參考資料,發問前,請先參考 - FAQ 

Q1 : 如何入門?

A1 :  Linux 就像森林一樣,非常寬廣與複雜,首先想好,短期內想學/做什麼。做個簡單的計畫,然後去完成它。一次一個階段就好。

Q2 : 人多學得快,該去參加哪些臉書群組?哪裏找同好?

A2 : 老實說,我的時代,都是自己亂學的。這些是我臨時抱佛腳查的,歡迎大家補充。

 

來的這些,就是現成的同好與顧問團,會後記得聯繫

Web: Linux.org

User group: LUG

臉書:Linux Taiwan Linux Kernel Hackers Ubuntu 正體中文社團 ubuntu

線上討論區 : 

Q3 : 有沒有什麼人在教?

A3 : 很多相關的課程。巨匠 聯成 台大資訊系統訓練班 資策會

Q4 : 哪些 Open hardware 使用到 Linux ? 

A4 : 樹莓派 香蕉派 Yun Beagleboard Intel Galileo ...

Q5 : 針對 Open hardware 哪些部份特別重要?怎麼學習?

A5 :  Linux power user, Linux administration, Linux programming, Linux driver 這些基本功多少都要會一點,Cross platform development, 著重在 porting,程式開發的功力要多一 點,driver porting 的能力要強一點,對 CPU 從第一個指令開始,到整個系統就緒的流程要清楚。

Q6: 如何設定讓 Raspberry Pi 開機時,執行特定的 Python 程式?版本用 Raspbian 

A6 :  一般來說在啟動流程中的最後一步會執行 rc.local,加在這邊最正常。名稱在不同的 Linux 中稍有不同,但意義是一樣的。可 trace 一下,就知道 

Q7: 我想做一個 Network Bridge 請問如何設定?

A7 : 我當作是問 network sw bridge 來回答,一般有 sw bridge 的 util, 應該叫做 brctl ,可以查一下。很簡單使用。

Q8: 如果我想要自己porting linux 到某個平台, 舉例來說 雙核的A9 系統. 該怎麼做?

具體的平台是 Xilinx Zynq (FPGA + ARM) 平台. hardware 是現成的,  廠商也已經porting 好一版linux, 但如果我想自己porting, 並且加上GUI (例如ubuntu的環境), 要怎麼做?

A8: Porting 的流程是 port CPU, Timer, driver, 後面直接可以使用 linux 原生的東西,所以你要看你拿到的東西已經做到哪裡。從0 開始也行,只是會很刺激。就你的例子, linux 已經上去了。情況就是一個被 port 好的 linux, 你想換成社群的版本。diff patch 來上是比較有機會的。要看情況,可以再詳述一下您的狀況?

Q9: 當我拿到一片linux的時候 怎麼建立tool chain ? 現在在RPI 中用什麼方式呢?

A9 : tool chain 一般分為 native compile, cross-compile. 像我們在 Intel 平台,直接 compile 給自己平台使用的叫做 native compile, 在 PC 上 compile 給 ARM 用叫做 cross-compile. 

Q10:在linux 系統中, 可以用mmap 直接對CPU的位址存取暫存器. 請問這樣的作法會不會不穩? 還是應該要照driver 的作法來存取? (因為對linux driver 完全不熟, 擔心學習曲線長, mmap就跟寫MCU 一樣很簡單. 但又怕一直用mmap會有後遺症)

A:  直接存取是相當危險的,一般用 driver 的方式來處理。硬是要用 mmap or dev/mem 存取的話,如果是讀取,應該是沒有關係。寫入的話,你得知道你在做什麼。有把握就行。

Q11 : 以前用GDB 當中斷除錯, 現在怎麼玩啊?

A11 : 有些系統還是整合了 gdb, 所以還是一樣可以用

Q12: 要學linux driver, 最推薦哪本書?  debug 工具為何?  

A12 : 請看參考資料 LDD3 最常用,但是很不好懂。其他 Linux driver 的書可能都很好

Q13 :  linux driver debug 的工具是?

A13 : 呵呵, printk()

Q14 : 一個人適合開發linux嗎? 之前開發手機, 要3,50個人...還是在較高等級的mcu上port rtos就好?

A14 : rtos 不見得比 Linux 來的容易。其實主要看你要做什麼,基本上在 linux 領域裡,高手不用幾個就很厲害了。

Q15: 如果用 Raspberry Pi 做個產品,想要保護產品,請問如何設定才不會被容易破解?

A15: 權限、防火、selinux

Q16:該如何有效的學習Linux?

 剛開始不懂的時候 上網看鳥哥的私房菜 一點一點的學

 最後能架出幾個簡單的Server 雖然知道我學的不過是一點點皮毛

 還有很多東西是我尚未接觸過的

 難道真的要一個一個全部伺服器都架過一遍?

 就像為了學一個程式語言去買了一本書

 把書裡的範例全部不看提供的程式碼練習一遍

 打完了之後 卻失去了方向 不知道那語言能做什麼

 現在學習Linux碰到這個瓶頸

 沒有目的或目標的學習

 想請問走在我前端的前輩們 當初是如何學習Linux的 謝謝

 

 Q16-2:也許是我對Linux不夠認識 用Windows時 我能清楚的知道我要做什麼和想要做什麼

 但對於Linux 我的理解大概只有架站 但對於一般人 應該是不太需要伺服器

 所以不太清楚學習的目標要怎麼訂

 

 A16: 學Linux要做什麼? 以目標去學需要學的指令…等比較有幫助,btw 鳥哥基礎的第一本很有用,譬如:只是要學架簡易伺服,就要熟一些安全上面的東西、一般使用的指令、一開始規劃切割,結果跑去學內核移植是否又太過頭。只能說linux非常多東西可以學。。。有目標再學習比較有效率

 

 A16 -2 : 關於 Linux 管理,我也曾經有這個階段,學很多卻有點亂,也會漏。當初我是因為要考 LPI, 就在短時間再完整練一遍。很有效。我的回答是:根據 LPI 要考的內容去學習,不一定為了要考。但是很有幫助。

 

 A16-3 : 可以參考這張圖,或是參考資料中的結構。先想自己最急著學什麼,就先學那個範圍。記得,每個類別都是一兩年的功夫,很花時間的

 

 Q17: 有哪些 LinFB 社團推薦參加?

 A18 :  請參考 A1, A2, A3

 

 Q18: 有誰在 Raspberry Pi (Raspbian) 成功安裝過 CMU sphinx 語音辨識?

平台? google:  how to install CMU sphinx on (your os)

A19 : 沒用過。有人可以補充?