樹(shù)莓派忘記密碼?10分鐘通過(guò)SD卡修改cmdline.txt重置root權(quán)限
1. 項(xiàng)目概述當(dāng)樹(shù)莓派成為“黑盒子”玩樹(shù)莓派的朋友估計(jì)都經(jīng)歷過(guò)那么一兩次心跳加速的時(shí)刻——對(duì)著熟悉的登錄界面手指懸在鍵盤(pán)上大腦卻一片空白“密碼是什么來(lái)著” 這感覺(jué)就像你把家門(mén)鑰匙鎖在了屋里而你是唯一有鑰匙的人。樹(shù)莓派默認(rèn)的pi用戶密碼raspberry雖然簡(jiǎn)單但出于安全或個(gè)性化我們往往會(huì)修改它。時(shí)間一長(zhǎng)或者項(xiàng)目一多忘記密碼就成了一個(gè)大概率事件。別慌這絕不是世界末日。與傳統(tǒng)的桌面操作系統(tǒng)不同樹(shù)莓派運(yùn)行的是 Linux 系統(tǒng)而 Linux 系統(tǒng)的一個(gè)核心設(shè)計(jì)哲學(xué)就是“一切皆文件”包括用戶賬戶信息。這意味著我們不需要借助任何第三方破解工具只需直接操作存儲(chǔ)系統(tǒng)的 SD 卡就能從“外部”重置密碼。這個(gè)方法的核心思路就是繞過(guò)正常的系統(tǒng)啟動(dòng)流程在系統(tǒng)加載用戶認(rèn)證模塊之前獲得一個(gè)具有 root 權(quán)限的 Shell然后直接修改密碼文件。我最近在整理一個(gè)閑置許久的樹(shù)莓派 4B 項(xiàng)目時(shí)就親歷了這一幕。那個(gè)派被我用來(lái)跑過(guò)一個(gè)家庭媒體服務(wù)器密碼設(shè)得又長(zhǎng)又復(fù)雜早就忘得一干二凈。通過(guò)下面要詳細(xì)拆解的方法我用了不到十分鐘就重新獲得了控制權(quán)。整個(gè)過(guò)程不涉及任何高深莫測(cè)的黑客技術(shù)只需要另一臺(tái)能讀 SD 卡的電腦Windows、macOS 或 Linux 均可和一點(diǎn)點(diǎn)對(duì) Linux 啟動(dòng)過(guò)程的理解。無(wú)論你是剛?cè)腴T(mén)的新手還是玩樹(shù)莓派多年的老鳥(niǎo)把這個(gè)“急救技能”放進(jìn)工具箱里絕對(duì)有備無(wú)患。2. 核心原理破解啟動(dòng)鏈獲取至高權(quán)限要理解為什么我們能“重置”密碼首先得搞清楚樹(shù)莓派或者說(shuō)大多數(shù) Linux 系統(tǒng)的啟動(dòng)和登錄過(guò)程。這個(gè)過(guò)程就像一個(gè)層層遞進(jìn)的安檢流程。2.1 正常的啟動(dòng)與登錄流程當(dāng)你給樹(shù)莓派通電處理器會(huì)首先從 SD 卡上一個(gè)非常小的、被稱為boot的分區(qū)讀取引導(dǎo)程序。這個(gè)分區(qū)通常是 FAT32 格式即使 Windows 電腦也能直接識(shí)別。引導(dǎo)程序接著會(huì)加載 Linux 內(nèi)核kernel.img或類似文件以及設(shè)備樹(shù)文件然后將控制權(quán)交給內(nèi)核。內(nèi)核啟動(dòng)后會(huì)掛載根文件系統(tǒng)通常是 SD 卡上第二個(gè)更大的ext4格式分區(qū)并啟動(dòng)第一個(gè)用戶空間進(jìn)程通常是systemd或init。最后系統(tǒng)會(huì)啟動(dòng)登錄管理器如命令行下的getty或圖形界面的lightdm等待你輸入用戶名和密碼。關(guān)鍵點(diǎn)來(lái)了用戶密碼的驗(yàn)證發(fā)生在系統(tǒng)完全啟動(dòng)之后由login程序通過(guò)查詢/etc/shadow文件來(lái)完成。這個(gè)文件存儲(chǔ)了所有用戶密碼的加密哈希值普通情況下無(wú)法直接反向破解。2.2 我們的“后門(mén)”思路init參數(shù)與單用戶模式我們的方法就是在系統(tǒng)啟動(dòng)的“安檢流程”中找到一個(gè)環(huán)節(jié)插入我們自己的“特別通行證”。這個(gè)環(huán)節(jié)就是內(nèi)核向初始進(jìn)程傳遞參數(shù)的階段。在boot分區(qū)里有一個(gè)至關(guān)重要的文件叫cmdline.txt。這個(gè)文件里的內(nèi)容會(huì)作為命令行參數(shù)直接傳遞給 Linux 內(nèi)核。其中有一個(gè)參數(shù)叫init它指定了內(nèi)核啟動(dòng)后運(yùn)行的第一個(gè)程序默認(rèn)為/sbin/init。我們的突破口就在這里我們可以修改這個(gè)參數(shù)讓內(nèi)核不是去啟動(dòng)完整的系統(tǒng)而是直接啟動(dòng)一個(gè)具有 root 權(quán)限的 Shell比如/bin/sh。更常見(jiàn)和標(biāo)準(zhǔn)的做法是在內(nèi)核參數(shù)中添加init/bin/sh或single等參數(shù)來(lái)告訴系統(tǒng)“別走正常流程了直接給我個(gè)最高權(quán)限的命令行?!?一旦我們進(jìn)入了這個(gè)“單用戶模式”或“應(yīng)急 Shell”整個(gè)文件系統(tǒng)就像不設(shè)防一樣我們可以直接讀寫(xiě)/etc/shadow文件用passwd命令修改任意用戶的密碼。注意這種方法之所以有效是因?yàn)樵趩斡脩裟J较孪到y(tǒng)跳過(guò)了所有需要密碼認(rèn)證的服務(wù)直接以 root 身份運(yùn)行 Shell。這本身就是 Linux 系統(tǒng)管理員進(jìn)行系統(tǒng)修復(fù)的標(biāo)準(zhǔn)方法之一。因此物理接觸設(shè)備SD卡是執(zhí)行此操作的前提這也符合安全模型——能物理接觸設(shè)備的人本身就擁有設(shè)備的最高控制權(quán)。3. 詳細(xì)操作步驟從拔卡到改密理論清楚了我們一步步來(lái)實(shí)操。請(qǐng)準(zhǔn)備好你的樹(shù)莓派、SD 卡以及另一臺(tái)可以讀取這張 SD 卡的電腦。3.1 第一步安全關(guān)機(jī)與取出 SD 卡首先如果樹(shù)莓派還在運(yùn)行請(qǐng)務(wù)必通過(guò)命令sudo shutdown -h now或在桌面界面正常關(guān)機(jī)。如果已經(jīng)無(wú)法登錄那就直接拔掉電源。切忌在系統(tǒng)讀寫(xiě)時(shí)直接斷電雖然概率不高但有可能損壞 SD 卡上的文件系統(tǒng)。關(guān)機(jī)后小心地將 SD 卡從樹(shù)莓派的卡槽中取出。樹(shù)莓派 4B/5 的卡槽是彈簧式的按一下卡會(huì)彈出來(lái)更早的型號(hào)可能需要輕輕拔出。3.2 第二步在電腦上掛載 SD 卡分區(qū)將 SD 卡通過(guò)讀卡器插入你的電腦Windows、macOS 或 Linux。在 Windows 上插入后你通常只能看到第一個(gè)分區(qū)也就是boot分區(qū)它會(huì)被識(shí)別為一個(gè)可移動(dòng)磁盤(pán)比如F:盤(pán)。這是因?yàn)?Windows 默認(rèn)不支持ext4文件系統(tǒng)。不過(guò)沒(méi)關(guān)系我們只需要操作boot分區(qū)。直接打開(kāi)“此電腦”就能訪問(wèn)。在 macOS 上macOS 同樣能自動(dòng)識(shí)別boot分區(qū)。ext4分區(qū)默認(rèn)不掛載但我們可以通過(guò)安裝mounty等免費(fèi)工具來(lái)掛載它以便訪問(wèn)系統(tǒng)文件。不過(guò)修改密碼只需要?jiǎng)觔oot分區(qū)和通過(guò)終端訪問(wèn)ext4分區(qū)我們可以用更直接的方法。在 Linux 上插入 SD 卡后兩個(gè)分區(qū)通常會(huì)自動(dòng)掛載。你可以用lsblk或df -h命令查看掛載點(diǎn)例如/media/yourname/boot和/media/yourname/rootfs。3.3 第三步修改cmdline.txt文件關(guān)鍵操作現(xiàn)在找到并打開(kāi)boot分區(qū)根目錄下的cmdline.txt文件。強(qiáng)烈建議先備份這個(gè)文件比如復(fù)制一份并重命名為cmdline.txt.backup。用文本編輯器如 Windows 的記事本、macOS/Linux 的nano或vim打開(kāi)它。你會(huì)看到一行很長(zhǎng)的、用空格分隔的參數(shù)。內(nèi)容通常類似這樣consoleserial0,115200 consoletty1 rootPARTUUIDxxxxxx-02 rootfstypeext4 fsck.repairyes rootwait quiet init/usr/lib/raspberrypi-sys-mods/firstboot我們的任務(wù)是在這行參數(shù)的末尾在quiet之后或任何你覺(jué)得合適的位置但確保在行內(nèi)添加一個(gè)啟動(dòng)參數(shù)。這里我推薦兩種最穩(wěn)妥的添加方式方法一添加init/bin/sh直接在原有參數(shù)末尾加上init/bin/sh。例如修改后變成consoleserial0,115200 consoletty1 rootPARTUUIDxxxxxx-02 rootfstypeext4 fsck.repairyes rootwait quiet init/usr/lib/raspberrypi-sys-mods/firstboot init/bin/sh注意這里我保留了原有的init參數(shù)并在后面追加了新的init/bin/sh。在大多數(shù) Linux 內(nèi)核中最后一個(gè)init參數(shù)會(huì)生效。這是一種保險(xiǎn)的做法。方法二更標(biāo)準(zhǔn)的單用戶模式在參數(shù)中添加single或s或1。例如consoleserial0,115200 consoletty1 rootPARTUUIDxxxxxx-02 rootfstypeext4 fsck.repairyes rootwait quiet init/usr/lib/raspberrypi-sys-mods/firstboot singlesingle參數(shù)是告訴初始化系統(tǒng)進(jìn)入單用戶運(yùn)行級(jí)別runlevel 1同樣會(huì)獲得一個(gè) root shell。實(shí)操心得我個(gè)人更傾向于使用init/bin/sh。因?yàn)閟ingle參數(shù)依賴于系統(tǒng)的初始化系統(tǒng)如systemd能正確解析它。而init/bin/sh是內(nèi)核級(jí)別的指令更加底層和通用幾乎 100% 有效。另外確保添加參數(shù)時(shí)前后都用空格與其他參數(shù)隔開(kāi)。保存并關(guān)閉cmdline.txt文件。3.4 第四步重新啟動(dòng)樹(shù)莓派并修改密碼彈出 SD 卡在電腦上安全彈出 SD 卡然后將其插回樹(shù)莓派。上電啟動(dòng)給樹(shù)莓派接通電源和顯示器如果需要并連接鍵盤(pán)。進(jìn)入應(yīng)急 Shell樹(shù)莓派會(huì)開(kāi)始啟動(dòng)。如果修改正確你不會(huì)看到正常的登錄提示符而是直接看到一個(gè)以#結(jié)尾的命令行提示符例如#或者root(none):/#。這說(shuō)明你已經(jīng)以 root 身份進(jìn)入了 Shell。重新掛載根文件系統(tǒng)為可讀寫(xiě)默認(rèn)情況下根文件系統(tǒng) (/) 可能是以只讀 (ro) 方式掛載的這是為了防止文件系統(tǒng)損壞。我們需要將其重新掛載為可讀寫(xiě) (rw) 才能修改密碼。mount -o remount,rw /執(zhí)行這條命令后不會(huì)有成功提示是正常的Linux 的哲學(xué)是“沒(méi)有消息就是好消息”。使用passwd命令修改密碼現(xiàn)在你可以修改任意用戶的密碼了。最常用的是修改pi用戶的密碼。passwd pi系統(tǒng)會(huì)提示你輸入新的密碼并確認(rèn)一次。輸入時(shí)屏幕上不會(huì)有任何顯示星號(hào)也沒(méi)有這是正常的盲輸即可。請(qǐng)務(wù)必記住新密碼Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully看到successfully就表示成功了??蛇x修改 root 用戶密碼如果你想啟用并設(shè)置 root 用戶的密碼也可以passwd root同步并重啟在重啟前最好執(zhí)行一次sync命令確保所有緩存數(shù)據(jù)都寫(xiě)入 SD 卡。然后重啟系統(tǒng)。sync reboot或者直接拔電再上電。3.5 第五步恢復(fù)啟動(dòng)配置并驗(yàn)證樹(shù)莓派重啟后應(yīng)該會(huì)正常進(jìn)入系統(tǒng)。使用你剛設(shè)置的pi用戶密碼登錄成功重要收尾工作登錄后務(wù)必記得將cmdline.txt文件改回去。否則每次啟動(dòng)都會(huì)進(jìn)入單用戶模式這存在嚴(yán)重的安全風(fēng)險(xiǎn)任何人物理接觸設(shè)備都能獲得 root 權(quán)限。再次編輯/boot/cmdline.txt文件這次是在樹(shù)莓派系統(tǒng)內(nèi)sudo nano /boot/cmdline.txt刪除你之前添加的init/bin/sh或single參數(shù)恢復(fù)成原始狀態(tài)。保存CtrlO退出CtrlX。執(zhí)行sync并重啟一次確保修改生效。至此整個(gè)密碼重置流程圓滿完成。4. 不同場(chǎng)景與變通方案上面的方法是通用且標(biāo)準(zhǔn)的。但在實(shí)際環(huán)境中你可能會(huì)遇到一些特殊情況。下面是我遇到過(guò)或讀者可能遇到的幾種場(chǎng)景及應(yīng)對(duì)策略。4.1 場(chǎng)景一cmdline.txt修改后無(wú)法進(jìn)入 Shell現(xiàn)象添加參數(shù)后啟動(dòng)系統(tǒng)依然進(jìn)入了正常的登錄界面或者卡住、報(bào)錯(cuò)。排查檢查語(yǔ)法確保參數(shù)添加的位置正確前后有空格。例如quiet init/bin/sh是正確的quietinit/bin/sh缺少空格會(huì)導(dǎo)致內(nèi)核無(wú)法正確解析。檢查文件格式確保cmdline.txt是純文本格式并且是 Unix (LF) 換行符。在 Windows 上用記事本編輯有時(shí)會(huì)意外保存為 UTF-8 BOM 格式或 Windows (CRLF) 換行符這可能導(dǎo)致內(nèi)核讀取錯(cuò)誤??梢杂肗otepad或VS Code編輯并確保換行符格式為 LF。嘗試其他參數(shù)如果init/bin/sh不行可以試試init/bin/bash或rw init/bin/shrw參數(shù)指定根文件系統(tǒng)以讀寫(xiě)方式掛載。檢查 SD 卡兼容性極少數(shù)情況下SD 卡接觸不良或損壞會(huì)導(dǎo)致文件寫(xiě)入不完整。可以重新插拔 SD 卡在電腦上再次確認(rèn)文件已保存。4.2 場(chǎng)景二需要修改非pi用戶或其他系統(tǒng)的密碼修改其他用戶在應(yīng)急 Shell 里passwd命令后跟用戶名即可修改對(duì)應(yīng)用戶的密碼如passwd your_username。用于其他 Linux 發(fā)行版此方法不僅適用于樹(shù)莓派官方系統(tǒng) (Raspberry Pi OS)也適用于在樹(shù)莓派上運(yùn)行的 Ubuntu、Debian、Arch Linux ARM 等絕大多數(shù) Linux 發(fā)行版。原理完全相通。用于啟用 root 登錄默認(rèn)情況下樹(shù)莓派的 root 賬戶密碼未設(shè)置無(wú)法直接登錄。在應(yīng)急 Shell 中設(shè)置root密碼后你還可以通過(guò)修改/etc/ssh/sshd_config文件將PermitRootLogin設(shè)置為yes來(lái)允許 root 通過(guò) SSH 登錄出于安全考慮一般不推薦。4.3 場(chǎng)景三沒(méi)有顯示器只能通過(guò) SSH 訪問(wèn)這是一個(gè)常見(jiàn)困境樹(shù)莓派作為服務(wù)器無(wú)頭運(yùn)行忘記密碼后 SSH 無(wú)法連接。解決方案核心步驟不變依然是修改 SD 卡上的cmdline.txt。區(qū)別在于進(jìn)入應(yīng)急 Shell 后你需要手動(dòng)啟動(dòng)網(wǎng)絡(luò)服務(wù)才能通過(guò)網(wǎng)絡(luò)連接。按照前述步驟修改cmdline.txt添加init/bin/sh。啟動(dòng)樹(shù)莓派進(jìn)入應(yīng)急 Shell。重新掛載根文件系統(tǒng)mount -o remount,rw /。啟動(dòng)網(wǎng)絡(luò)這取決于你的系統(tǒng)使用哪種網(wǎng)絡(luò)管理器。常見(jiàn)的有dhcpcd和systemd-networkd。對(duì)于使用dhcpcd的系統(tǒng)如舊版 Raspberry Pi OSdhcpcd eth0 # 如果有線網(wǎng)卡是 eth0 # 或者 dhcpcd wlan0 # 如果是無(wú)線且知道 WiFi 配置仍在對(duì)于使用systemd-networkd的系統(tǒng)如新版 Raspberry Pi OS 或 Ubuntusystemctl start systemd-networkd查看獲取到的 IP 地址ip addr show?,F(xiàn)在你可以從同一網(wǎng)絡(luò)下的另一臺(tái)電腦使用 SSH 以 root 身份無(wú)需密碼連接到這個(gè) IP 地址。然后執(zhí)行passwd pi修改密碼。修改完成后sync; reboot并記得恢復(fù)cmdline.txt。重要警告在無(wú)頭模式下使用此方法尤其是在公共網(wǎng)絡(luò)或你不完全信任的網(wǎng)絡(luò)中存在安全風(fēng)險(xiǎn)。因?yàn)閺哪銌?dòng)樹(shù)莓派到修改密碼、關(guān)閉應(yīng)急模式的這段時(shí)間內(nèi)任何知道你樹(shù)莓派 IP 的人都可以無(wú)需密碼通過(guò) SSH 獲得 root 權(quán)限。因此操作過(guò)程應(yīng)盡可能快并在操作完成后立即恢復(fù)配置并重啟。5. 深度解析/etc/shadow文件與密碼安全我們通過(guò)passwd命令修改了密碼這個(gè)命令到底做了什么它修改了/etc/shadow文件。理解這個(gè)文件能讓你對(duì) Linux 用戶認(rèn)證有更深的認(rèn)識(shí)。5.1shadow文件格式解析在應(yīng)急 Shell 里你可以用cat /etc/shadow查看這個(gè)文件。其中一行對(duì)應(yīng)pi用戶的信息可能如下pi:$6$W4Z1bS7fN6$...很長(zhǎng)一串哈希值...:19121:0:99999:7:::這一行由冒號(hào):分隔成多個(gè)字段用戶名pi。加密后的密碼以$6$開(kāi)頭的那一串。$6$表示使用的是 SHA-512 加密算法。如果這里是!!或*則表示該賬戶密碼被鎖定不能用于登錄。最后一次修改密碼的日期19121這是從 1970年1月1日Unix紀(jì)元開(kāi)始計(jì)算的天數(shù)。密碼最小年齡0表示密碼修改后可以立即再次修改。密碼最大年齡99999表示密碼幾乎永不過(guò)期。密碼過(guò)期前警告天數(shù)7表示密碼過(guò)期前7天開(kāi)始警告用戶。密碼過(guò)期后寬限天數(shù)空表示過(guò)期后立即失效。賬戶過(guò)期日期空表示永不過(guò)期。保留字段空。passwd命令的本質(zhì)就是根據(jù)你輸入的新密碼使用指定的加密算法如 SHA-512生成一個(gè)新的哈希值然后替換掉/etc/shadow文件中相應(yīng)用戶的第二個(gè)字段。我們也可以手動(dòng)編輯這個(gè)文件但極其不推薦因?yàn)槟阈枰謩?dòng)生成符合格式的密碼哈希過(guò)程繁瑣且易錯(cuò)。5.2 為什么不能直接刪除密碼哈希有人可能會(huì)想既然都拿到 root 權(quán)限了我直接把/etc/shadow里pi用戶那行的密碼字段清空或改成已知密碼的哈希不就行了理論上可以但實(shí)操中強(qiáng)烈反對(duì)。復(fù)雜性你需要知道系統(tǒng)使用的加密算法和鹽值Salt并用openssl或mkpasswd命令生成正確的哈希字符串。這比直接用passwd命令麻煩得多。風(fēng)險(xiǎn)性手動(dòng)編輯系統(tǒng)關(guān)鍵文件一個(gè)字符的錯(cuò)誤就可能導(dǎo)致系統(tǒng)無(wú)法登錄甚至破壞文件格式引發(fā)更嚴(yán)重的問(wèn)題。無(wú)必要性passwd命令就是為安全、正確地完成這個(gè)任務(wù)而設(shè)計(jì)的工具何必舍近求遠(yuǎn)因此永遠(yuǎn)優(yōu)先使用passwd命令來(lái)修改密碼這是最安全、最標(biāo)準(zhǔn)的方式。6. 高級(jí)技巧與防范措施掌握了基本方法我們?cè)賮?lái)看看一些能提升效率或安全性的技巧。6.1 使用chroot進(jìn)行更安全的操作在應(yīng)急 Shell 中直接操作環(huán)境非常簡(jiǎn)陋缺少很多命令和庫(kù)。如果你需要進(jìn)行更復(fù)雜的系統(tǒng)修復(fù)不僅僅是改密碼可以使用chroot。在掛載根文件系統(tǒng)后執(zhí)行mount --bind /dev /mnt/dev mount --bind /proc /mnt/proc mount --bind /sys /mnt/sys chroot /mnt /bin/bash這樣你就“切換”到了完整的系統(tǒng)環(huán)境中可以運(yùn)行幾乎所有的系統(tǒng)命令就像在正常啟動(dòng)的系統(tǒng)里一樣。修改完密碼后退出 chroot (exit)卸載綁定的目錄再重啟。6.2 如何防止他人用此法破解你的樹(shù)莓派這個(gè)方法的核心前提是物理接觸 SD 卡。因此最根本的防范措施就是物理安全將你的樹(shù)莓派放在一個(gè)可靠的地方。此外還有一些增強(qiáng)措施設(shè)置 BIOS/固件密碼樹(shù)莓派的引導(dǎo)固件存儲(chǔ)在板載 EEPROM 中目前沒(méi)有設(shè)置密碼的功能。它的設(shè)計(jì)是開(kāi)放的。全盤(pán)加密如果你對(duì)數(shù)據(jù)安全要求極高可以考慮使用 LUKS 等工具對(duì)根文件系統(tǒng)進(jìn)行全盤(pán)加密。這樣即使 SD 卡被拔出沒(méi)有密碼也無(wú)法解密數(shù)據(jù)。但代價(jià)是啟動(dòng)時(shí)需要輸入解密密碼無(wú)法實(shí)現(xiàn)完全無(wú)頭啟動(dòng)且對(duì)性能有輕微影響。使用只讀文件系統(tǒng)對(duì)于某些特定應(yīng)用如信息亭、數(shù)字標(biāo)牌可以將根文件系統(tǒng)設(shè)置為只讀這樣即使有人修改cmdline.txt重啟后也會(huì)被還原。但這不適合需要頻繁寫(xiě)入數(shù)據(jù)的通用計(jì)算場(chǎng)景。定期備份與密碼管理最實(shí)用的方法還是養(yǎng)成良好的習(xí)慣1) 使用密碼管理器妥善保管重要密碼2) 定期對(duì)樹(shù)莓派的 SD 卡進(jìn)行完整鏡像備份可使用dd命令或Raspberry Pi Imager的“自定義”功能。這樣即使忘記密碼或系統(tǒng)崩潰也能快速恢復(fù)。6.3 忘記密碼與 SSH 密鑰登錄如果你為樹(shù)莓派配置了 SSH 密鑰登錄并且禁用了密碼登錄在/etc/ssh/sshd_config中設(shè)置PasswordAuthentication no那么忘記用戶密碼不會(huì)影響你通過(guò) SSH 密鑰連接。但是當(dāng)你需要執(zhí)行sudo命令時(shí)可能仍然需要輸入用戶密碼除非配置了NOPASSWD。此時(shí)你仍然需要用到本文的方法來(lái)重置密碼。一個(gè)更好的實(shí)踐是在啟用 SSH 密鑰登錄并禁用密碼登錄后為sudo配置免密碼。這樣你既保證了遠(yuǎn)程訪問(wèn)的安全防暴力破解又避免了忘記密碼的尷尬。具體做法是在/etc/sudoers.d/目錄下為你的用戶創(chuàng)建一個(gè)文件例如010_pi-nopasswd內(nèi)容為pi ALL(ALL) NOPASSWD: ALL。注意這降低了本地安全門(mén)檻請(qǐng)確保你的用戶賬戶和私鑰安全。7. 常見(jiàn)問(wèn)題排查與解決實(shí)錄即使按照步驟操作也可能遇到一些意外。下面是我和社區(qū)里常見(jiàn)的一些問(wèn)題及解決方法。7.1 問(wèn)題修改cmdline.txt后啟動(dòng)卡在彩虹屏或黑屏可能原因 1內(nèi)核參數(shù)沖突或錯(cuò)誤。某些第三方系統(tǒng)或自己編譯的內(nèi)核可能對(duì)init參數(shù)支持不完整。解決嘗試更簡(jiǎn)單的參數(shù)如只添加single。或者更徹底的方法是在boot分區(qū)找到config.txt文件暫時(shí)注釋掉在行首加#所有非必要的疊加層overlay和設(shè)備樹(shù)dtb配置以最簡(jiǎn)模式啟動(dòng)。可能原因 2文件系統(tǒng)損壞。非正常關(guān)機(jī)可能導(dǎo)致ext4分區(qū)損壞。解決在電腦上使用 Linux 環(huán)境或工具如fsck對(duì) SD 卡的第二個(gè)分區(qū)ext4分區(qū)進(jìn)行文件系統(tǒng)檢查與修復(fù)。對(duì)于 Windows 用戶可以使用DiskGenius等專業(yè)工具嘗試修復(fù)或者最直接的辦法——從備份恢復(fù)鏡像。7.2 問(wèn)題進(jìn)入應(yīng)急 Shell 后passwd命令報(bào)錯(cuò)或無(wú)效可能原因 1根文件系統(tǒng)只讀。這是最常見(jiàn)的原因。解決務(wù)必先執(zhí)行mount -o remount,rw /。執(zhí)行后可以用mount | grep ‘on / ’檢查確認(rèn)顯示rw字樣??赡茉?2/etc/shadow文件權(quán)限或?qū)傩援惓?。解決檢查文件權(quán)限ls -l /etc/shadow應(yīng)為-rw-r—– 1 root shadow。如果不是可以用chmod 640 /etc/shadow和chown root:shadow /etc/shadow修復(fù)。極少數(shù)情況下文件可能被設(shè)置了不可修改屬性immutable用lsattr /etc/shadow查看如果有i屬性用chattr -i /etc/shadow移除。7.3 問(wèn)題修改密碼成功后重啟依然無(wú)法登錄可能原因 1cmdline.txt未恢復(fù)。這是最可能的原因系統(tǒng)每次啟動(dòng)都進(jìn)入單用戶模式你修改的密碼在“正常模式”下并未生效。解決務(wù)必在修改密碼并重啟進(jìn)入正常系統(tǒng)后第一時(shí)間恢復(fù)cmdline.txt文件??赡茉?2修改了錯(cuò)誤的用戶或拼寫(xiě)錯(cuò)誤。解決在應(yīng)急 Shell 中用cat /etc/passwd | grep pi確認(rèn)用戶名確為pi。有時(shí)用戶可能被重命名或刪除??赡茉?3鍵盤(pán)布局或輸入法問(wèn)題。在輸入新密碼時(shí)可能無(wú)意中切換了鍵盤(pán)布局。解決嘗試使用非常簡(jiǎn)單的密碼如123測(cè)試確保不是輸入問(wèn)題。修改成功后再進(jìn)入系統(tǒng)改為復(fù)雜密碼。7.4 問(wèn)題SD 卡在 Windows 上不顯示boot分區(qū)可能原因分區(qū)表?yè)p壞或 SD 卡格式特殊。解決嘗試使用不同的讀卡器或電腦 USB 口。在 Windows 磁盤(pán)管理diskmgmt.msc中查看 SD 卡是否被識(shí)別為“未分配空間”或“RAW”格式。如果是可能需要使用數(shù)據(jù)恢復(fù)軟件或DiskGenius嘗試恢復(fù)分區(qū)。使用更強(qiáng)大的工具如Raspberry Pi Imager。它即使在 Windows 下也能識(shí)別并掛載樹(shù)莓派鏡像的各個(gè)分區(qū)。你可以用它來(lái)“自定義”打開(kāi) SD 卡通常能訪問(wèn)到boot分區(qū)。終極方案在另一臺(tái) Linux 電腦上操作。Linux 對(duì)多種文件系統(tǒng)的支持最好。忘記樹(shù)莓派密碼這件事說(shuō)大不大說(shuō)小不小。它不會(huì)讓你永久失去你的設(shè)備或數(shù)據(jù)但確實(shí)會(huì)帶來(lái)一陣手忙腳亂。通過(guò)這次詳細(xì)的梳理你會(huì)發(fā)現(xiàn)其背后的原理清晰而直接操作步驟也像一套標(biāo)準(zhǔn)的急救流程。關(guān)鍵點(diǎn)在于理解 Linux 啟動(dòng)的靈活性并善用cmdline.txt這個(gè)“開(kāi)關(guān)”。下次再遇到這種情況你大可以淡定地找出讀卡器因?yàn)槟阒朗昼娭畠?nèi)你就能重新成為你樹(shù)莓派的“主人”。養(yǎng)成定期備份和妥善管理密碼的習(xí)慣更能讓你防患于未然。

相關(guān)新聞

AI生成藝術(shù)二維碼如何引爆流量?揭秘2024年品牌營(yíng)銷新增長(zhǎng)引擎的7個(gè)底層邏輯

AI生成藝術(shù)二維碼如何引爆流量?揭秘2024年品牌營(yíng)銷新增長(zhǎng)引擎的7個(gè)底層邏輯

更多請(qǐng)點(diǎn)擊: https://intelliparadigm.com 第一章:AI生成藝術(shù)二維碼的本質(zhì)與演進(jìn)脈絡(luò) AI生成藝術(shù)二維碼并非傳統(tǒng)二維碼的簡(jiǎn)單視覺(jué)美化,而是將糾錯(cuò)編碼、圖像語(yǔ)義理解與生成式模型深度耦合的技術(shù)融合體。其核心本質(zhì)在于:在嚴(yán)格維持…

2026/8/1 8:29:56 閱讀更多
5G NR協(xié)議棧深度解析:從分層原理到網(wǎng)絡(luò)問(wèn)題定位實(shí)戰(zhàn)

5G NR協(xié)議棧深度解析:從分層原理到網(wǎng)絡(luò)問(wèn)題定位實(shí)戰(zhàn)

1. 從“黑盒”到“白盒”:為什么我們需要拆解5G NR協(xié)議棧如果你問(wèn)一個(gè)剛?cè)胄械臒o(wú)線通信工程師,5G網(wǎng)絡(luò)最核心、最神秘的部分是什么,十有八九會(huì)回答是“協(xié)議?!?。這個(gè)詞聽(tīng)起來(lái)就充滿了技術(shù)壁壘,仿佛一個(gè)封裝嚴(yán)密的黑盒子&#xff0…

2026/8/1 8:29:56 閱讀更多
GWAS連鎖不平衡:從原理到實(shí)戰(zhàn),破解遺傳關(guān)聯(lián)分析的關(guān)鍵難題

GWAS連鎖不平衡:從原理到實(shí)戰(zhàn),破解遺傳關(guān)聯(lián)分析的關(guān)鍵難題

1. 項(xiàng)目概述:從“相關(guān)性”到“因果性”的橋梁做GWAS(全基因組關(guān)聯(lián)分析)的朋友,估計(jì)都聽(tīng)過(guò)“連鎖不平衡”這個(gè)詞。它就像數(shù)據(jù)分析里的一個(gè)“幽靈”,無(wú)處不在,又常常讓人困惑。你辛辛苦苦跑完分析&#xff0c…

2026/8/1 8:29:56 閱讀更多
AI名片設(shè)計(jì)不是拼圖!掌握這4類結(jié)構(gòu)化Prompt模板,效率提升5倍(限免素材包倒計(jì)時(shí)48h)

AI名片設(shè)計(jì)不是拼圖!掌握這4類結(jié)構(gòu)化Prompt模板,效率提升5倍(限免素材包倒計(jì)時(shí)48h)

更多請(qǐng)點(diǎn)擊: https://codechina.net 第一章:AI名片設(shè)計(jì)不是拼圖!掌握這4類結(jié)構(gòu)化Prompt模板,效率提升5倍(限免素材包倒計(jì)時(shí)48h) AI名片設(shè)計(jì)絕非元素堆砌或關(guān)鍵詞亂填——它是一門(mén)需要精準(zhǔn)語(yǔ)義建模的提示工…

2026/8/1 12:00:39 閱讀更多
CODESYS配置匯川R1000伺服驅(qū)動(dòng)器Modbus RTU通訊實(shí)戰(zhàn)指南

CODESYS配置匯川R1000伺服驅(qū)動(dòng)器Modbus RTU通訊實(shí)戰(zhàn)指南

1. 項(xiàng)目背景與核心需求最近在做一個(gè)工業(yè)控制項(xiàng)目,需要把一臺(tái)匯川的R1000系列伺服驅(qū)動(dòng)器接入到現(xiàn)有的PLC控制系統(tǒng)中。這套系統(tǒng)里,主控PLC用的是基于CODESYS平臺(tái)的控制器,而現(xiàn)場(chǎng)總線上跑的正是Modbus RTU協(xié)議。R1000本身支持Modbus RTU從站功能…

2026/8/1 12:00:39 閱讀更多
網(wǎng)絡(luò)運(yùn)維基礎(chǔ):ping與telnet的原理與應(yīng)用

網(wǎng)絡(luò)運(yùn)維基礎(chǔ):ping與telnet的原理與應(yīng)用

1. 網(wǎng)絡(luò)連通性測(cè)試的兩種基本武器 在網(wǎng)絡(luò)運(yùn)維的日常工作中,ping和telnet就像醫(yī)生手中的聽(tīng)診器和血壓計(jì),是診斷網(wǎng)絡(luò)健康狀況的基礎(chǔ)工具。我剛?cè)胄袝r(shí)經(jīng)常混淆兩者的使用場(chǎng)景,直到有次在機(jī)房徹夜排查故障才真正理解它們的差異。ping工作在ICMP協(xié)…

2026/8/1 12:00:39 閱讀更多
中國(guó)信通院云計(jì)算開(kāi)源產(chǎn)業(yè)聯(lián)盟智能體技術(shù)開(kāi)源應(yīng)用社區(qū)成立,懸鏡安全入選成員單位

中國(guó)信通院云計(jì)算開(kāi)源產(chǎn)業(yè)聯(lián)盟智能體技術(shù)開(kāi)源應(yīng)用社區(qū)成立,懸鏡安全入選成員單位

近日,中國(guó)信通院云計(jì)算開(kāi)源產(chǎn)業(yè)聯(lián)盟牽頭建設(shè)智能體技術(shù)開(kāi)源應(yīng)用社區(qū)。該社區(qū)定位為面向智能體領(lǐng)域的開(kāi)源創(chuàng)新平臺(tái)與產(chǎn)業(yè)協(xié)作樞紐,聚焦智能體技術(shù)研發(fā)、應(yīng)用落地與生態(tài)協(xié)同中的共性問(wèn)題,圍繞開(kāi)源基座共建、標(biāo)準(zhǔn)規(guī)范共研、生態(tài)研究洞察、項(xiàng)目孵…

2026/8/1 12:00:39 閱讀更多
DSP串口printf重定向:從標(biāo)準(zhǔn)庫(kù)配置到SCI驅(qū)動(dòng)實(shí)現(xiàn)

DSP串口printf重定向:從標(biāo)準(zhǔn)庫(kù)配置到SCI驅(qū)動(dòng)實(shí)現(xiàn)

1. 從“Hello World”到串口調(diào)試:為什么在DSP上printf()不是理所當(dāng)然的在桌面編程的世界里,printf()幾乎是每個(gè)程序員學(xué)習(xí)C語(yǔ)言時(shí)接觸的第一個(gè)函數(shù)。在Visual Studio或GCC環(huán)境下,你寫(xiě)下一行printf("Hello, World\n");,編…

2026/8/1 11:50:38 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料(Applied Materials)公司生產(chǎn)的一款用于半導(dǎo)體設(shè)備的I/O信號(hào)分配電路板。該型號(hào)(0100-02186)的核心特點(diǎn)如下:專用于Endura等半導(dǎo)體工藝腔室。集成信號(hào)路由與分配功能。連接控制…

2026/8/1 0:09:33 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機(jī),適用于自動(dòng)化設(shè)備及通用機(jī)械驅(qū)動(dòng)。該型號(hào)(FFMN-32L-10-T0 40AX)的核心特點(diǎn)如下:三相交流異步電動(dòng)機(jī)。額定…

2026/8/1 0:09:33 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料(Applied Materials)公司生產(chǎn)的一款用于半導(dǎo)體設(shè)備的I/O信號(hào)分配電路板。該型號(hào)(0100-02186)的核心特點(diǎn)如下:專用于Endura等半導(dǎo)體工藝腔室。集成信號(hào)路由與分配功能。連接控制…

2026/8/1 0:09:33 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機(jī),適用于自動(dòng)化設(shè)備及通用機(jī)械驅(qū)動(dòng)。該型號(hào)(FFMN-32L-10-T0 40AX)的核心特點(diǎn)如下:三相交流異步電動(dòng)機(jī)。額定…

2026/8/1 0:09:33 閱讀更多