linux裝置驅動學習(四)

來源:互聯網
上載者:User

1.系統的日誌維護

 ◆syslog

  這個服務程式太重要了,大部分的系統維護都會用到它,也就是網路或系統管理員經常用到的log 檔案。daemon在執行時其實是執行兩個程式:syslogd和klogd,介紹如下,其分別負責不同種類的log,但全部的資訊在系統剛開完機之後,會全部存放在/var/log/message。

klogd

  先介紹klogd是因為當一開始寫入/var/log/message時,klogd所記錄的資訊會比syslogd 的順序優先,原因是klogd所記錄的是尚未進入作業系統的資訊,但其實一開始的這些資訊並不是由klogd所記錄的,而是自載入kernel 時,就已經開始記錄的。在系統尚未進入作業系統階段,還在載入kernel及執行initrd時,會將資訊先記錄在/proc/kmsg檔案中(因為在initrd階段沒有實體硬碟可供記錄),等進入作業系統執行完klogd後,klogd再將/proc/kmsg的所有內容全數填入/var/log/message檔案中,這也是為何在/var/log/message檔案的一開始,依然可以看到剛開機在載入kernel以及initrd階段的資訊(連CPU的啟用都看得到,資訊中也註明了是kernel的資訊)。

      常用到的dmesg指令其實也就是將klogd檢測出來的kernel資訊,它直接通過console呈現在使用者面前。在進入作業系統之後,kernel當然還在運行,而此時的kernel若檢測到內部錯誤發生,klogd則會通過/boot/System.map檔案找到kernel所在,如此一來,kernel就可以直接通過klogd的管道將資訊再度呈現在使用者面前。

syslogd

  在klogd填入所有kernel載入及initrd階段的資訊之後,接著執行的就是這一節所提到的服務級程式,而這些程式所產生的資訊,就由syslogd負責整理,所以,這些資訊會直接加在剛剛klogd的資訊後面。在進入作業系統後就沒有依照klogd或syslogd的順序,只要產生資訊,就直接依/etc/syslog.conf檔案的定義,寫入/var/log/message資訊檔。

2.使用/proc系統

     /proc檔案系統是一種特殊的、由軟體建立的檔案系統,核心使用它向外界匯出資訊。/proc下面的每個檔案都綁定於一個核心功能,使用者讀取其中的檔案時,該函數動態組建檔案的內容。如以前用過的:所以,我們一般先實現read_proc這個函數指標:

int  (*read_proc)(char *page, char **start, off_t offset, int count, int *eof, void *data);

page指向用來寫入資料的緩衝區,函數應使用start返回實際的資料應寫到記憶體頁的哪個位置,offset和count同read/write的作用。

在實現了read_proc函數後,需要將其與/proc中的檔案連結起來,為其提供介面。這用create_proc_read_entry來實現。

struct proc_dir_entry *create_proc_read_entry(const char *name,mode_t mode,struct proc_dir_entry *base,read_proc_t *read_proc,void *data);

name就是要制定與read_proc建立串連的檔案,可以重新導向到其他檔案夾下,不一定要在proc中。

 

3.在x86架構上,使用者空間的棧預設自0xc0000000往下,因此,很容易聯想到0xbfffda70可能是使用者空間的棧地址,亦即傳遞給read系統調用的緩衝區地址,這個地址會在核心的調用鏈上重複向下傳遞。在x86架構上,核心空間起始於0xc0000000往上,故大於0xc0000000的值幾乎肯定都是核心空間。在觀察oops清單中,如果包含有0xa5a5a5a5這樣的地址,那幾乎可以肯定的是,我們在某處忘記了初始化動態分配的記憶體。

為了能夠在oops在看到符號化的調用棧,要開啟CONFIG_KALLSYMS選項。

4.strace命令是一個功能強大的工具,它可以顯示由使用者空間所發出的所有系統調用。它不僅可以顯示調用,而且還能顯示調用參數以及符號形式表示的傳回值。系統調用失敗時,錯誤的符號值(ENOMEM)和相應的字串都會被列印出來

strace ls /dev > /dev/scull0

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.