徒然ネル

LinuxカーネルとかeBPFとか

カーネルモジュール自作(したいけど、うまくいかない)

はじめに

こちらの記事を参考にカーネルモジュール自作やってみます

カーネルモジュール作成によるlinuxカーネル開発入門 - 第一回 hello world - 覚書 (hatenablog.com)

 

実行環境

こんな感じ

$ uname -a
Linux Ubuntu22 6.2.0-39-generic #40~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 16 10:53:04 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

 

CPUの仮想化機能、BIOSの仮想化機能が有効になっているかの確認。

1つ目のコマンドは1以上になっていたら良いそうで、2つ目のコマンドは実行できればOKとのこと。

$ egrep -c '^flags.*(vmx|svm)' /proc/cpuinfo
4

$ sudo modprobe kvm-intel

$

2つ目のコマンドがなにやってるのか調べてみたら、カーネルモジュールを入れるコマンドなんですねー

【 modprobe 】コマンド――カーネルモジュールのロード、アンロードを行う:Linux基本コマンドTips(269) - @IT (itmedia.co.jp)

 

準備

必要なパッケージをインストール

$ sudo apt-get install git vagrant libvirt-bin libvirt-dev kernel-package qemu-kvm libssl-dev libncurses5-dev

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Note, selecting 'qemu-system-x86' instead of 'qemu-kvm'
Package kernel-package is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

Package libvirt-bin is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'libvirt-bin' has no installation candidate
E: Package 'kernel-package' has no installation candidate

なんか色々エラーでてきた

Ubuntuのバージョンが新しいからパッケージが変わったのかな

代わりっぽいパッケージ探してインストール

$ sudo apt install qemu-system-x86 libvirt-daemon-system libvirt-clients bridge-utils git vagrant libssl-dev libncurses5-dev

kernel-packageだけ代わりが見つからなかったので、一旦放置

 

$ sudo addgroup libvirtd

$ sudo usermod -aG libvirtd <your user name>

よくわからんけど、ここで一旦ログアウト、ログイン

 

$ vagrant plugin install vagrant-libvirt

 

環境構築

$ cd elkdat/

$ git checkout v0.3

 

./init
+ BOXNAME=elastic/ubuntu-16.04-x86_64
+ vagrant box list
+ grep -q 'elastic/ubuntu-16.04-x86_64 (libvirt, '
+ pushd elkdat
~/elkdat/elkdat ~/elkdat
+ vagrant up --provider libvirt
Bringing machine 'ktest' up with 'libvirt' provider...
==> ktest: Box 'elastic/ubuntu-16.04-x86_64' could not be found. Attempting to find and install...
    ktest: Box Provider: libvirt
    ktest: Box Version: >= 0
The box 'elastic/ubuntu-16.04-x86_64' could not be found or
could not be accessed in the remote catalog. If this is a private
box on HashiCorp's Vagrant Cloud, please verify you're logged in via
`vagrant login`. Also, please double-check the name. The expanded
URL and error message are shown below:

URL: ["https://vagrantcloud.com/elastic/ubuntu-16.04-x86_64"]
Error: The requested URL returned error: 404

うーん、Ubuntuのバージョン違うとだめなのか