FedoraでLinuxのkernelをdebug buildする

FedoraでLinuxのkernelをdebug buildする

  • linuxをgdbでデバッグトレースしたい!!
  • ansibleがなんとあるので使うといい感じにできる

# ansible

# 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のユーザー名を変更するなどもしておく
1
$screen -L  ansible-playbook -i hosts main.yml --ask-become-pass
  • 完了したらビルドしたファイルをyomitanなどに転送する
1
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で切り替える

# 参考

# 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権限が必要
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy