.. SPDX-License-Identifier: GPL-2.0 .. include:: ../disclaimer-zh_TW.rst :Original: Documentation/admin-guide/README.rst :è¯è€…: å³æƒ³æˆ Wu XiangCheng <bobwxc@email.cn> 胡皓文 Hu Haowen <src.res@email.cn> Linuxå…§æ ¸5.x版本 <http://kernel.org/> ========================================= 以下是Linux版本5的發行註記。仔細閱讀它們, å®ƒå€‘æœƒå‘Šè¨´ä½ é€™äº›éƒ½æ˜¯ä»€éº¼ï¼Œè§£é‡‹å¦‚ä½•å®‰è£å…§æ ¸ï¼Œä»¥åŠé‡åˆ°å•é¡Œæ™‚該如何åšã€‚ 什麼是Linux? --------------- Linux是Unix作æ¥ç³»çµ±çš„克隆版本,由Linus Torvalds在一個鬆散的網絡黑客 (Hacker,無貶義)團隊的幫助下從é 開始編寫。它旨在實ç¾å…¼å®¹POSIXå’Œ 單一UNIXè¦ç¯„。 它具有在ç¾ä»£æˆç†Ÿçš„Unixä¸æ‡‰ç•¶å…·æœ‰çš„所有功能,包括真æ£çš„多任務處ç†ã€è™›æ“¬å…§å˜ã€ 共享庫ã€æŒ‰éœ€åŠ 載ã€å…±äº«çš„寫時拷è²ï¼ˆCOW)å¯åŸ·è¡Œæ–‡ä»¶ã€æ°ç•¶çš„å…§å˜ç®¡ç†ä»¥åŠåŒ…括 IPv4å’ŒIPv6在內的複åˆç¶²çµ¡æ£§ã€‚ Linux在GNU通用公共許å¯è‰ï¼Œç‰ˆæœ¬2(GNU GPLv2)下分發,詳見隨附的COPYING文件。 它能在什麼樣的硬體上é‹è¡Œï¼Ÿ ----------------------------- 雖然Linux最åˆæ˜¯çˆ²32ä½çš„x86 PC機(386或更高版本)開發的,但今天它也能é‹è¡Œåœ¨ (至少)Compaq Alpha AXPã€Sun SPARC與UltraSPARCã€Motorola 68000ã€PowerPC〠PowerPC64ã€ARMã€Hitachi SuperHã€Cellã€IBM S/390ã€MIPSã€HP PA-RISCã€Intel IA-64ã€DEC VAXã€AMD x86-64 Xtensaå’ŒARC架構上。 Linux很容易移æ¤åˆ°å¤§å¤šæ•¸é€šç”¨çš„32ä½æˆ–64ä½é«”系架構,åªè¦å®ƒå€‘有一個分é å…§å˜ç®¡ç† 單元(PMMU)和一個移æ¤çš„GNU Cç·¨è¯å™¨ï¼ˆgccï¼›GNU Compiler Collection,GCC的一 部分)。Linux也被移æ¤åˆ°è¨±å¤šæ²’有PMMU的體系架構ä¸ï¼Œå„˜ç®¡åŠŸèƒ½é¡¯ç„¶å—到了一定的 é™åˆ¶ã€‚ Linux也被移æ¤åˆ°äº†å…¶è‡ªå·±ä¸Šã€‚ç¾åœ¨å¯ä»¥å°‡å…§æ ¸ä½œçˆ²ç”¨æˆ¶ç©ºé–“應用程å¼é‹è¡Œâ€”—這被 稱爲用戶模å¼Linux(UML)。 文檔 ----- 網際網路上和書ç±ä¸Šéƒ½æœ‰å¤§é‡çš„é›»å文檔,既有Linux專屬文檔,也有與一般UNIXå•é¡Œç›¸é—œ 的文檔。我建è°åœ¨ä»»ä½•Linux FTP站點上查找LDP(Linuxæ–‡æª”é …ç›®ï¼‰æ›¸ç±çš„文檔å目錄。 本自述文件並ä¸æ˜¯é—œæ–¼ç³»çµ±çš„文檔:有更好的å¯ç”¨è³‡æºã€‚ - 網際網路上和書ç±ä¸Šéƒ½æœ‰å¤§é‡çš„(電å)文檔,既有Linux專屬文檔,也有與普通 UNIXå•é¡Œç›¸é—œçš„文檔。我建è°åœ¨ä»»ä½•æœ‰LDP(Linuxæ–‡æª”é …ç›®ï¼‰æ›¸ç±çš„Linux FTP 站點上查找文檔å目錄。本自述文件並ä¸æ˜¯é—œæ–¼ç³»çµ±çš„文檔:有更好的å¯ç”¨è³‡æºã€‚ - 文檔/å目錄ä¸æœ‰å„種自述文件:例如,這些文件通常包å«ä¸€äº›ç‰¹å®šé©…動程åºçš„ å…§æ ¸å®‰è£èªªæ˜Žã€‚請閱讀 :ref:`Documentation/process/changes.rst <changes>` 文件,它包å«äº†å‡ç´šå…§æ ¸ å¯èƒ½æœƒå°Žè‡´çš„å•é¡Œçš„相關信æ¯ã€‚ 安è£å…§æ ¸åŽŸå§‹ç¢¼ --------------- - 如果您è¦å®‰è£å®Œæ•´çš„åŽŸå§‹ç¢¼ï¼Œè«‹æŠŠå…§æ ¸tar檔案包放在您有權é™çš„目錄ä¸ï¼ˆä¾‹å¦‚您 的主目錄)並將其解包:: xz -cd linux-5.x.tar.xz | tar xvf - 將「Xã€æ›¿æ›æˆæœ€æ–°å…§æ ¸çš„版本號。 ã€ä¸è¦ã€‘使用 /usr/src/linux 目錄ï¼é€™è£¡æœ‰ä¸€çµ„庫é æ–‡ä»¶ä½¿ç”¨çš„å…§æ ¸é 文件 (通常是ä¸å®Œæ•´çš„)。它們應該與庫匹é…,而ä¸æ˜¯è¢«å…§æ ¸çš„變化æžå¾—一團糟。 - 您還å¯ä»¥é€šéŽæ‰“補ä¸åœ¨5.x版本之間å‡ç´šã€‚補ä¸ä»¥xzæ ¼å¼åˆ†ç™¼ã€‚è¦é€šéŽæ‰“補ä¸é€²è¡Œ 安è£ï¼Œè«‹ç²å–所有較新的補ä¸æ–‡ä»¶ï¼Œé€²å…¥å…§æ ¸åŽŸå§‹ç¢¼ï¼ˆlinux-5.x)的目錄並 執行:: xz -cd ../patch-5.x.xz | patch -p1 è«‹ã€æŒ‰é †åºã€‘替æ›æ‰€æœ‰å¤§æ–¼ç•¶å‰åŽŸå§‹ç¢¼æ¨¹ç‰ˆæœ¬çš„「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è£œä¸ ï¼ˆå³patch -R)。更多關於這方é¢çš„內容,請閱讀 :ref:`Documentation/process/applying-patches.rst <applying_patches>` 。 或者,腳本 patch-kernel å¯ä»¥ç”¨ä¾†è‡ªå‹•åŒ–這個éŽç¨‹ã€‚它能確定當å‰å…§æ ¸ç‰ˆæœ¬ä¸¦ 應用找到的所有補ä¸:: linux/scripts/patch-kernel linux 上é¢å‘½ä»¤ä¸çš„第一個åƒæ•¸æ˜¯å…§æ ¸åŽŸå§‹ç¢¼çš„ä½ç½®ã€‚補ä¸æ˜¯åœ¨ç•¶å‰ç›®éŒ„應用的,但是 å¯ä»¥å°‡å¦ä¸€å€‹ç›®éŒ„指定爲第二個åƒæ•¸ã€‚ - 確ä¿æ²’有éŽæ™‚çš„ .o 文件和ä¾è³´é …:: cd linux make mrproper ç¾åœ¨æ‚¨æ‡‰è©²å·²ç¶“æ£ç¢ºå®‰è£äº†åŽŸå§‹ç¢¼ã€‚ 軟體è¦æ±‚ --------- ç·¨è¯å’Œé‹è¡Œ5.xå…§æ ¸éœ€è¦å„種軟體包的最新版本。請åƒè€ƒ :ref:`Documentation/process/changes.rst <changes>` 來了解最低版本è¦æ±‚以åŠå¦‚何å‡ç´šè»Ÿé«”包。請注æ„,使用éŽèˆŠç‰ˆæœ¬çš„這些包å¯èƒ½æœƒ å°Žè‡´å¾ˆé›£è¿½è¹¤çš„é–“æŽ¥éŒ¯èª¤ï¼Œå› æ¤ä¸è¦ä»¥çˆ²åœ¨ç”Ÿæˆæˆ–æ“作éŽç¨‹ä¸å‡ºç¾æ˜Žé¡¯å•é¡Œæ™‚å¯ä»¥ åªæ›´æ–°åŒ…。 çˆ²å…§æ ¸å»ºç«‹ç›®éŒ„ --------------- ç·¨è¯å…§æ ¸æ™‚,默èªæƒ…æ³ä¸‹æ‰€æœ‰è¼¸å‡ºæ–‡ä»¶éƒ½å°‡èˆ‡å…§æ ¸åŽŸå§‹ç¢¼æ”¾åœ¨ä¸€èµ·ã€‚使用 ``make O=output/dir`` é¸é …å¯ä»¥çˆ²è¼¸å‡ºæ–‡ä»¶ï¼ˆåŒ…括 .config)指定備用ä½ç½®ã€‚ 例如:: kernel source code: /usr/src/linux-5.x build directory: /home/name/build/kernel è¦é…ç½®å’Œæ§‹å»ºå…§æ ¸ï¼Œè«‹ä½¿ç”¨:: cd /usr/src/linux-5.x make O=/home/name/build/kernel menuconfig make O=/home/name/build/kernel sudo make O=/home/name/build/kernel modules_install install 請注æ„:如果使用了 ``O=output/dir`` é¸é …ï¼Œé‚£éº¼å®ƒå¿…é ˆç”¨æ–¼make的所有調用。 é…ç½®å…§æ ¸ --------- å³ä½¿åªå‡ç´šä¸€å€‹å°ç‰ˆæœ¬ï¼Œä¹Ÿä¸è¦è·³éŽæ¤æ¥é©Ÿã€‚æ¯å€‹ç‰ˆæœ¬ä¸éƒ½æœƒæ·»åŠ æ–°çš„é…ç½®é¸é …, 如果é…置文件沒有按é 定è¨ç½®ï¼Œå°±æœƒå‡ºç¾å¥‡æ€ªçš„å•é¡Œã€‚å¦‚æžœæ‚¨æƒ³ä»¥æœ€å°‘çš„å·¥ä½œé‡ å°‡ç¾æœ‰é…ç½®å‡ç´šåˆ°æ–°ç‰ˆæœ¬ï¼Œè«‹ä½¿ç”¨ ``makeoldconfig`` ,它åªæœƒè©¢å•æ‚¨æ–°é…ç½® é¸é …çš„ç”案。 - 其他é…置命令包括:: "make config" 純文本界é¢ã€‚ "make menuconfig" 基於文本的彩色èœå–®ã€é¸é …列表和å°è©±æ¡†ã€‚ "make nconfig" 增強的基於文本的彩色èœå–®ã€‚ "make xconfig" 基於Qtçš„é…置工具。 "make gconfig" 基於GTK+çš„é…置工具。 "make oldconfig" 基於ç¾æœ‰çš„ ./.config 文件é¸æ“‡æ‰€æœ‰é¸é …ï¼Œä¸¦è©¢å• æ–°é…ç½®é¸é …。 "make olddefconfig" 類似上一個,但ä¸è©¢å•ç›´æŽ¥å°‡æ–°é¸é …è¨ç½®çˆ²é»˜èªå€¼ã€‚ "make defconfig" æ ¹æ“šé«”ç³»æž¶æ§‹ï¼Œä½¿ç”¨arch/$arch/defconfig或 arch/$arch/configs/${PLATFORM}_defconfigä¸çš„ 默èªé¸é …值創建./.config文件。 "make ${PLATFORM}_defconfig" 使用arch/$arch/configs/${PLATFORM}_defconfigä¸ çš„é»˜èªé¸é …值創建一個./.config文件。 用「makehelpã€ä¾†ç²å–您體系架構ä¸æ‰€æœ‰å¯ç”¨å¹³å°çš„列表。 "make allyesconfig" 通éŽå„˜å¯èƒ½å°‡é¸é …值è¨ç½®çˆ²ã€Œyã€ï¼Œå‰µå»ºä¸€å€‹ ./.config文件。 "make allmodconfig" 通éŽå„˜å¯èƒ½å°‡é¸é …值è¨ç½®çˆ²ã€Œmã€ï¼Œå‰µå»ºä¸€å€‹ ./.config文件。 "make allnoconfig" 通éŽå„˜å¯èƒ½å°‡é¸é …值è¨ç½®çˆ²ã€Œnã€ï¼Œå‰µå»ºä¸€å€‹ ./.config文件。 "make randconfig" 通éŽéš¨æ©Ÿè¨ç½®é¸é …值來創建./.config文件。 "make localmodconfig" 基於當å‰é…ç½®å’ŒåŠ è¼‰çš„æ¨¡å¡Šï¼ˆlsmod)創建é…置。ç¦ç”¨ å·²åŠ è¼‰çš„æ¨¡å¡Šä¸éœ€è¦çš„任何模塊é¸é …。 è¦çˆ²å¦ä¸€å°è¨ˆç®—機創建localmodconfig,請將該計算機 çš„lsmodå˜å„²åˆ°ä¸€å€‹æ–‡ä»¶ä¸ï¼Œä¸¦å°‡å…¶ä½œçˆ²lsmodåƒæ•¸å‚³å…¥ã€‚ æ¤å¤–,通éŽåœ¨åƒæ•¸LMC_KEEPä¸æŒ‡å®šæ¨¡å¡Šçš„路徑,å¯ä»¥å°‡ 模塊ä¿ç•™åœ¨æŸäº›æ–‡ä»¶å¤¾æˆ–kconfig文件ä¸ã€‚ target$ lsmod > /tmp/mylsmod target$ scp /tmp/mylsmod host:/tmp host$ make LSMOD=/tmp/mylsmod \ LMC_KEEP="drivers/usb:drivers/gpu:fs" \ localmodconfig 上述方法在交å‰ç·¨è¯æ™‚也é©ç”¨ã€‚ "make localyesconfig" 與localmodconfig類似,åªæ˜¯å®ƒæœƒå°‡æ‰€æœ‰æ¨¡å¡Šé¸é …è½‰æ› çˆ²å…§ç½®ï¼ˆ=yï¼‰ã€‚ä½ å¯ä»¥åŒæ™‚通éŽLMC_KEEPä¿ç•™æ¨¡å¡Šã€‚ "make kvmconfig" 爲kvmå®¢é«”å…§æ ¸æ”¯æŒå•“用其他é¸é …。 "make xenconfig" 爲xen dom0å®¢é«”å…§æ ¸æ”¯æŒå•“用其他é¸é …。 "make tinyconfig" é…置儘å¯èƒ½å°çš„å…§æ ¸ã€‚ 更多關於使用Linuxå…§æ ¸é…置工具的信æ¯ï¼Œè¦‹æ–‡æª” Documentation/kbuild/kconfig.rst。 - ``make config`` 注æ„äº‹é …: - 包å«ä¸å¿…è¦çš„驅動程åºæœƒä½¿å…§æ ¸è®Šå¤§ï¼Œä¸¦ä¸”在æŸäº›æƒ…æ³ä¸‹æœƒå°Žè‡´å•é¡Œï¼š 探測ä¸å˜åœ¨çš„控制器å¡å¯èƒ½æœƒæ··æ·†å…¶ä»–控制器。 - 如果å˜åœ¨å”處ç†å™¨ï¼Œå‰‡ç·¨è¯äº†æ•¸å¸ä»¿çœŸçš„å…§æ ¸ä»å°‡ä½¿ç”¨å”處ç†å™¨ï¼šåœ¨ 這種情æ³ä¸‹ï¼Œæ•¸å¸ä»¿çœŸæ°¸é ä¸æœƒè¢«ä½¿ç”¨ã€‚å…§æ ¸æœƒç¨å¾®å¤§ä¸€é»žï¼Œä½†ä¸ç®¡ 是å¦æœ‰æ•¸å¸å”處ç†å™¨ï¼Œéƒ½å¯ä»¥åœ¨ä¸åŒçš„機器上工作。 - 「kernel hackingã€é…ç½®ç´°ç¯€é€šå¸¸æœƒå°Žè‡´æ›´å¤§æˆ–æ›´æ…¢çš„å…§æ ¸ï¼ˆæˆ–å…©è€… 兼而有之),甚至å¯ä»¥é€šéŽé…ç½®ä¸€äº›ä¾‹ç¨‹ä¾†ä¸»å‹•å˜—è©¦ç ´å£žå£žä»£ç¢¼ä»¥ç™¼ç¾ å…§æ ¸å•é¡Œï¼Œå¾žè€Œé™ä½Žå…§æ ¸çš„穩定性(kmalloc()ï¼‰ã€‚å› æ¤ï¼Œæ‚¨å¯èƒ½æ‡‰è©² ç”¨æ–¼ç ”ç©¶ã€Œé–‹ç™¼ã€ã€ã€Œå¯¦é©—ã€æˆ–「調試ã€ç‰¹æ€§ç›¸é—œå•é¡Œã€‚ ç·¨è¯å…§æ ¸ --------- - 確ä¿æ‚¨è‡³å°‘有gcc 5.1å¯ç”¨ã€‚ 有關更多信æ¯ï¼Œè«‹åƒé–± :ref:`Documentation/process/changes.rst <changes>` 。 請注æ„,您ä»ç„¶å¯ä»¥ä½¿ç”¨æ¤å…§æ ¸é‹è¡Œa.out用戶程åºã€‚ - 執行 ``make`` ä¾†å‰µå»ºå£“ç¸®å…§æ ¸æ˜ åƒã€‚如果您安è£äº†lilo以é©é…å…§æ ¸makefile, 那麼也å¯ä»¥é€²è¡Œ ``makeinstall`` ,但是您å¯èƒ½éœ€è¦å…ˆæª¢æŸ¥ç‰¹å®šçš„liloè¨ç½®ã€‚ 實際安è£å¿…é ˆä»¥root身份執行,但任何æ£å¸¸æ§‹å»ºéƒ½ä¸éœ€è¦ã€‚ ç„¡é ˆå¾’ç„¶ä½¿ç”¨root身份。 - å¦‚æžœæ‚¨å°‡å…§æ ¸çš„ä»»ä½•éƒ¨åˆ†é…ç½®çˆ²æ¨¡å¡Šï¼Œé‚£éº¼é‚„å¿…é ˆåŸ·è¡Œ ``make modules_install`` 。 - è©³ç´°çš„å…§æ ¸ç·¨è¯/生æˆè¼¸å‡ºï¼š é€šå¸¸ï¼Œå…§æ ¸æ§‹å»ºç³»çµ±åœ¨ç›¸ç•¶å®‰éœçš„模å¼ä¸‹é‹è¡Œï¼ˆä½†ä¸æ˜¯å®Œå…¨å®‰éœï¼‰ã€‚但是有時您或 å…¶ä»–å…§æ ¸é–‹ç™¼äººå“¡éœ€è¦çœ‹åˆ°ç·¨è¯ã€é€£çµæˆ–其他命令的執行éŽç¨‹ã€‚爲æ¤ï¼Œå¯ä½¿ç”¨ 「verbose(詳細)ã€æ§‹å»ºæ¨¡å¼ã€‚ å‘ ``make`` å‘½ä»¤å‚³éž ``V=1`` 來實ç¾ï¼Œä¾‹å¦‚:: make V=1 all 如需構建系統也給出內個目標é‡å»ºçš„願æ„,請使用 ``V=2`` 。默èªçˆ² ``V=0`` 。 - æº–å‚™ä¸€å€‹å‚™ä»½å…§æ ¸ä»¥é˜²å‡ºéŒ¯ã€‚å°æ–¼é–‹ç™¼ç‰ˆæœ¬å°¤å…¶å¦‚æ¤ï¼Œå› 爲æ¯å€‹æ–°ç‰ˆæœ¬éƒ½åŒ…å« å°šæœªèª¿è©¦çš„æ–°ä»£ç¢¼ã€‚ä¹Ÿè¦ç¢ºä¿ä¿ç•™èˆ‡è©²å…§æ ¸å°æ‡‰çš„模塊的備份。如果è¦å®‰è£ èˆ‡å·¥ä½œå…§æ ¸ç‰ˆæœ¬è™Ÿç›¸åŒçš„æ–°å…§æ ¸ï¼Œè«‹åœ¨é€²è¡Œ ``make modules_install`` å®‰è£ ä¹‹å‰å‚™ä»½modules目錄。 或者,在編è¯ä¹‹å‰ï¼Œä½¿ç”¨å…§æ ¸é…ç½®é¸é …「LOCALVERSIONã€å‘常è¦å…§æ ¸ç‰ˆæœ¬é™„åŠ ä¸€å€‹å”¯ä¸€çš„å¾Œç¶´ã€‚LOCALVERSIONå¯ä»¥åœ¨ã€ŒGeneral Setupã€èœå–®ä¸è¨ç½®ã€‚ - çˆ²äº†å¼•å°Žæ–°å…§æ ¸ï¼Œæ‚¨éœ€è¦å°‡å…§æ ¸æ˜ åƒï¼ˆä¾‹å¦‚ç·¨è¯å¾Œçš„ .../linux/arch/x86/boot/bzImage)複製到常è¦å¯å¼•å°Žå…§æ ¸çš„ä½ç½®ã€‚ - ä¸å†æ”¯æŒåœ¨æ²’有LILOç‰å•“å‹•è£è¼‰ç¨‹åºå¹«åŠ©çš„情æ³ä¸‹ç›´æŽ¥å¾žè»Ÿç›¤å¼•å°Žå…§æ ¸ã€‚ 如果從硬碟引導Linux,很å¯èƒ½ä½¿ç”¨LILO,它使用/etc/lilo.confæ–‡ä»¶ä¸ æŒ‡å®šçš„å…§æ ¸æ˜ åƒæ–‡ä»¶ã€‚å…§æ ¸æ˜ åƒæ–‡ä»¶é€šå¸¸æ˜¯/vmlinuzã€/boot/vmlinuz〠/bzImage或/boot/bzImageã€‚ä½¿ç”¨æ–°å…§æ ¸å‰ï¼Œè«‹ä¿å˜èˆŠæ˜ åƒçš„副本,並複製 æ–°æ˜ åƒè¦†è“‹èˆŠæ˜ åƒã€‚然後您ã€å¿…é ˆé‡æ–°é‹è¡ŒLILOã€‘ä¾†æ›´æ–°åŠ è¼‰æ˜ å°„ï¼å¦å‰‡ï¼Œ å°‡ç„¡æ³•å•“å‹•æ–°çš„å…§æ ¸æ˜ åƒã€‚ é‡æ–°å®‰è£LILO通常需è¦é‹è¡Œ/sbin/LILO。您å¯èƒ½å¸Œæœ›ç·¨è¼¯/etc/lilo.conf æ–‡ä»¶çˆ²èˆŠå…§æ ¸æ˜ åƒæŒ‡å®šä¸€å€‹æ¢ç›®ï¼ˆä¾‹å¦‚/vmlinux.old)防æ¢æ–°çš„ä¸èƒ½æ£å¸¸ 工作。有關更多信æ¯ï¼Œè«‹åƒé–±LILO文檔。 é‡æ–°å®‰è£LILO之後,您應該就已經準備好了。關閉系統,é‡æ–°å•“動,盡情 享å—å§ï¼ 如果需è¦æ›´æ”¹å…§æ ¸æ˜ åƒä¸çš„默èªæ ¹è¨å‚™ã€è¦–é »æ¨¡å¼ç‰ï¼Œè«‹åœ¨é©ç•¶çš„地方使用 å•“å‹•è£è¼‰ç¨‹åºçš„引導é¸é …。無需é‡æ–°ç·¨è¯å…§æ ¸å³å¯æ›´æ”¹é€™äº›åƒæ•¸ã€‚ - ä½¿ç”¨æ–°å…§æ ¸é‡æ–°å•“動並享å—它å§ã€‚ è‹¥é‡åˆ°å•é¡Œ ----------- - 如果您發ç¾äº†ä¸€äº›å¯èƒ½ç”±æ–¼å…§æ ¸ç¼ºé™·æ‰€å°Žè‡´çš„å•é¡Œï¼Œè«‹æª¢æŸ¥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(錯誤地)忽略了編è¯å…§æ ¸çš„起始 å移é‡ã€‚