Re: [問題] 系統遺失許多重要檔案?
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 5 篇):
FreeBSD 近期熱門文章
PTT數位生活區 即時熱門文章