[FreeBSD] 利用 fsck 指令修復不正常斷電關機

由於人不在機器前面,所以都請學弟妹幫忙直接拔電在插電,現在問題出來了,完全不能開機了,現在就只能進去單人模式修復,其實修復也非常容易,進入開機選單,選擇 Single user mode 模式,進入之後會直接看到底下訊息提示:
enter full pathname of shell or return for :/bin/sh:
沒意外就直接按下 Enter 鍵就可以了,由於 fsck 指令在修復過程不可以先 mount 磁區,所以先利用 mount -a 來掛上所有磁區
# 掛上所有磁區
mount -a
# 顯示硬碟磁區
df -h
Console 會看到
Filesystem                                    Size    Used   Avail Capacity  Mounted on
/dev/da0s1a                                   496M    341M    115M    75%    /
devfs                                         1.0K    1.0K      0B   100%    /dev
/dev/da0s1e                                   496M     16M    440M     4%    /tmp
/dev/da0s1f                                    24G     15G    6.4G    71%    /usr
/dev/da1s1d                                    33G     22G    8.4G    73%    /usr/home
/dev/da0s1d                                   4.7G    2.5G    1.8G    58%    /var
如果針對 /dev/da1s1d 做修復,請下底下指令
umont /usr/home
fsck -y /dev/da1s1d
fsck 修復完成會出現底下訊息
** /dev/da1s1d
** Last Mounted on
** Phase 1 - Check Blocks and Sizes
** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
** Phase 5 - Check Cyl groups
2 files, 2 used, 506337 free (25 frags, 63289 blocks, 0.0% fragmentation)
如果中間有錯誤訊息,就繼續 fsck 步驟,直到修復完成,完成之後下 reboot 重新開機,就可以看到 login as: 可以在 rc.conf 裡面加入兩行設定
fsck_y_enable="YES"
background_fsck="YES"
[整理] 文件系統修復 【FreeBSD】系統異常關機修複方式 FSCK [FreeBSD] 請教: FreeBSD斷電後fsck後能不能自動reboot

[Linux] 將 iperf 導入嵌入式系統 Router

iperf 是一套測試網路效能工具,對於網通廠各工程師們不可或缺的啦,分享如何將 iperf 裝到嵌入式板子,其實在 Porting 每一個工具到板子上的方式差不多,步驟大概是利用 configure file 產生 Makefile,修改 gcc tool chain 路徑,將編譯好的程式放到 root file system,基本上就是如此,目前 iperf 到 2.0.5 版,大家快去下載吧。 直接修改 user space 的 Makefile:
cd ./user/apps/iperf-2.0.5; \
./configure --host=mips-linux CC=$(TOOLPREFIX)gcc CXX=$(TOOLPREFIX)g++ --disable-ipv6 \
--prefix=$(shell (pwd -P))/user/apps/iperf-2.0.5/romfs;\
$(MAKE) && $(MAKE) install ;\
–host, CC, CXX 請換上 Tool Chain 對應路徑,大致上就可以了,更多設定可以參考 ./configure –help 編譯過程如果出現底下錯誤
undefined reference to malloc
就將 config.h.in 這檔案,底下整段 mark 起來,就可以編譯過了
/* Define to rpl_malloc if the replacement function should be used. */
undef malloc
ref: undefined reference to rpl_malloc