看板 FreeBSD 關於我們 聯絡資訊
※ 引述《vu037 (向陽山我來了!)》之銘言: : ※ 引述《HuangTzHuan ()》之銘言: : : 那個 xxxxxx 很重要啊!要看清楚才知道要補什麼給它 : 因為缺太多種 : 不同的指令會缺不同的library檔 : 現在是連ls都不能用 : 所以我才沒有一個一個寫出來 : 是說ls也不能用 我可能也會不知道要把該補的檔案補到哪裡去 Orz : : s1b 是 swap,fsck 本來就不認得它,這是正常的 : : swap 不必 fsck : 原來如此 我本來以為是類似windows獨立弄一槽 整個都是swap檔 : 所以說他的swap根本沒有建立檔案系統是吧! : 那這一點呢? : 有些槽的fsck會自己被kill掉 : 這不應該是因為缺檔案或硬碟有問題對吧? 因為 memory 只有 32MB,然後 fsck 的當下 swap 可能還沒啟用 所以當 fsck 加上其它 process 和 kernel 等需要的記憶體超過 32MB 時 fsck 就被 kill 掉了 解法是手動進 single mode 之後 先把 swap 啟用 (執行 swapon -a) 再對每個需要的 file system 執行 fsck (如果 swapon 也不能用的話,試試 /rescue/swapon) (另外因為會用到 swap,所以 fsck 可能會非常非常非常久...) : : 32MB 的記憶體,這恐怕是 486~pentium 年代的硬體了吧? : : 現在大概也很難有備料可以交插測試是否所有硬體部份都還是好的 : 其實硬體應該沒舊到那個地步 : 本來是32+256 但是256那條貌似因為太久沒開機壞掉了 : 插著開機都會逼逼叫 : 所以才只剩32MB,忘記是SDRAM還是DDR1了 : : 所以我個人會建議把硬碟裡的資料備份出來 : : 然後找新的硬體重裝吧 : 這個我也想過要試 : 但是我嘗試用windows靠軟體讀ufs檔案系統 : 可是似乎只能讀不能存? : 所以用windows備份的話 就沒辦法重灌後再傳回去了 如果 FreeBSD 在新的電腦裝好了,FreeBSD 和 windows 之間的網路也通了 從 windows 要把檔案放到 FreeBSD 上有很多辦法,例如 scp/rsync/ftp 等等 所以這部份不是問題 : 而且其實好像瀏覽的時候也怪怪的,也許是軟體的問題? : 是不是只能先用一台新系統灌好FreeBSD後再把舊硬碟的東西丟進去? FreeBSD 應該有 live cd 可以用 (應該也能做成 USB 隨身碟) 所以不一定要在另一臺電腦上裝好 FreeBSD 就可以取出資料 : 想順便問一下,是否有可能在維持某幾槽的檔案不變的情況下重灌呢? 理論上是可以,但 FreeBSD 的 installer 能不能做到我不很確定 (可能沒實作,或可能有實作但操作很複雜等等) : 不過這跟下面的建議2好像很類似 : : 如果不管硬體好壞一定要嚐試修復的話 : : 下面是幾個建議: : : - /rescue 下有 static linked 的常用指令,df ls tar 之類的都有 : : 先用這邊的代替 : 這段的意思是把這些系統指令改為使用/rescue下的嗎? : 是需要用掛載的方式還是怎麼做呢? : 很複雜的話可以給個術語讓我自己查就好 感謝XD 如果當初安裝的人有裝 /rescue 的話,就直接執行就好 例如 /rescue/ls, /rescue/tar 等等 : : - 先確定系統的版本,如果是 5.1-release 的話,缺 library 可以從 : : FreeBSD 5.1-release 的光碟裡找,理論上可以直接把 base 解開來 : : 直接蓋掉整個系統,不過如果只缺一兩個 lib 的話,就把 base 解開 : : 放在別的地方,再 copy 過去吧 : (思) 光碟應該網路上還載的到 這ok : 光碟機理論上應該隨便一台插上去就能動(吧?) : 解開base這點可以稍微說明一下要怎麼做嗎? 應該會有個 base.tar.gz 之類的檔案 (也可能是 base.tar.bz2 或 base.tar.xz, 我不確定 5.1 時是用哪個壓縮格式) 總之用 tar 搭配其它工具把它解開來就會看到 FreeBSD base structure 比方說 base.tar.gz 的話就用 tar -C PATH-TO-EXTRACT -zxpf base.tar.gz base.tar.bz2 的話用 tar -C PATH-TO-EXTRACT -jxpf base.tar.bz base.tar.xz 的話用 xzcat base.tar.xz | tar -C PATH-TO-EXTRACT -xpf - : 是原本系統檔案全部都壓在同一個gz之類的檔案裡 : 然後我直接用安裝的方式蓋掉舊的系統資料夾這個意思對吧 對,不過如果你不太熟 FreeBSD 的話,非常不建議這樣做 特別是 /etc /var /usr/local/etc 等等被蓋掉之後會非常麻煩 可能會掉很多設定或資料 : 不好意思我沒有自己安裝過FreeBSD或軟體, : 不太知道光碟內的檔案結構是怎樣 : : - 如果缺的 lib 在 FreeBSD 5.1-release 光碟裡找不到的話,有可能是 : : patch 過的新版,這時就要看你的 gcc 還能不能動了,能動的話可以到 : : /usr/src 下把缺的 lib 編出來 : 我的ls不能用,沒法看, 用 /rescue/ls 試試 : 但請問是不是所有lib都一定會在src裡面有原始檔? : 檔名會完全一樣嗎? 都會有,但檔名不一定一樣 FreeBSD 會根據來源和 license 來放 src 有些則是歷史因素,沒什麼道理... : 所以只要到/usr/src gcc lib檔檔名就可以編譯出來再copy回需要的位置了? 如果你找到正確的目錄,理論上在那個目錄裡執行 make install 應該就好了 不過前提是 make install 用到的工具 (gcc, make, install 等等) 都要能動才行 : 還是說在src下也是一堆子目錄結構呢? 是有一堆子目錄結構沒錯... : : - 如果 gcc 不能動的話,看一下缺的 lib 是否系統裡有較舊的版本,有時 : : 候把舊的版本 symbolic link 過去是會動的,如果能用這招讓 gcc 能動 : : 的話就可以到上一步 : 舊版本通常會放在哪呢? 通常會在同一個目錄下 : symbolic link跟copy的差別是? 一個只是 link,一個會複製完整的檔案 : 以win系統來說,symbolic link是不是像是 : 改登錄檔或ini檔去讓軟體使用不同位置的系統檔? 不是,symbolic link 只是 file system 上的一個功能 在 windows 下比較接近的應該是 mklink.exe 建出來的 link : 具體來說需要怎樣的步驟勒? 比方說 gcc 缺 /lib/liba.so.7 (也就是 /lib/liba.so.7 不存在) 但有別的版本存在 (例如 /lib/liba.so.6) 則可以建一個 symbolic link 騙它試試看:ln -s liba.so.6 /lib/liba.so.7 (ln 不能動的話試試看 /rescue/ln) 有一定機會可以動,不過如果你不熟 FreeBSD 的話也非常不建議這樣做就是 : : - 如果還是不行的話,我想不到還有什麼招可以不透過別的電腦來修復了 orz : 給這些方向已經很有幫助了! : 這些都是我原本想嘗試的方法 : 只是因為不太熟還不知道該怎麼動手做 : 而且就跟前一位版友說的一樣,有些東西真的不太好估狗 Orz : 有勞各位先進再幫忙一下了 : 非常感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.30.51 ※ 文章網址: https://www.ptt.cc/bbs/FreeBSD/M.1458588356.A.BCD.html ※ 編輯: HuangTzHuan (140.112.30.51), 03/22/2016 03:29:54