Commit f949cb75 authored by Hu Haowen's avatar Hu Haowen Committed by Jonathan Corbet
Browse files

docs/zh_TW: update contents for zh_TW

The content of zh_TW was too outdated comparing to the original files.
Consequently carry out improvements in order to both keep track of sources
and fix several grammatical mistakes in traditional Chinese.

This is a thorough rewrite of the previous patch:
    https://lore.kernel.org/linux-doc/20230807120006.6361-1-src.res.211@gmail.com/


in order to get rid of text damage and merging errors, created based on
linux-next (date: Oct. 9, 2023).

Signed-off-by: default avatarHu Haowen <src.res.211@gmail.com>
Signed-off-by: default avatarJonathan Corbet <corbet@lwn.net>
Link: https://lore.kernel.org/r/20231011051212.17580-1-src.res.211@gmail.com
parent 1fae02e7
Loading
Loading
Loading
Loading
+54 −110
Original line number Diff line number Diff line
@@ -9,16 +9,16 @@
 吳想成 Wu XiangCheng <bobwxc@email.cn>
 胡皓文 Hu Haowen <src.res.211@gmail.com>

Linux內核5.x版本 <http://kernel.org/>
Linux內核6.x版本 <http://kernel.org/>
=========================================

以下是Linux版本5的發行註記。仔細閱讀它們,
以下是Linux版本6的發行註記。仔細閱讀它們,
它們會告訴你這些都是什麼,解釋如何安裝內核,以及遇到問題時該如何做。

什麼是Linux?
---------------

  Linux是Unix作系統的克隆版本,由Linus Torvalds在一個鬆散的網絡黑客
  Linux是Unix作系統的克隆版本,由Linus Torvalds在一個鬆散的網絡黑客
  (Hacker,無貶義)團隊的幫助下從頭開始編寫。它旨在實現兼容POSIX和
  單一UNIX規範。

@@ -28,7 +28,7 @@ Linux內核5.x版本 <http://kernel.org/>

  Linux在GNU通用公共許可證,版本2(GNU GPLv2)下分發,詳見隨附的COPYING文件。

它能在什麼樣的硬上運行?
它能在什麼樣的硬上運行?
-----------------------------

  雖然Linux最初是爲32位的x86 PC機(386或更高版本)開發的,但今天它也能運行在
@@ -40,16 +40,16 @@ Linux內核5.x版本 <http://kernel.org/>
  單元(PMMU)和一個移植的GNU C編譯器(gcc;GNU Compiler Collection,GCC的一
  部分)。Linux也被移植到許多沒有PMMU的體系架構中,儘管功能顯然受到了一定的
  限制。
  Linux也被移植到了其自己上。現在可以將內核作爲用戶空間應用程運行——這被
  Linux也被移植到了其自己上。現在可以將內核作爲用戶空間應用程運行——這被
  稱爲用戶模式Linux(UML)。

文檔
-----
網際網路上和書籍上都有大量的電子文檔,既有Linux專屬文檔,也有與一般UNIX問題相關
因特網上和書籍上都有大量的電子文檔,既有Linux專屬文檔,也有與一般UNIX問題相關
的文檔。我建議在任何Linux FTP站點上查找LDP(Linux文檔項目)書籍的文檔子目錄。
本自述文件並不是關於系統的文檔:有更好的可用資源。

 - 網際網路上和書籍上都有大量的(電子)文檔,既有Linux專屬文檔,也有與普通
 - 因特網上和書籍上都有大量的(電子)文檔,既有Linux專屬文檔,也有與普通
   UNIX問題相關的文檔。我建議在任何有LDP(Linux文檔項目)書籍的Linux FTP
   站點上查找文檔子目錄。本自述文件並不是關於系統的文檔:有更好的可用資源。

@@ -58,33 +58,33 @@ Linux內核5.x版本 <http://kernel.org/>
   :ref:`Documentation/process/changes.rst <changes>` 文件,它包含了升級內核
   可能會導致的問題的相關信息。

安裝內核原始
安裝內核源代
---------------

 - 如果您要安裝完整的原始碼,請把內核tar檔案包放在您有權限的目錄中(例如您
 - 如果您要安裝完整的源代碼,請把內核tar檔案包放在您有權限的目錄中(例如您
   的主目錄)並將其解包::

     xz -cd linux-5.x.tar.xz | tar xvf -
     xz -cd linux-6.x.tar.xz | tar xvf -

「X」替換成最新內核的版本號。
“X”替換成最新內核的版本號。

   【不要】使用 /usr/src/linux 目錄!這有一組庫頭文件使用的內核頭文件
   【不要】使用 /usr/src/linux 目錄!這有一組庫頭文件使用的內核頭文件
   (通常是不完整的)。它們應該與庫匹配,而不是被內核的變化搞得一團糟。

 - 您還可以通過打補丁在5.x版本之間升級。補丁以xz格式分發。要通過打補丁進行
   安裝,請獲取所有較新的補丁文件,進入內核原始碼(linux-5.x)的目錄並
 - 您還可以通過打補丁在6.x版本之間升級。補丁以xz格式分發。要通過打補丁進行
   安裝,請獲取所有較新的補丁文件,進入內核源代碼(linux-6.x)的目錄並
   執行::

     xz -cd ../patch-5.x.xz | patch -p1
     xz -cd ../patch-6.x.xz | patch -p1

   請【按順序】替換所有大於當前原始碼樹版本的「x」,這樣就可以了。您可能想要
   請【按順序】替換所有大於當前源代碼樹版本的“x”,這樣就可以了。您可能想要
   刪除備份文件(文件名類似xxx~ 或 xxx.orig),並確保沒有失敗的補丁(文件名
   類似xxx# 或 xxx.rej)。如果有,不是你就是我犯了錯誤。

5.x內核的補丁不同,5.x.y內核(也稱爲穩定版內核)的補丁不是增量的,而是
   直接應用於基本的5.x內核。例如,如果您的基本內核是5.0,並且希望應用5.0.3
   補丁,則不應先應用5.0.1和5.0.2的補丁。類似地,如果您運行的是5.0.2內核,
   並且希望跳轉到5.0.3,那麼在應用5.0.3補丁之前,必須首先撤銷5.0.2補丁
6.x內核的補丁不同,6.x.y內核(也稱爲穩定版內核)的補丁不是增量的,而是
   直接應用於基本的6.x內核。例如,如果您的基本內核是6.0,並且希望應用6.0.3
   補丁,則不應先應用6.0.1和6.0.2的補丁。類似地,如果您運行的是6.0.2內核,
   並且希望跳轉到6.0.3,那麼在應用6.0.3補丁之前,必須首先撤銷6.0.2補丁
   (即patch -R)。更多關於這方面的內容,請閱讀
   :ref:`Documentation/process/applying-patches.rst <applying_patches>` 。

@@ -93,7 +93,7 @@ Linux內核5.x版本 <http://kernel.org/>

     linux/scripts/patch-kernel linux

   上面命令中的第一個參數是內核原始碼的位置。補丁是在當前目錄應用的,但是
   上面命令中的第一個參數是內核源代碼的位置。補丁是在當前目錄應用的,但是
   可以將另一個目錄指定爲第二個參數。

 - 確保沒有過時的 .o 文件和依賴項::
@@ -101,30 +101,30 @@ Linux內核5.x版本 <http://kernel.org/>
     cd linux
     make mrproper

   現在您應該已經正確安裝了原始碼。
   現在您應該已經正確安裝了源代碼。

要求
要求
---------

   編譯和運行5.x內核需要各種軟包的最新版本。請參考
   編譯和運行6.x內核需要各種軟包的最新版本。請參考
   :ref:`Documentation/process/changes.rst <changes>`
   來了解最低版本要求以及如何升級軟包。請注意,使用過舊版本的這些包可能會
   來了解最低版本要求以及如何升級軟包。請注意,使用過舊版本的這些包可能會
   導致很難追蹤的間接錯誤,因此不要以爲在生成或操作過程中出現明顯問題時可以
   只更新包。

爲內核建立目錄
---------------

   編譯內核時,默認情況下所有輸出文件都將與內核原始碼放在一起。使用
   編譯內核時,默認情況下所有輸出文件都將與內核源代碼放在一起。使用
   ``make O=output/dir`` 選項可以爲輸出文件(包括 .config)指定備用位置。
   例如::

     kernel source code: /usr/src/linux-5.x
     kernel source code: /usr/src/linux-6.x
     build directory:    /home/name/build/kernel

   要配置和構建內核,請使用::

     cd /usr/src/linux-5.x
     cd /usr/src/linux-6.x
     make O=/home/name/build/kernel menuconfig
     make O=/home/name/build/kernel
     sudo make O=/home/name/build/kernel modules_install install
@@ -164,17 +164,17 @@ Linux內核5.x版本 <http://kernel.org/>
     "make ${PLATFORM}_defconfig"
                        使用arch/$arch/configs/${PLATFORM}_defconfig中
                        的默認選項值創建一個./.config文件。
makehelp來獲取您體系架構中所有可用平的列表。
make help來獲取您體系架構中所有可用平的列表。

     "make allyesconfig"
                        通過儘可能將選項值設置爲「y」,創建一個
                        通過儘可能將選項值設置爲“y”,創建一個
                        ./.config文件。

     "make allmodconfig"
                        通過儘可能將選項值設置爲「m」,創建一個
                        通過儘可能將選項值設置爲“m”,創建一個
                        ./.config文件。

     "make allnoconfig" 通過儘可能將選項值設置爲「n」,創建一個
     "make allnoconfig" 通過儘可能將選項值設置爲“n”,創建一個
                        ./.config文件。

     "make randconfig"  通過隨機設置選項值來創建./.config文件。
@@ -182,7 +182,7 @@ Linux內核5.x版本 <http://kernel.org/>
     "make localmodconfig" 基於當前配置和加載的模塊(lsmod)創建配置。禁用
                           已加載的模塊不需要的任何模塊選項。

                           要爲另一計算機創建localmodconfig,請將該計算機
                           要爲另一計算機創建localmodconfig,請將該計算機
                           的lsmod存儲到一個文件中,並將其作爲lsmod參數傳入。

                           此外,通過在參數LMC_KEEP中指定模塊的路徑,可以將
@@ -200,9 +200,10 @@ Linux內核5.x版本 <http://kernel.org/>
     "make localyesconfig" 與localmodconfig類似,只是它會將所有模塊選項轉換
                           爲內置(=y)。你可以同時通過LMC_KEEP保留模塊。

     "make kvmconfig"   爲kvm客體內核支持啓用其他選項。
     "make kvm_guest.config"
                        爲kvm客戶機內核支持啓用其他選項。

     "make xenconfig"   爲xen dom0客內核支持啓用其他選項。
     "make xen.config"  爲xen dom0客戶機內核支持啓用其他選項。

     "make tinyconfig"  配置儘可能小的內核。

@@ -218,10 +219,10 @@ Linux內核5.x版本 <http://kernel.org/>
      這種情況下,數學仿真永遠不會被使用。內核會稍微大一點,但不管
      是否有數學協處理器,都可以在不同的機器上工作。

    - kernel hacking配置細節通常會導致更大或更慢的內核(或兩者
    - kernel hacking配置細節通常會導致更大或更慢的內核(或兩者
      兼而有之),甚至可以通過配置一些例程來主動嘗試破壞壞代碼以發現
      內核問題,從而降低內核的穩定性(kmalloc())。因此,您可能應該
      用於研究開發」、「實驗」或「調試特性相關問題。
      用於研究開發”、“實驗”或“調試特性相關問題。

編譯內核
---------
@@ -229,8 +230,6 @@ Linux內核5.x版本 <http://kernel.org/>
 - 確保您至少有gcc 5.1可用。
   有關更多信息,請參閱 :ref:`Documentation/process/changes.rst <changes>` 。

   請注意,您仍然可以使用此內核運行a.out用戶程序。

 - 執行 ``make`` 來創建壓縮內核映像。如果您安裝了lilo以適配內核makefile,
   那麼也可以進行 ``make install`` ,但是您可能需要先檢查特定的lilo設置。

@@ -242,8 +241,8 @@ Linux內核5.x版本 <http://kernel.org/>
 - 詳細的內核編譯/生成輸出:

   通常,內核構建系統在相當安靜的模式下運行(但不是完全安靜)。但是有時您或
   其他內核開發人員需要看到編譯、連結或其他命令的執行過程。爲此,可使用
   verbose(詳細)構建模式。
   其他內核開發人員需要看到編譯、鏈接或其他命令的執行過程。爲此,可使用
   verbose(詳細)構建模式。
   向 ``make`` 命令傳遞 ``V=1`` 來實現,例如::

     make V=1 all
@@ -255,15 +254,15 @@ Linux內核5.x版本 <http://kernel.org/>
   與工作內核版本號相同的新內核,請在進行 ``make modules_install`` 安裝
   之前備份modules目錄。

   或者,在編譯之前,使用內核配置選項LOCALVERSION向常規內核版本附加
   一個唯一的後綴。LOCALVERSION可以在General Setup菜單中設置。
   或者,在編譯之前,使用內核配置選項LOCALVERSION向常規內核版本附加
   一個唯一的後綴。LOCALVERSION可以在General Setup菜單中設置。

 - 爲了引導新內核,您需要將內核映像(例如編譯後的
   .../linux/arch/x86/boot/bzImage)複製到常規可引導內核的位置。

 - 不再支持在沒有LILO等啓動裝載程序幫助的情況下直接從軟盤引導內核。

   如果從硬引導Linux,很可能使用LILO,它使用/etc/lilo.conf文件中
   如果從硬引導Linux,很可能使用LILO,它使用/etc/lilo.conf文件中
   指定的內核映像文件。內核映像文件通常是/vmlinuz、/boot/vmlinuz、
   /bzImage或/boot/bzImage。使用新內核前,請保存舊映像的副本,並複製
   新映像覆蓋舊映像。然後您【必須重新運行LILO】來更新加載映射!否則,
@@ -284,68 +283,13 @@ Linux內核5.x版本 <http://kernel.org/>
若遇到問題
-----------

 - 如果您發現了一些可能由於內核缺陷所導致的問題,請檢查MAINTAINERS(維護者)
   文件看看是否有人與令您遇到麻煩的內核部分相關。如果無人在此列出,那麼第二
   個最好的方案就是把它們發給我(torvalds@linux-foundation.org),也可能發送
   到任何其他相關的郵件列表或新聞組。

 - 在所有的缺陷報告中,【請】告訴我們您在說什麼內核,如何復現問題,以及您的
   設置是什麼的(使用您的常識)。如果問題是新的,請告訴我;如果問題是舊的,
   請嘗試告訴我您什麼時候首次注意到它。

 - 如果缺陷導致如下消息::

     unable to handle kernel paging request at address C0000010
     Oops: 0002
     EIP:   0010:XXXXXXXX
     eax: xxxxxxxx   ebx: xxxxxxxx   ecx: xxxxxxxx   edx: xxxxxxxx
     esi: xxxxxxxx   edi: xxxxxxxx   ebp: xxxxxxxx
     ds: xxxx  es: xxxx  fs: xxxx  gs: xxxx
     Pid: xx, process nr: xx
     xx xx xx xx xx xx xx xx xx xx

   或者類似的內核調試信息顯示在屏幕上或在系統日誌里,請【如實】複製它。
   可能對你來說轉儲(dump)看起來不可理解,但它確實包含可能有助於調試問題的
   信息。轉儲上方的文本也很重要:它說明了內核轉儲代碼的原因(在上面的示例中,
   是由於內核指針錯誤)。更多關於如何理解轉儲的信息,請參見
   Documentation/admin-guide/bug-hunting.rst。

 - 如果使用 CONFIG_KALLSYMS 編譯內核,則可以按原樣發送轉儲,否則必須使用
   ``ksymoops`` 程序來理解轉儲(但通常首選使用CONFIG_KALLSYMS編譯)。
   此實用程序可從
   https://www.kernel.org/pub/linux/utils/kernel/ksymoops/ 下載。
   或者,您可以手動執行轉儲查找:

 - 在調試像上面這樣的轉儲時,如果您可以查找EIP值的含義,這將非常有幫助。
   十六進位值本身對我或其他任何人都沒有太大幫助:它會取決於特定的內核設置。
   您應該做的是從EIP行獲取十六進位值(忽略 ``0010:`` ),然後在內核名字列表
   中查找它,以查看哪個內核函數包含有問題的地址。

   要找到內核函數名,您需要找到與顯示症狀的內核相關聯的系統二進位文件。就是
   文件「linux/vmlinux」。要提取名字列表並將其與內核崩潰中的EIP進行匹配,
   請執行::

     nm vmlinux | sort | less

   這將爲您提供一個按升序排序的內核地址列表,從中很容易找到包含有問題的地址
   的函數。請注意,內核調試消息提供的地址不一定與函數地址完全匹配(事實上,
   這是不可能的),因此您不能只「grep」列表:不過列表將爲您提供每個內核函數
   的起點,因此通過查找起始地址低於你正在搜索的地址,但後一個函數的高於的
   函數,你會找到您想要的。實際上,在您的問題報告中加入一些「上下文」可能是
   一個好主意,給出相關的上下幾行。

   如果您由於某些原因無法完成上述操作(如您使用預編譯的內核映像或類似的映像),
   請儘可能多地告訴我您的相關設置信息,這會有所幫助。有關詳細信息請閱讀
   『Documentation/admin-guide/reporting-issues.rst』。

 - 或者,您可以在正在運行的內核上使用gdb(只讀的;即不能更改值或設置斷點)。
   爲此,請首先使用-g編譯內核;適當地編輯arch/x86/Makefile,然後執行 ``make
   clean`` 。您還需要啓用CONFIG_PROC_FS(通過 ``make config`` )。

   使用新內核重新啓動後,執行 ``gdb vmlinux /proc/kcore`` 。現在可以使用所有
   普通的gdb命令。查找系統崩潰點的命令是 ``l *0xXXXXXXXX`` (將xxx替換爲EIP
   值)。

   用gdb無法調試一個當前未運行的內核是由於gdb(錯誤地)忽略了編譯內核的起始
   偏移量。
如果您發現了一些可能由於內核缺陷所導致的問題,請參閱:
Documentation/translations/zh_CN/admin-guide/reporting-issues.rst 。

想要理解內核錯誤報告,請參閱:
Documentation/translations/zh_CN/admin-guide/bug-hunting.rst 。

更多用GDB調試內核的信息,請參閱:
Documentation/translations/zh_CN/dev-tools/gdb-kernel-debugging.rst
和 Documentation/dev-tools/kgdb.rst 。
+294 −0

File added.

Preview size limit exceeded, changes collapsed.

+5 −5
Original line number Diff line number Diff line
@@ -17,14 +17,14 @@
引言
=====

始終嘗試由來自kernel.org的原始碼構建的最新內核。如果您沒有信心這樣做,請將
始終嘗試由來自kernel.org的源代碼構建的最新內核。如果您沒有信心這樣做,請將
錯誤報告給您的發行版供應商,而不是內核開發人員。

找到缺陷(bug)並不總是那麼容易,不過仍然得去找。如果你找不到它,不要放棄。
儘可能多的向相關維護人員報告您發現的信息。請參閱MAINTAINERS文件以解您所
儘可能多的向相關維護人員報告您發現的信息。請參閱MAINTAINERS文件以解您所
關注的子系統的維護人員。

在提交錯誤報告之前,請閱讀Documentation/admin-guide/reporting-issues.rst
在提交錯誤報告之前,請閱讀Documentation/admin-guide/reporting-issues.rst

設備未出現(Devices not appearing)
====================================
@@ -38,7 +38,7 @@

操作步驟:

- 從git原始碼構建內核
- 從git源代碼構建內核
- 以此開始二分 [#f1]_::

	$ git bisect start
@@ -76,7 +76,7 @@
如需進一步參考,請閱讀:

- ``git-bisect`` 的手冊頁
- `Fighting regressions with git bisect(用git bisect解決歸)
- `Fighting regressions with git bisect(用git bisect解決歸)
  <https://www.kernel.org/pub/software/scm/git/docs/git-bisect-lk2009.html>`_
- `Fully automated bisecting with "git bisect run"(使用git bisect run
  來全自動二分) <https://lwn.net/Articles/317154>`_
+19 −19
Original line number Diff line number Diff line
@@ -48,8 +48,8 @@
	 [<c1549f43>] ? sysenter_past_esp+0x40/0x6a
	---[ end trace 6ebc60ef3981792f ]---

這樣的堆棧跟蹤提供了足夠的信息來識別內核原始碼中發生錯誤的那一行。根據問題的
嚴重性,它還可能包含 **Oops** 一詞,比如::
這樣的堆棧跟蹤提供了足夠的信息來識別內核源代碼中發生錯誤的那一行。根據問題的
嚴重性,它還可能包含 **Oops** 一詞,比如::

	BUG: unable to handle kernel NULL pointer dereference at   (null)
	IP: [<c06969d4>] iret_exc+0x7d0/0xa59
@@ -58,17 +58,17 @@
	...

儘管有 **Oops** 或其他類型的堆棧跟蹤,但通常需要找到出問題的行來識別和處理缺
陷。在本章中,我們將參考Oops來了解需要分析的各種堆棧跟蹤。
陷。在本章中,我們將參考Oops來了解需要分析的各種堆棧跟蹤。

如果內核是用 ``CONFIG_DEBUG_INFO`` 編譯的,那麼可以使用文件:
`scripts/decode_stacktrace.sh` 。

連結的模塊
鏈接的模塊
-----------

受到染或正在加載/卸載的模塊用(…)標記,染標誌在
`Documentation/admin-guide/tainted-kernels.rst` 文件中進行了描述,正在被加
」用「+」標註,正在被卸載」用「-」標註。
受到染或正在加載/卸載的模塊用(…)標記,染標誌在
`Documentation/admin-guide/tainted-kernels.rst` 文件中進行了描述,正在被加
”用“+”標註,正在被卸載”用“-”標註。


Oops消息在哪?
@@ -81,19 +81,19 @@ syslog文件,通常是 ``/var/log/messages`` (取決於 ``/etc/syslog.conf``

有時 ``klogd`` 會掛掉,這種情況下您可以運行 ``dmesg > file`` 從內核緩衝區
讀取數據並保存它。或者您可以 ``cat /proc/kmsg > file`` ,但是您必須適時
中斷以停止傳輸,因爲 ``kmsg`` 是一個永無止境的文件
中斷以停止傳輸,因爲 ``kmsg`` 是一個永無止境的文件

如果機器嚴重崩潰,無法輸入命令或磁不可用,那還有三個選項:
如果機器嚴重崩潰,無法輸入命令或磁不可用,那還有三個選項:

(1) 手動複製屏幕上的文本,並在機器重新啓動後輸入。很難受,但這是突然崩潰下
    唯一的選擇。或者你可以用數相機拍下屏幕——雖然不那麼好,但總比什麼都沒
    有好。如果消息滾動超出控制頂部,使用更高解析度(例如 ``vga=791`` )
    引導啓動將允許您閱讀更多文本。(警告:這需要 ``vesafb`` ,因此對早期
    唯一的選擇。或者你可以用數相機拍下屏幕——雖然不那麼好,但總比什麼都沒
    有好。如果消息滾動超出控制頂部,使用更高分辨率(例如 ``vga=791`` )
    引導啓動將允許您閱讀更多文本。(警告:這需要 ``vesafb`` ,因此對早期
    的Oppses沒有幫助)

(2) 從串口終端啓動(參見
    :ref:`Documentation/admin-guide/serial-console.rst <serial_console>` ),
    在另一機器上運行數據機然後用你喜歡的通信程序捕獲輸出。
    在另一機器上運行調制解調器然後用你喜歡的通信程序捕獲輸出。
    Minicom運行良好。

(3) 使用Kdump(參閱 Documentation/admin-guide/kdump/kdump.rst ),使用
@@ -103,7 +103,7 @@ syslog文件,通常是 ``/var/log/messages`` (取決於 ``/etc/syslog.conf``
找到缺陷位置
-------------

如果你能指出缺陷在內核原始碼中的位置,則報告缺陷的效果會非常好。這有兩種方法。
如果你能指出缺陷在內核源代碼中的位置,則報告缺陷的效果會非常好。這有兩種方法。
通常來說使用 ``gdb`` 會比較容易,不過內核需要用調試信息來預編譯。

gdb
@@ -187,7 +187,7 @@ GNU 調試器(GNU debugger, ``gdb`` )是從 ``vmlinux`` 文件中找出OOP
objdump
^^^^^^^^

要調試內核,請使用objdump並從崩潰輸出中查找十六進偏移,以找到有效的代碼/匯
要調試內核,請使用objdump並從崩潰輸出中查找十六進偏移,以找到有效的代碼/匯
編行。如果沒有調試符號,您將看到所示例程的彙編程序代碼,但是如果內核有調試
符號,C代碼也將可見(調試符號可以在內核配置菜單的hacking項中啓用)。例如::

@@ -197,7 +197,7 @@ objdump

   您需要處於內核樹的頂層以便此獲得您的C文件。

如果您無法訪問原始碼,仍然可以使用以下方法調試一些崩潰轉儲(如Dave Miller的
如果您無法訪問源代碼,仍然可以使用以下方法調試一些崩潰轉儲(如Dave Miller的
示例崩潰轉儲輸出所示)::

     EIP is at 	+0x14/0x4c0
@@ -234,9 +234,9 @@ objdump
報告缺陷
---------

一旦你通過定位缺陷找到了其發生的地方,你可以嘗試自己修復它或者向上報告它。
一旦你通過定位缺陷找到了其發生的地方,你可以嘗試自己修復它或者向上報告它。

爲了向上報告,您應該找出用於開發受影響代碼的郵件列表。這可以使用 ``get_maintainer.pl`` 。
爲了向上報告,您應該找出用於開發受影響代碼的郵件列表。這可以使用 ``get_maintainer.pl`` 。


例如,您在gspca的sonixj.c文件中發現一個缺陷,則可以通過以下方法找到它的維護者::
@@ -251,7 +251,7 @@ objdump

請注意它將指出:

- 最後接觸原始碼的開發人員(如果這是在git樹中完成的)。在上面的例子中是Tejun
- 最後接觸源代碼的開發人員(如果這是在git樹中完成的)。在上面的例子中是Tejun
  和Bhaktipriya(在這個特定的案例中,沒有人真正參與這個文件的開發);
- 驅動維護人員(Hans Verkuil);
- 子系統維護人員(Mauro Carvalho Chehab);
+2 −2
Original line number Diff line number Diff line
@@ -7,10 +7,10 @@
清除 WARN_ONCE
--------------

WARN_ONCE / WARN_ON_ONCE / printk_once 僅僅印一次消息.
WARN_ONCE / WARN_ON_ONCE / printk_once 僅僅印一次消息.

echo 1 > /sys/kernel/debug/clear_warn_once

可以清除這種狀態並且再次允許印一次告警信息,這對於運行測試集後重現問題
可以清除這種狀態並且再次允許印一次告警信息,這對於運行測試集後重現問題
很有用。
Loading