BeagleBone Black教程之BeagleBone Black使用到的Linux基礎

大學霸發表於2015-07-06

BeagleBone Black教程之BeagleBone Black使用到的Linux基礎

BeagleBone Black涉及到的Linux基礎

在許多沒有Linux相關經驗的人看來,Linux看起來非常可怕。一些“好”發行版會給你配備華麗的桌面(例如OpenSUSE使用的KDEUbuntu使用的Unity),“差一些”的就配備一些樸素的桌面(例如Xfce),而“沒人性”的就只有命令列介面了。實際上Linux並不可怕,可怕的是連嘗試的勇氣都沒有。本章就帶你瞭解一下Linux最基礎的命令列和檔案系統。在你親自嘗試了其中的每個命令之後,你就會了解到命令列的魔力,同時也為之後的學習打下基礎。

BeagleBone Black的命令列

在第2章中,我們的主要任務就是連線BeagleBone,並且得到命令提示符。在命令提示符下,你可以輸入命令來執行啟動程式、管理檔案、更新系統以及編譯程式等等的操作。預設情況下,BeagleBone的命令提示符類似這樣:


  • root@beaglebone:~#


這看似是一串沒規律的字串,但其中大有文章,下面就來一一解釋其中的各個部分:


  • q  root:這部分用來表示當前的登入使用者,這裡是root。root使用者是一個特殊的使用者,它存在於每一個Linux系統中。它也被稱作超級使用者(superuser)或者系統管理員。當然,越大的能力對應越大的責任——你可以操作作業系統中的任何部分,當然包括修改系統配置以及刪除整個系統。這也就印證了計算機界的一句話:再強大的系統也扛不住豬一樣的管理員。
  • q  beaglebone:這部分用來表示主機名(hostname)。這是網路中其他計算機可以使用這個名字訪問到BeagleBone。當然,這個名字並不是固定的,在本章之後的部分將會介紹如何修改它。
  • q  ~:這部分用來指示當前工作目錄。它是你當在所在檔案系統的路徑。如果你不指定路徑地使用建立檔案的命令,那麼檔案就會建立在這個目錄下。波浪號(~)在檔案系統中並不存在,它是登入使用者home路徑的簡寫方式。例如,如果使用root使用者登入,那麼它代表路徑/root;如果使用debian使用者登入,則代表/home/debian。
  • q  #:這部分是輸入提示符。同時也表示登入的使用者是超級使用者。如果你使用普通使用者登入,它將變為$,如圖3.1所示是使用普通使用者debian登入時的提示符。



3.1  普通使用者登入

BeagleBone Black檔案系統

與其他作業系統類似的,Linux檔案系統用來組織檔案或資料夾。檔案系統的根目錄(最高層目錄)使用“/”來表示。在根檔案系統中,有一些主要的目錄被包含在絕大多數Linux系統中,如圖3.2所示是BeagleBone上的Debian系統根目錄下的子目錄。


3.2  Debian的檔案系統

其中幾個主要目錄的介紹在表3.1中。

3.1  根檔案系統中的主要目錄


在介紹了基本的目錄結構之後,我們就可以開始探索BeagleBoneLinux的檔案系統了。你需要學習的第一個命令是pwd,它用來輸出當前工作目錄以指示你當前在檔案系統中的位置:


  • debian@beaglebone:~$ pwd
  • /home/debian


上面的輸出表明瞭你當前在所在的目錄名為debian。這個目錄在home目錄下,而home目錄在根(/)目錄下。

BeagleBone Black改變路徑

改變路徑使用的命令是cd,例如將當前目錄改為根目錄:


  • debian@beaglebone:~$ pwd            #輸出當前工作目錄
  • /home/debian
  • debian@beaglebone:~$ cd /             #進入根目錄
  • debian@beaglebone:/$ pwd              #再次輸出當前工作目錄
  • /


在執行cd命令之後再執行pwd可以看到當面目錄已經變為了根目錄(/),同時你應該注意到命令提示符$前面的“~”變成了“/”。當然想要回到使用者目錄,可以使用“~”也可以使用使用者目錄的絕對路徑“/home/debian”:


  • debian@beaglebone:/$ cd ~                       #進入使用者目錄
  • debian@beaglebone:~$ pwd                      #輸出當前工作目錄
  • /home/debian
  • debian@beaglebone:~$ cd /home/debian/                #進入/home/debian目錄
  • debian@beaglebone:~$ pwd            #再次輸出當前工作目錄
  • /home/debian


符號“~”是使用者目錄的簡寫,cd命令使用它可以方便地回到使用者目錄。但cd命令還提供了一種回到使用者目錄的最簡單方式——不指定引數:


  • debian@beaglebone:~$ cd /              #進入根目錄
  • debian@beaglebone:/$ pwd              #輸出當前工作目錄
  • /
  • debian@beaglebone:/$ cd                 #進入使用者主目錄
  • debian@beaglebone:~$ pwd            #再次輸出當前工作目錄
  • /home/debian


要切換到當前目錄的父目錄也非常容易,使用“..”作為cd的引數即可:


  • debian@beaglebone:~$ pwd                      #輸出當前工作目錄
  • /home/debian
  • debian@beaglebone:~$ cd ..                      #進入當前目錄的父目錄
  • debian@beaglebone:/home$ pwd            #再次輸出當前工作目錄
  • /home
  • debian@beaglebone:/home$ cd ..            #進入當前目錄的父目錄
  • debian@beaglebone:/$ pwd                       #再次輸出當前工作目錄
  • /


從上面的一系列命令可以看出,我們使用兩次“cd ..”從使用者目錄返回到了根目錄(/)。當然,“..”同樣可以像使用普通目錄那樣使用:


  • debian@beaglebone:~$ pwd                      #輸出當前工作目錄
  • /home/debian
  • debian@beaglebone:~$ cd ../../tmp          #進入當前工作目錄父目錄的父目錄下的tmp
  • debian@beaglebone:/tmp$ pwd                #再次輸出當前工作目錄
  • /tmp


cd ../../tmp”的含義就是向上走兩個目錄,然後進入同一目錄下的tmp目錄。

BeagleBone Black中列出目錄下的內容

列出目錄下的內容使用ls命令。現在將當前目錄導航到根目錄,然後使用ls即可檢視根目錄下的所有子目錄:


  • debian@beaglebone:/tmp$ cd /                           #進入根目錄
  • debian@beaglebone:/$ ls                                     #列出目錄下的內容
  • bin   dev  home  lost+found  mnt  proc  run   selinux  sys  usr
  • boot  etc  lib   media       opt  root  sbin  srv      tmp  var


這些目錄中的絕大部分都在表3.1中有說明。如果你還想了解這些目錄的更多資訊,那麼可以為ls傳遞-l引數:


  • debian@beaglebone:/$ ls -l
  • total 76
  • drwxr-xr-x   2                   root root  4096        May 15 10:34            bin
  • drwxr-xr-x   3         root root  4096        May 15 10:27            boot
  • drwxr-xr-x  14          root root  3640        May 15 10:19            dev
  • drwxr-xr-x 106                    root root  4096        Nov 10 15:53            etc
  • drwxr-xr-x   3                   root root  4096        May 15 10:52            home
  • drwxr-xr-x  15          root root  4096        May 13 21:30            lib
  • drwx------   2           root root   16384      May 15 10:19            lost+found
  • drwxr-xr-x   2                   root root  4096        Oct 30 13:31             media
  • drwxr-xr-x   2                   root root  4096        Apr 20  2014           mnt
  • drwxr-xr-x   5                   root root  4096        May 15 10:27            opt
  • dr-xr-xr-x 111            root root     0         Jan  1  1970                   proc
  • drwx------   4           root root  4096        Oct 30 17:27             root
  • drwxr-xr-x  23           root root   740        May 15 10:19            run
  • drwxr-xr-x   2                   root root  4096        May 15 10:39            sbin
  • drwxr-xr-x   2                   root root  4096        Jun 10  2012                    selinux
  • drwxr-xr-x   2                   root root  4096        May 15 10:13            srv
  • dr-xr-xr-x   12         root root     0         Jan  1  2000                   sys
  • drwxrwxrwt   8        root root  4096        Nov 10 15:17            tmp
  • drwxr-xr-x  10          root root  4096        Feb 21  2014                    usr
  • drwxr-xr-x  12          root root  4096        May 15 10:32            var


這個列表給出了更全面的資訊,包括許可權、所有者、大小、修改時間等。

BeagleBone Black建立檔案和目錄

為了避免破壞檔案系統,在繼續學習之前我們應該回到我們的使用者目錄:


  • debian@beaglebone:/$ cd
  • debian@beaglebone:~$ pwd
  • /home/debian


如果你是以root使用者登入的,那麼可以使用su命令切換到其他使用者。BeagleBone使用的Debian系統預設已經建立了一個名為debian的使用者,可以使用如下的命令切換:


  • su debian


在切換使用者之後首先檢視當前目錄下的內容:


  • debian@beaglebone:~$ ls
  • bin  Desktop


可以看到,在debian使用者的目錄下已經有兩個檔案了。 

建立目錄可以使用mkdir命令。下面的命令在當前目錄下建立名為myDir的目錄:


  • debian@beaglebone:~$ mkdir myDir
  • debian@beaglebone:~$ ls
  • bin  Desktop  myDir


再次使用ls後,可以看到新目錄已經被建立。如果你想建立一個新檔案,並且向其中寫入一些簡單的內容,使用如下的命令可以方便地完成:


  • debian@beaglebone:~$ echo 'Hello, world!' > hello.txt


上面的語句使用大於符號(>)將“Hello, world!”重定向到了hello.txt檔案。由於hello.txt之前並不存在,所以這條命令會建立這個檔案,使用ls命令可以看到這個新檔案:


  • debian@beaglebone:~$ ls
  • bin  Desktop  hello.txt  myDir


需要特別注意的是,如果hello.txt檔案已經存在,那麼前面的命令會清空檔案中的內容。cat命令可以將檔案中的內容輸出:


  • debian@beaglebone:~$ cat hello.txt
  • Hello, world!


如果你只是想在原來檔案內容的基礎上追加一些內容,那麼需要使用“>>”符號重定向。下面的命令將“Yes!”追加到hello.txt檔案中:


  • debian@beaglebone:~$ echo 'Yes!' >> hello.txt


使用cat命令再次檢視hello.txt檔案:


  • debian@beaglebone:~$ cat hello.txt
  • Hello, world!
  • Yes!


可以看到,“Yes!”已經被正確地新增進去。如果你只是想建立一個空檔案而不進行任何操作,那麼可以使用如下的命令:


  • debian@beaglebone:~$ > empty.txt


是的,直接使用重定向符“>”即可,上面的命令在當前目錄下建立了名為empty.txt的空檔案。使用ls命令即可看到新建的檔案:


  • debian@beaglebone:~$ ls
  • bin  Desktop  empty.txt  hello.txt  myDir


當然,重定向符號不僅僅可以重定向echo,還可以重定向cat的輸出,如下的命令就將hello.txt中的內容輸入到empty.txt檔案中去:


  • debian@beaglebone:~$ cat hello.txt > empty.txt


使用cat檢視hello.txtempty.txt的內容:


  • debian@beaglebone:~$ cat hello.txt
  • Hello, world!
  • Yes!
  • debian@beaglebone:~$ cat empty.txt
  • Hello, world!
  • Yes!


可以看到,這兩個檔案中的內容是完全一致的。前面介紹的這些命令可以建立檔案並簡單地寫入一些內容。如果你想要檢視並編輯內容的話,還是使用一個編輯器比較好。在Linux系統中,通常都帶有nano編輯器。下面的命令使用nano開啟empty.txt檔案:


  • debian@beaglebone:~$ nano empty.txt


nano是字元介面下的文字編輯器,如圖3.3是開啟empty.txt檔案後的效果。


3.3  nano編輯器

當然,這個編輯器是不支援滑鼠操作的,一切操作都使用鍵盤完成,一些常用的操作都在螢幕下邊做了提示,其中符號“^”表示鍵盤上的Ctrl鍵。移動游標可以使用方向鍵;儲存檔案使用Ctrl+O;退出nano則使用Ctrl+X。當然,nano可以完成的功能遠不像看起來那麼簡陋,它還可以執行搜尋、剪貼簿操作以及拼寫檢查。使用Ctrl+G組合鍵可以檢視更多關於nano的資訊。

BeagleBone Black複製、移動(剪下)和重新命名檔案

在命令列下複製檔案使用的命令是cp,在3.2.3節中我們建立了myDir資料夾。下面的命令將hello.txt複製一份到myDir中:


  • debian@beaglebone:~$ cp hello.txt myDir


使用ls命令檢視myDir目錄下的內容:


  • debian@beaglebone:~$ ls myDir
  • hello.txt


使用cat命令檢視hello.txt中的內容:


  • debian@beaglebone:~$ cat myDir/hello.txt
  • Hello, world!
  • Yes!


可以看到hello.txt中的內容與myDir目錄外的hello.txt中的內容是一致的。

移動檔案的命令與複製命令類似,只不過直接移動檔案而不進行復制,使用的命令是mv。在使用這個命令前我們列出當前使用者目錄下的檔案:


  • debian@beaglebone:~$ ls
  • bin  Desktop  empty.txt  hello.txt  myDir


下面的命令將empty.txt檔案移到myDir資料夾中:


  • debian@beaglebone:~$ mv empty.txt myDir


執行完成後再次檢視當前目錄下的檔案:


  • debian@beaglebone:~$ ls
  • bin  Desktop  hello.txt  myDir


可以看到,empty.txt檔案已不復存在。檢視myDir目錄下的檔案:


  • debian@beaglebone:~$ ls myDir
  • empty.txt  hello.txt


可以看到,empty.txt出現在了myDir目錄下。

mv命令的一個技巧用法就是重新命名檔案。在操作之前先確認當前目錄下的檔案:


  • debian@beaglebone:~$ ls
  • bin  Desktop  hello.txt  myDir


下面的操作將hello.txt重新命名為yes.old


  • debian@beaglebone:~$ mv hello.txt yes.old


再次檢視當前目錄下的檔案:


  • debian@beaglebone:~$ ls
  • bin  Desktop  myDir  yes.old


可以看到,hello.txt已經被重新命名為yes.old

BeagleBone Black刪除檔案和目錄

rm命令用來刪除檔案。例如刪除yes.old可以使用如下的命令:


  • debian@beaglebone:~$ rm yes.old


如果你想刪除一個目錄以及其中的所有檔案,那麼可以使用-r選項。下面的命令刪除myDir及其下面的所有檔案:


  • debian@beaglebone:~$ rm -r myDir


需要注意的是,刪除後的檔案無法恢復,請三思而後行。

BeagleBone Black系統設定

就想其他計算機一樣,你可能設定一些選項來符合你的口味,如設定桌布、設定語言、設定時區等。下面就介紹一些你可能想要設定的專案,其中包括日期和時間、軟體安裝和更新、修改主機名以及設定密碼。

BeagleBone Black日期和時間

現在的絕大多數計算機中都有一個實時時鐘,它透過一個後備電池來在電腦關機的時候保持正確的時間。但是不幸的是在BeagleBone中並沒有配備這樣的裝置。也就是說在你剛啟動BeagleBone後,它並不知道當前的時間。檢視系統中的時間可以使用date命令:


  • debian@beaglebone:~$ date
  • Mon Nov 10 17:29:34 CST 2014


當然,在系統啟動之後就可以正確地計時了,你只需要手動為他設定一個正確的時間即可。但是,每次系統啟動都這樣做是任何人受不了的。幸運的是,如果將BeagleBone接入網際網路,它就可以透過NTP來設定時間。當然,你可能發現你的BeagleBone已經聯網了,但是時間還是不正確的。這是因為你還需要進行一些設定。

1.設定時區

你需要做的第一件事情就是設定時區(Timezone)。板子上已經預置了時區的資料庫,你需要做的就是將對應的時區連結到/etc/localtime。首先,你應該備份原來的配置,將localtime重新命名為localtime.old


  • root@beaglebone:~# mv /etc/localtime /etc/localtime.old


如果你使用的是普通使用者,則需要在命名前加上sudo


  • debian@beaglebone:~$ sudo mv /etc/localtime /etc/localtime.old


現在我們就可以檢視資料庫中允許的時區了:


  • debian@beaglebone:~$ ls /usr/share/zoneinfo/
  • Africa           Chile              Factory           Iceland         MET             posix           UCT
  • America            CST6CDT       GB             Indian          Mexico           posixrules       Universal
  • Antarctica        Cuba             GB-Eire          Iran            MST             PRC           US
  • Arctic            EET              GMT           iso3166.tab     MST7MDT      PST8PDT     UTC
  • Asia            Egypt                       GMT0          Israel           Navajo           right             WET
  • Atlantic           Eire                GMT-0          Jamaica                NZ               ROC         W-SU
  • Australia         EST              GMT+0         Japan        NZ-CHAT       ROK           zone.tab
  • Brazil            EST5EDT        Greenwich       Kwajalein      Pacific              Singapore      Zulu
  • Canada      Etc                Hongkong      Libya          Poland           SystemV
  • CET           Europe            HST            localtime       Portugal           Turkey


需要注意的是,一些時區可能包含在以洲命名的資料夾中,例如上海,就包含在Asia中:


  • debian@beaglebone:~$ ls /usr/share/zoneinfo/Asia/
  • Aden           Choibalsan     Irkutsk           Kuwait          Qyzylorda        Tokyo
  • Almaty          Chongqing      Istanbul          Macao         Rangoon       Ujung_Pandang
  • Amman      Chungking      Jakarta          Macau         Riyadh          Ulaanbaatar
  • Anadyr          Colombo       Jayapura       Magadan       Saigon          Ulan_Bator
  • Aqtau           Dacca          Jerusalem      Makassar      Sakhalin         Urumqi
  • Aqtobe          Damascus     Kabul          Manila          Samarkand     Ust-Nera
  • Ashgabat        Dhaka          Kamchatka     Muscat         Seoul           Vientiane
  • Ashkhabad     Dili             Karachi         Nicosia        Shanghai       Vladivostok
  • Baghdad       Dubai          Kashgar        Novokuznetsk           Singapore       Yakutsk
  • Bahrain          Dushanbe       Kathmandu     Novosibirsk     Taipei            Yekaterinburg
  • Baku            Gaza                   Katmandu    Omsk        Tashkent        Yerevan
  • Bangkok        Harbin         Khandyga      Oral                    Tbilisi
  • Beirut            Hebron                 Kolkata        Phnom_Penh Tehran
  • Bishkek          Ho_Chi_Minh   Krasnoyarsk  Pontianak       Tel_Aviv
  • Brunei           Hong_Kong            Kuala_Lumpur Pyongyang   Thimbu
  • Calcutta          Hovd                   Kuching      Qatar           Thimphu


接下來需要做的就是建立localtime到期望時區的符號連結,這裡以Shanghai為例:


  • root@beaglebone:~# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime


如果你使用的是普通使用者登入,則需要在命令前加上sudo


  • debian@beaglebone:~$ sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime


符號連結就類似Windows作業系統下的快捷方式。

2.同步時間

在設定完時區以後,就可以手動觸發一次時間同步了。在Debian下使用的命令是ntpdate-debian


  • root@beaglebone:/home/debian# ntpdate-debian
  • 10 Nov 17:55:25 ntpdate[3536]: adjust time server 202.112.31.197 offset -0.448913 sec


再次執行date即可檢視同步後的時間:


  • debian@beaglebone:~$ date
  • Mon Nov 10 17:57:11 CST 2014


現在,只要BeagleBone上電,時間就會被追蹤。BeagleBone同時也將NTP同步設定為每小時執行一次,這就會導致BeagleBone在上電的一段時間內時間不正確。你可以使用上面的命令來強制進行同步。

BeagleBone Black軟體安裝和更新

如果你的BeagleBone接入和網際網路,那麼安裝或者更新軟體和程式碼庫是非常容易的。軟體是以包的形式分發的,在Debian下,使用apt-get來進行軟體包管理。

apt-get儲存了一份最新軟體版本的資料庫,但是隨著時間的推移,這個資料庫就過期了。所以,在安裝軟體包之前,首先需要更新這個資料庫。更新的命令非常簡單,如下:


  • root@beaglebone:~# apt-get update


此時,螢幕會滾動一些字串以表示正在執行的步驟。如果你想將你安裝的軟體全部更新到最新版本,則可以執行upgrade命令:


  • root@beaglebone:~# apt-get upgrade


這個命令依賴於你的網路狀況以及需要更新的軟體包的數量,整個處理過程可能會經歷相當長的一段時間。

如果你想安裝確定的軟體或者程式碼庫,你可以使用install引數以及相應軟體包的名字,例如安裝VIM可以使用如下的命令:


  • root@beaglebone:~# apt-get install vim


如果你不想進行upgrade整個系統而只是想升級某個軟體,那麼可以為upgrade指定要升級的軟體包的名字。如下是升級Python的命令:


  • root@beaglebone:~# opkg upgrade python


BeagleBone Black修改主機名

預設情況下,BeagleBone使用beaglebone來標識自己,所以你可以在瀏覽器中使用或者在SSH客戶端中使用ssh root@beaglebone.local來訪問它。在大多數情況下是不需要修改它的。但是如果在你的路由器中同時接入多個BeagleBone,你就不知道這個主機名對應的板子了。這就需要為他們分別指定一些個性化的名字。

主機名儲存在/etc/hostname中,你可以使用cat檢視其中的內容:


  • root@beaglebone:~# cat /etc/hostname
  • beaglebone


要修改主機名非常容易,只需要將你想要的主機名寫入hostname即可,可以使用nano也可以使用echo,這裡以使用echo演示:


  • root@beaglebone:~# echo 'mybeaglebone' > /etc/hostname


上面的命令將板子的主機名改為“mybeaglebone”。需要注意的是主機名只可以包含字母、數字和下劃線,不可以包含@#$等這些特殊符號。

為了Beaglebone可以認出自己的主機名,還需要修改hosts檔案:


  • root@beaglebone:~# nano /etc/hosts


hosts檔案的內容如圖3.4所示。


3.4  hosts檔案

我們需要將其中的“beaglebone”改為對應的主機名,之後儲存修改並退出nano。修改完之後,你需要重啟Beaglebone。在登入系統之後,就可以看到修改後的主機名了。

BeagleBone Black設定密碼

在預設情況下,Debianroot使用者是沒有設定密碼的,如果你只透過USB的方式連線或者在自己的私有網路中使用Beaglebone,那麼有沒有密碼都無所謂。但是如果你將Beaglebone接入公共的網際網路,最好還是為它設定一個唯一的密碼。

Linux中,設定和修改密碼均使用passwd


  • root@beaglebone:~# passwd
  • Enter new UNIX password:                                             #輸入的密碼不回顯
  • Retype new UNIX password:                                          #輸入的密碼不回顯
  • passwd: password updated successfully


root使用者想要設定其他使用者的密碼可以為passwd命令指定引數,例如下面的命令為debian使用者設定密碼:


  • root@beaglebone:~# passwd debian
  • Enter new UNIX password:
  • Retype new UNIX password:
  • passwd: password updated successfully


BeagleBone Black關機

雖然直接切斷Beaglebone的電壓也可以關機,但是可能會造成資料丟失或者損壞檔案系統。正確關閉Beaglebone的方法是執行shutdown命令:


  • root@beaglebone:~# shutdown -h now


上面的命令會使板子立即執行關機命令,當然關機過程需要持續一定的時間。當使用者LED不再閃爍並且電源指示燈熄滅的時候,你就可以安全地拔下電源了。當再次將電源接入,板子會再次啟動。如果你只是想讓板子重啟,則只需要執行reboot命令即可:


  • root@beaglebone:~#reboot


本文選自:BeagleBone Black快速入門教程大學霸內部資料,轉載請註明出處,尊重技術尊重IT人!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-1724560/,如需轉載,請註明出處,否則將追究法律責任。

相關文章