Mercurial > hg > Document > Growi
view Linux/Kernel/debug_build.md @ 51:d7cd9e415b44
backup 2021-03-29
author | autobackup |
---|---|
date | Mon, 29 Mar 2021 00:10:03 +0900 |
parents | b6c284fd5ae4 |
children |
line wrap: on
line source
# FedoraでLinuxのkernelをdebug buildする - linuxをgdbでデバッグトレースしたい!! - ansibleがなんとあるので使うといい感じにできる ## ansible - http://www.cr.ie.u-ryukyu.ac.jp/hg/Ansible/fedora_kernel_build/ ## virshを使ったやりかた - まずdebug buildしたいfedoraのvmをつくる - 大学のdalmoreサーバーでやると便利 - 結構パワーが必要なので、ansibleのファイルにある通りVMの設定を書き換える - CPUのコア数を8コア - HDDの容量を30GBは確保する - cpuのコア数はvirshのxmlを書き換える - HDDの容量は、qemu-imgでresizeしたあとに、VMにログインしてファイルシステムを拡張する - ここまで準備が出来たら実行可能! VMのmac addressをakatsukiに登録して、別のマシンから以下のコマンドでansibleを実行する - 実行する前にVMのipを書いたhostsファイルを用意する - main.ymlのユーザー名を変更するなどもしておく ``` $screen -L ansible-playbook -i hosts main.yml --ask-become-pass ``` - 完了したらビルドしたファイルをyomitanなどに転送する ``` ssh localhost -p 2222 -l root 'cd /usr/src/kernels ; tar czf - fedora' | dd of=fedora26-kernel.tgz ``` - ここのlocalhostはVMのIPとかに変えておこう。あとユーザーとかもそんな感じで... ## 起動するkernelを切り替える - ansibleをかけただけでは、VMが起動するkernelが切り替わってないので切り替える必要がある - ちまたでは`awk`を使って番号を決めて`grub2-`で解決する方法が出回っている - 最近のFedoraでは `grub2.config`をいくらgrepしてもkernel情報が乗ってない - 最近のfedoraでは次の通りにする ### kernelの変更 - `$ grubby --info=ALL` を実行して、切り替えたいkernelを探す - `$grubby --set-default /boot/vmlinuz-4.2.0-1.fc23.x86_64`で切り替える ### 参考 - [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/) ## gdbでdebugするには(学内限定) 1. debugしたいvmを`ie-virsh define-gdb`でdefineしなおす - すでにdefineしていたらundefineする - gdbのportが開放されたxmlファイルが生成される 2. `ie-virsh dumpxml 04(defineした番号)`で、gdbのportを確認する 3. `ie-virsh strart 04`して起動する 4. kernelから転送したvmlinuxをgdbで `gdb vmlinux`する 5. breakpointを設定する 6. `target remote localhost:(確認したport)`にするとVMに接続される 7. `c`してあとは自由に!! # Tips - dalmoreのvirshのxmlを書き換えるにはroot権限が必要