iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 6
0
自我挑戰組

跟著FreeBSD官方handbook入門UNIX系列 第 6

[FreeBSD 入門] 學習Kernel相關指令及知識

Kernel的簡單定義就是,軟體與硬體之間的介面軟體。

查詢 Kernel 狀態訊息

輸入 sysctl -o -a > sysctl.out

輸入 ee sysctl.out 把檔案打開

kern.ostype: FreeBSD
kern.osrelease: 11.2-RELEASE-p4
kern.osrevision: 199506
kern.version: FreeBSD 11.2-RELEASE-p4 #0: Thu Sep 27 08:16:24 UTC 2018
    root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC

kern.maxvnodes: 146272
kern.maxproc: 9444
kern.maxfiles: 129969
kern.argmax: 262144
kern.securelevel: -1
kern.hostname: freebsd
kern.hostid: 2700895897
kern.clockrate: { hz = 100, tick = 10000, profhz = 8128, stathz = 127 }
kern.proc.all: Format:S,proc Length:85952 Dump:0x400400000000000000127d0300f8ffff...
kern.proc.proc: Format:N Length:45696 Dump:0x400400000000000000127d0300f8ffff...
kern.proc.proc_td: Format:N Length:85952 Dump:0x400400000000000000127d0300f8ffff...
kern.file: Format:S,xfile Length:8640 Dump:0x5000000000000000ee050000ea030000...
kern.posix1version: 200112
kern.ngroups: 1023
kern.job_control: 1
kern.saved_ids: 0
kern.boottime: { sec = 1540048286, usec = 191907 } Sat Oct 20 15:11:26 2018
kern.domainname:
kern.osreldate: 1102000
kern.bootfile: /boot/kernel/kernel
kern.maxfilesperproc: 116964
kern.maxprocperuid: 8499
kern.ipc.maxsockbuf: 2097152
kern.ipc.sockbuf_waste_factor: 8
kern.ipc.max_linkhdr: 16
kern.ipc.max_protohdr: 60
kern.ipc.max_hdr: 76
kern.ipc.max_datalen: 92

如果不了解上面某些參數類別是什麼意思,

可以下指令sysctl -d <參數>:

$ sysctl -d kern.ipc.sockbuf_waste_factor
$ kern.ipc.sockbuf_waste_factor: Socket buffer size waste factor

補充小知識:

  1. kernel的文件都放在 /boot/kernel/ 底下
  2. 第三方 kernel 模組的文件都放在 /boot/moduals/ 底下
  3. kernel之外的檔案,通稱為 userland

Kernel訊息的類別組成:

kern -> 核心的 kernel 功能、特性
vm -> 虛擬記憶體系統
vfs -> 檔案系統
net -> 網路
debug -> 調適
hw -> 硬體
machdep -> Machine-dependent settings
user -> Userland interface information
p1003_1b -> POSIX 行為
kstat -> kernel 統計
dev -> 裝置的資訊
security -> Security-specific kernel features

查詢已載入的kernel模組

kldstat – display status of dynamic kernel linker (顯示動態kernel連結器的狀態)

$ kldstat
Id Refs Address            Size     Name
 1    3 0xffffffff80200000 20647f8  kernel
 2    1 0xffffffff82419000 2dbb0    vboxguest.ko

$ kldstat -v (多 -v 參數,可以顯示詳細的子模組)

手動載入/移除模組

載入模組範例: kldload /boot/kernel/ipmi.ko
移除模組範例: kldunload /boot/kernel/ipmi.ko
用這個方法的話,設定在重開機時就會被重置!
所以:

開機(boot)時自動導入模組

需要在 /boot/loader.conf 添加想要載入的模組
例如:
想載入/boot/kernel/procfs_load.ko的話
sudo ee /boot/loader.conf
加入procfs_load="YES" 後儲存


上一篇
[FreeBSD 入門] 第四章 安裝應用程式:套件與 Port
下一篇
[FreeBSD 入門] 客製化kernel
系列文
跟著FreeBSD官方handbook入門UNIX18
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
竹風之翼
iT邦新手 2 級 ‧ 2018-10-21 14:24:30

這是LINUX的系統語法嗎?

elecbuggy iT邦新手 5 級 ‧ 2018-10-21 19:57:34 檢舉

是FreeBSD的指令!
但跟Linux裡的指令其實差不多啦,很多都一樣^^
他們都是UNIX-like的作業系統
只是BSD系列最接近 UNIX 原版的設計理念

我要留言

立即登入留言