BMC用NFS debug的方法

前置作業:
1. Build好的uImage放tftp
2. Build/output/ImageTree目錄放NFS export path備用
3. 登入BMC console測試是否可mount NFS: mount -t nfs -o rw,nolock {src_nfs_path} {dest_path}

NFS開機模式步驟:
1. 重啟BMC,當BMC出現Hit any key to stop autoboot:時按任意鍵,進入u-boot畫面

2. 設定環境變數: (在本機的u-boot)

3.1 備份原本環境變數
print #複製下來另存新檔

3.2 設定環境變數
setenv ipaddr {ipaddr} #給u-boot一個隨意靜態IP
setenv serverip {serverip} #設定tftp server IP
setenv bootcmd 'tftp 82000000 uImage; bootm 82000000' #設定從tftp的uImage開機
(原本是bootcmd=bootfmh #從本機load進memory的uImage開機,復原時只要改回這個即可)
setenv bootargs 'root=/dev/nfs rw nfsroot={nfs_ip}:{nfs_export_path} ip=dhcp console=ttyS4,38400' #設定BMC檔案系統root從NFS mount起來,並給予BMC dhcp IP
(如要指定static ip, ip={bmcip}:{serverip}:{gatewayip}:{netmask}::{bmcnicname}:off)
(如果mount nfs出現錯誤,首先要在bootargs放上nfsrootdebug參數找出真正的原因,若是沒加nolock的問題,將nfsroot=最後加上nolock即可,i.e.nfsroot={nfs_ip}:{nfs_export_path},nolock)
saveenv #存檔寫回本機的uImage

tftp 82000000 uImage #測試tftp的uImage能不能load進memory
bootm 82000000 #從0x82000000記憶體開機

3.3 執行重開機
run bootcmd
登入BMC後查看/proc/cmdline,是否載入kernal是我們bootcmd寫的NFS參數

U-boot指令:
http://flykof.pixnet.net/blog/post/22975136-u-boot%E6%8C%87%E4%BB%A4

BMC default IP: 192.168.0.120
Baud rate: 38400 / 115200

TFTP installation:
https://yulun.me/2016/setup-tftp-server-on-ubuntu/

廣告

arp_cache設定

arp_cache: neighbor table overflow!

#sysctl -w net.ipv4.neigh.default.gc_thresh3=8192
#sysctl -w net.ipv4.neigh.default.gc_thresh2=8192
#sysctl -w net.ipv4.neigh.default.gc_thresh1=4096

https://www.serveradminblog.com/2011/02/neighbour-table-overflow-sysctl-conf-tunning/

怎麼增大Linux系統的open file(s)上限

 

#查看或設置open file限制

ulimit -n

 

@soft limit,軟限制,用戶可以上調軟限製到硬限制

ulimit -Sn

@hard limit,硬限制,非root用戶不能修改

ulimit -Hn

如果沒有指明,則同時修改軟限制和硬限制。

 

#臨時修改和永久修改

臨時修改只對當前會話有效,登出和重啟後都恢復系統設置。

@臨時修改

使用ulimit命令,以修改open file(s)為例。

ulimit -n 1024000

查看修改結果

ulimit -n

1024000

@臨時修改某個PID

prlimit -n4096 -p pid_of_process 

@永久修改

在/etc/security/limits.conf

或者在/etc/security/limits.d/目錄下添加一個文件。

具體格式參考/etc/security/limits.conf

 

#open file(s)上限

open file(s)kernel級別有2個配置,分別是:

fs.nr_open,進程級別

fs.file-MAX,系統級別

fs.nr_open默認設置的上限是1048576,所以用戶的open file(s)不可能超過這個上限。

@sysctl命令修改上限(臨時)

#sysctl -w fs.nr_open = 10000000

#ulimit -n 10000000

#ulimit -n

10000000

@修改上限(永久)

到/etc/sysctl.conf中

例如:

#echo“fs.nr_open = 10000000”>> /etc/sysctl.conf

#echo“fs.file-max = 11000000”>> /etc/sysctl.conf

注意:fs.nr_open總是應該小於等於fs.file-max。

 

#查看當前打開的文件數:

#sysctl fs.file-nr

fs.file-nr = 1760 0 11000000

 

參考:

http://www.chengweiyang.cn/2015/11/14/how-to-enlarge-linux-open-files-upper-cell/

Understanding Metaclass

http://blog.jobbole.com/21351/

http://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python

Understanding Systemd Units, Unit Files and Directives

https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files