上一篇: Linux Pi的奇幻旅程(1)-ARMed Linux
http://ithelp.ithome.com.tw/question/10129066
下一篇: Linux Pi的奇幻旅程(3)-一台任你玩的小電腦
http://ithelp.ithome.com.tw/question/10129537
全部: http://ithelp.ithome.com.tw/ironman6/player/bizpro/alll/1
對於不熟Linux的人, 一開始就是像dd這樣一個深奧難懂的指令, Raspberry Pi和Linux看來並不容易, 要如何教小孩? 如何啟發小孩學習? 對比當年懵懵懂懂的我連電腦是什麼都不清楚, 就去學組合語言Assembler和機器語言8086/8088, dd這個指令其實是小菜, 把它當作一個字彙來學, 這也是小孩子學習語言的方法. 在接下來的文章中, 也會先出現一些指令, 再說明指令的用處.
將Raspberry Pi的映像檔錄進SD卡之後, 看看這張含有Raspbian的SD卡的內容吧:
$ tree -L 2 /media/user01/
/media/user01/
├── 9c7e2035-df9b-490b-977b-d60f2170889d
│ ├── bin
│ ├── boot
│ ├── dev
│ ├── etc
│ ├── home
│ ├── lib
│ ├── lost+found
│ ├── media
│ ├── mnt
│ ├── opt
│ ├── proc
│ ├── root
│ ├── run
│ ├── sbin
│ ├── selinux
│ ├── srv
│ ├── sys
│ ├── tmp
│ ├── usr
│ └── var
└── boot
├── bootcode.bin
├── cmdline.txt
├── config.txt
├── fixup_cd.dat
├── fixup.dat
├── fixup_x.dat
├── issue.txt
├── kernel_emergency.img
├── kernel.img
├── start_cd.elf
├── start.elf
├── start_x.elf
└── System Volume Information
23 directories, 12 files
我用了tree這個指令, 而不是常見的ls指令, ls是list的意思, 等同是Windows之下的dir指令,也就是列出目的目錄之下的檔案. 但是ls只能列出第一層子目錄, 這也是指令tree的目的, 上面的命令中, -L 2是指列出兩層子目錄(Level, L), 而目的目錄/media/user01/
是ubuntu自動將SD卡掛載所使用的目錄. 掛載是什麼意思? Linux的觀念是, 每一個物件都是檔案(file), 電子檔是檔案, 目錄也是檔案, 印表機是檔案, SD卡也是檔案, 外接硬碟是檔案, 藍芽設備也是檔案, 透過掛載(mount)可以把硬體掛載到系統中成為可以存取與管理的檔案. 這樣的觀念和Windows不一樣, Linux完全是檔案的做法. 數年前的Linux, 常常需要手動掛載外接的設備, 現代的Linux則已經自動幫使用者掛載外接設備了. 當Ubuntu把含有Raspbian作業系統的SD卡掛載進來系統中之後, 出現了兩個子目錄, 9c7e2035-df9b-490b-977b-d60f2170889d
和boot, 第一個以目錄9c7e2035-df9b-490b-977b-d60f2170889d含有給Linux Kernel所用的GNU工具和各種應用程式, 而子目錄boot中是讓SD卡可以開機的開機檔和Linux核心, 如果說Windows的C:\Windows是子目錄boot, c:\Program files 可以比喻為子目錄9c7e2035-df9b-490b-977b-d60f2170889d
, 當然, 這樣的對比很粗略, 只是盡量表達Linux的觀念.
要深入說明子目錄boot中的檔案, 就要先了解Raspbian怎麼在Raspberry Pi中開機的, 這和一般電腦開機的程序有些不同, 一般的電腦含有BIOS來負責開機的工作, 但是Raspberry Pi沒有BIOS, 開機的工作交給了GPU, 也就是繪圖晶片來做, 以下是開機的程序:
這是Raspberry Pi的開機程序.看起來很複雜, 只不過是一些存在於子目錄中的檔案陸續被載入與執行. 重要的是, Linux就是這樣運作的, 而Raspberry Pi很巧妙的用GPU來執行BIOS的工作.