※ 引述《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
: 有劳各位先进再帮忙一下了
: 非常感谢