0
|
1 # FedoraでLinuxのkernelをdebug buildする
|
|
2 - linuxをgdbでデバッグトレースしたい!!
|
|
3 - ansibleがなんとあるので使うといい感じにできる
|
|
4
|
|
5 ## ansible
|
|
6 - http://www.cr.ie.u-ryukyu.ac.jp/hg/Ansible/fedora_kernel_build/
|
|
7
|
2
|
8 ## virshを使ったやりかた
|
0
|
9 - まずdebug buildしたいfedoraのvmをつくる
|
2
|
10 - 大学のdalmoreサーバーでやると便利
|
0
|
11 - 結構パワーが必要なので、ansibleのファイルにある通りVMの設定を書き換える
|
|
12 - CPUのコア数を8コア
|
|
13 - HDDの容量を30GBは確保する
|
|
14 - cpuのコア数はvirshのxmlを書き換える
|
2
|
15 - HDDの容量は、qemu-imgでresizeしたあとに、VMにログインしてファイルシステムを拡張する
|
|
16 - ここまで準備が出来たら実行可能! VMのmac addressをakatsukiに登録して、別のマシンから以下のコマンドでansibleを実行する
|
|
17 - 実行する前にVMのipを書いたhostsファイルを用意する
|
|
18 - main.ymlのユーザー名を変更するなどもしておく
|
|
19 ```
|
|
20 $screen -L ansible-playbook -i hosts main.yml --ask-become-pass
|
|
21 ```
|
|
22
|
|
23
|
|
24 - 完了したらビルドしたファイルをyomitanなどに転送する
|
|
25 ```
|
|
26 ssh localhost -p 2222 -l root 'cd /usr/src/kernels ; tar czf - fedora' | dd of=fedora26-kernel.tgz
|
|
27 ```
|
|
28 - ここのlocalhostはVMのIPとかに変えておこう。あとユーザーとかもそんな感じで...
|
|
29
|
|
30 ## 起動するkernelを切り替える
|
|
31 - ansibleをかけただけでは、VMが起動するkernelが切り替わってないので切り替える必要がある
|
|
32 - ちまたでは`awk`を使って番号を決めて`grub2-`で解決する方法が出回っている
|
|
33 - 最近のFedoraでは `grub2.config`をいくらgrepしてもkernel情報が乗ってない
|
|
34 - 最近のfedoraでは次の通りにする
|
|
35
|
|
36 ### kernelの変更
|
|
37 - `$ grubby --info=ALL` を実行して、切り替えたいkernelを探す
|
|
38 - `$grubby --set-default /boot/vmlinuz-4.2.0-1.fc23.x86_64`で切り替える
|
|
39
|
|
40 ### 参考
|
|
41 - [Working with the GRUB 2 Boot Loader](https://docs.fedoraproject.org/en-US/fedora/rawhide/system-administrators-guide/kernel-module-driver-configuration/Working_with_the_GRUB_2_Boot_Loader/)
|
|
42
|
|
43
|
|
44
|
|
45 ## gdbでdebugするには(学内限定)
|
|
46 1. debugしたいvmを`ie-virsh define-gdb`でdefineしなおす
|
|
47 - すでにdefineしていたらundefineする
|
|
48 - gdbのportが開放されたxmlファイルが生成される
|
|
49 2. `ie-virsh dumpxml 04(defineした番号)`で、gdbのportを確認する
|
|
50 3. `ie-virsh strart 04`して起動する
|
|
51 4. kernelから転送したvmlinuxをgdbで `gdb vmlinux`する
|
|
52 5. breakpointを設定する
|
|
53 6. `target remote localhost:(確認したport)`にするとVMに接続される
|
|
54 7. `c`してあとは自由に!!
|
|
55
|
|
56 # Tips
|
|
57 - dalmoreのvirshのxmlを書き換えるにはroot権限が必要 |