after install TPM2 software package ( tpm2-abrmd, tpm2-tss, tpm2-tools, tpm2-tss-devel ), added one file "20-tss.rules" into /etc/udev/rules.d/
/etc/udev/rules.d/20-tss.rules :
---
KERNEL=="tpm*", MODE=="0600", OWNER=="tss", GROUP=="tss"
---
then trigger the udev daemon:
udevadm control --reload-rules;udevadm trigger
enable tpm2-abrmd
systemctl enable tpm2-abrmd;systemctl start tpm2-abrmd
ps. CentOS 7 does not need to added 20-tss.rules.
2018年11月14日 星期三
2018年11月7日 星期三
DKMS for it87
這個 it87.c 我已經忘記是哪裡拿的, 我猜是從比 4.16 更後面的 kernel source 裡拆出來用, 個別編譯的. 首先的, 先安裝 dkms, 而且建議版本為 2.3-3ubuntu4, 2.3-3ubuntu3 這版確定有 mkdeb 的 bug. 而 2.3-3ubuntu4 的 .deb 我是直接拿 ubuntu 18.04 裡的直接裝在 16.04 用. 檔案下載找這裡:
http://launchpadlibrarian.net/349013047/dkms_2.3-3ubuntu4_all.deb
還有安裝一個必要套件 "debhelper"
在這列一下研究出來的 dkms.conf
---
MAKE="make -C src/ KERNELDIR=/lib/modules/${kernelver}/build"
DEST_MODULE_LOCATION="/kernel/drivers/hwmon"
CLEAN="make -C src/ clean"
BUILT_MODULE_NAME=it87
BUILT_MODULE_LOCATION=src/
PACKAGE_NAME=it87
PACKAGE_VERSION=1.0
REMAKE_INITRD=no
---
src/ 裡的檔案:
compat.h it87.c Makefile
Makefile內容:
---
TARGET := $(shell uname -r)
KERNEL_MODULES := /lib/modules/$(TARGET)
KERNEL_BUILD := /usr/src/linux-headers-$(TARGET)
SYSTEM_MAP := /boot/System.map-$(TARGET)
DRIVER := it87
MOD_SUBDIR = drivers/hwmon
obj-m := $(patsubst %,%.o,$(DRIVER))
obj-ko := $(patsubst %,%.ko,$(DRIVER))
MAKEFLAGS += --no-print-directory
.PHONY: all install modules modules_install clean
all: modules
modules clean:
@$(MAKE) -C $(KERNEL_BUILD) M=$(CURDIR) $@
install: modules_install
modules_install:
cp $(DRIVER).ko $(KERNEL_MODULES)/kernel/$(MOD_SUBDIR)
depmod -a -F $(SYSTEM_MAP) $(TARGET)
---
檔案一定要丟到 /usr/src/ 裡, 以下是我的內容, 版本為 1.0, 必需要有版本號. 以上沒提的檔案通通都可以忽略不用丟進去:
/usr/src/it87-1.0/
├── dkms.conf
├── ITE_Register_map.csv
├── ITE_Register_map.pdf
├── README
├── src
│ ├── compat.h
│ ├── it87.c
│ └── Makefile
└── TODO
這是 DKMS 一般的安裝手冊. 但是按照這個手冊跑, 它只是會編譯 .ko 檔跟安裝而已, 而我要的是每一次 upgrade kernel 時都要自己去編自己安裝...
https://help.ubuntu.com/community/DKMS
於是我簡化一下製作流程:
dkms add -m it87 -v 1.0
dkms build -m it87 -v 1.0
dkms mkdeb -m it87 -v 1.0
然後, 安裝已產生好的 deb:
dpkg -i /var/lib/dkms/it87/1.0/deb/it87-dkms_1.0_amd64.deb
這樣就可以確保每次更改 kernel 時外加的 kernel driver 也一起跟著被編譯, 被加入 initrd 裡.
http://launchpadlibrarian.net/349013047/dkms_2.3-3ubuntu4_all.deb
還有安裝一個必要套件 "debhelper"
在這列一下研究出來的 dkms.conf
---
MAKE="make -C src/ KERNELDIR=/lib/modules/${kernelver}/build"
DEST_MODULE_LOCATION="/kernel/drivers/hwmon"
CLEAN="make -C src/ clean"
BUILT_MODULE_NAME=it87
BUILT_MODULE_LOCATION=src/
PACKAGE_NAME=it87
PACKAGE_VERSION=1.0
REMAKE_INITRD=no
---
src/ 裡的檔案:
compat.h it87.c Makefile
Makefile內容:
---
TARGET := $(shell uname -r)
KERNEL_MODULES := /lib/modules/$(TARGET)
KERNEL_BUILD := /usr/src/linux-headers-$(TARGET)
SYSTEM_MAP := /boot/System.map-$(TARGET)
DRIVER := it87
MOD_SUBDIR = drivers/hwmon
obj-m := $(patsubst %,%.o,$(DRIVER))
obj-ko := $(patsubst %,%.ko,$(DRIVER))
MAKEFLAGS += --no-print-directory
.PHONY: all install modules modules_install clean
all: modules
modules clean:
@$(MAKE) -C $(KERNEL_BUILD) M=$(CURDIR) $@
install: modules_install
modules_install:
cp $(DRIVER).ko $(KERNEL_MODULES)/kernel/$(MOD_SUBDIR)
depmod -a -F $(SYSTEM_MAP) $(TARGET)
---
檔案一定要丟到 /usr/src/ 裡, 以下是我的內容, 版本為 1.0, 必需要有版本號. 以上沒提的檔案通通都可以忽略不用丟進去:
/usr/src/it87-1.0/
├── dkms.conf
├── ITE_Register_map.csv
├── ITE_Register_map.pdf
├── README
├── src
│ ├── compat.h
│ ├── it87.c
│ └── Makefile
└── TODO
這是 DKMS 一般的安裝手冊. 但是按照這個手冊跑, 它只是會編譯 .ko 檔跟安裝而已, 而我要的是每一次 upgrade kernel 時都要自己去編自己安裝...
https://help.ubuntu.com/community/DKMS
於是我簡化一下製作流程:
dkms add -m it87 -v 1.0
dkms build -m it87 -v 1.0
dkms mkdeb -m it87 -v 1.0
然後, 安裝已產生好的 deb:
dpkg -i /var/lib/dkms/it87/1.0/deb/it87-dkms_1.0_amd64.deb
sandisk extreme A2 microSD
很白爛的測試, 測試開機花掉的時間. OS: ubuntu xfce4 16.04.5(LTS) kernel 4.15.0-38, rootfs 為 btrfs, zlib:3 壓縮, no swap, 硬體為 iBASE IB897, atom E3845 1.91Ghz, 2+2GiB DDR3L-1600.
transcend class-10 8G: 64.62秒
sandisk exterme A2 64G: 59.90秒.
transcend class-10 8G: 64.62秒
sandisk exterme A2 64G: 59.90秒.
訂閱:
文章 (Atom)