DKMS
pt1_drvのソースを配置する。Makefileとかいじったような気もするけど、前の環境からコピってきてるので、どこをいじったかよくわからない。他の情報も参考にしつつ、ビルドできるようにいい感じに修正して下さいすみません。# tree -A /usr/src/pt1_drv-1.1.0
/usr/src/pt1_drv-1.1.0
├── dkms.conf
└── src
├── Makefile
├── etc
│ └── 99-pt1.rules
├── modules.order
├── pt1_com.h
├── pt1_i2c.c
├── pt1_i2c.h
├── pt1_ioctl.h
├── pt1_pci.c
├── pt1_pci.h
├── pt1_tuner.c
├── pt1_tuner.h
├── pt1_tuner_data.c
└── pt1_tuner_data.h
# ln /usr/src/pt1_drv-1.1.0/src/etc/99-pt1.rules /etc/udev/rules.d/99-pt1.rules
pt1_drvは、もともとあるearth-pt1とかぶっているので、earth-pt1を無効にしないと読み込まれない
# echo "blacklist earth-pt1" >> /etc/modprobe.d/blacklist.conf
DKMSパッケージをインスコ
# yum install dkms
dkms.confを書く
# cat /usr/src/pt1_drv-1.1.0/dkms.conf
#パッケージの名前
PACKAGE_NAME="pt1_drv"
#パッケージのバージョン
PACKAGE_VERSION="1.1.0"
#ビルドするコマンド
MAKE="cd src/ && BUILD_KERNEL=${kernelver} make"
#中間ファイルの削除コマンド
CLEAN="cd src/ && make clean"
#作成されるモジュールの名前(拡張子.koは付けない)
BUILT_MODULE_NAME="pt1_drv"
#モジュールが作成される場所(ソースディレクトリからの相対パス)
BUILT_MODULE_LOCATION="src/"
#元々のインストール先(/lib/modules/`uname -r`をルートとしたパス)
DEST_MODULE_LOCATION="/kernel/drivers/video/"
REMAKE_INITRD="yes"
#自動更新の有効化
AUTOINSTALL="yes"
add! build! install!
# dkms add -m pt1_drv -v 1.1.0
Creating symlink /var/lib/dkms/pt1_drv/1.1.0/source ->
/usr/src/pt1_drv-1.1.0
DKMS: add completed.
# dkms build -m pt1_drv -v 1.1.0
Kernel preparation unnecessary for this kernel. Skipping...
Building module:
cleaning build area...
cd src/ && BUILD_KERNEL=3.14.2-200.fc20.x86_64 make...
cleaning build area...
DKMS: build completed.
# dkms install -m pt1_drv -v 1.1.0
pt1_drv:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/3.14.2-200.fc20.x86_64/extra/
Adding any weak-modules
depmod...
Backing up initramfs-3.14.2-200.fc20.x86_64.img to /boot/initramfs-3.14.2-200.fc20.x86_64.img.old-dkms
Making new initramfs-3.14.2-200.fc20.x86_64.img
(If next boot fails, revert to initramfs-3.14.2-200.fc20.x86_64.img.old-dkms image)
dracut........
DKMS: install completed.
yumでカーネルのアップデートがあった場合には、勝手にビルドしてくれるサービスを起動。いらないかも?
# systemctl start dkms
# systemctl status dkms
dkms.service - Builds and install new kernel modules through DKMS
Loaded: loaded (/usr/lib/systemd/system/dkms.service; enabled)
Active: active (exited) since 月 2014-05-12 23:22:07 JST; 5s ago
Docs: man:dkms(8)
Process: 20572 ExecStart=/bin/sh -c dkms autoinstall --verbose --kernelver $(uname -r) (code=exited, status=0/SUCCESS)
Main PID: 20572 (code=exited, status=0/SUCCESS)
# systemctl enable dkms
ln -s '/usr/lib/systemd/system/dkms.service' '/etc/systemd/system/multi-user.target.wants/dkms.service'
ポリシー
何か足りないかもしれないけど、一応これでひと通り動いてる# cat epgrecUNA.te
module epgrecUNA 1.0;
require {
type httpd_t;
type httpd_sys_script_t;
type unconfined_t;
type shadow_t;
type device_t;
type crond_t;
type crond_var_run_t;
type user_cron_spool_t;
type user_tmpfs_t;
class process signal;
class msgq { unix_read destroy create };
class file { read write create setattr getattr open unlink };
class dir { write search read add_name remove_name open getattr };
class sem { unix_read read write unix_write associate };
class shm { unix_read read write unix_write associate getattr };
class chr_file { read ioctl open };
}
allow httpd_t shadow_t:file { read getattr open };
allow httpd_t user_cron_spool_t:dir { write search read add_name remove_name open getattr };
allow httpd_t user_cron_spool_t:file { open create setattr unlink };
allow httpd_t crond_t:process signal;
allow httpd_t crond_var_run_t:file { read open };
allow httpd_t unconfined_t:sem { unix_read read unix_write write associate };
allow httpd_t unconfined_t:shm { unix_read read unix_write write associate getattr };
allow httpd_sys_script_t device_t:chr_file { read ioctl open };
allow httpd_sys_script_t self:msgq { unix_read destroy create };
allow httpd_t user_tmpfs_t:file { read write };
ポリシーのコンパイルとインストールは、下記を使わせてもらいましょう
SELinux - Take's Wiki
# ./installSELPolicy epgrecUNA
# setsebool -P httpd_mod_auth_pam 1
# semanage fcontext -a -t httpd_sys_content_t "/usr/share/epgrecUNA(/.*)?"
# restorecon -RF /usr/share/epgrecUNA
動かない時は、以下で足りないポリシーを探して追加する
# setenforce 0
(動かなかった動作をもう一度。それでも動かない場合は、SELinux以外の原因と思われ)
# setenforce 1
# sealert -l*
# grep httpd /var/log/audit/audit.log | audit2allow -M mypol
# cat mypol.te
あとffmpegは、rpmfusionリポジトリを追加しないと入らない
# rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
# yum install ffmpeg
0 件のコメント:
コメントを投稿