***dmassage 
#author("2023-06-05T09:29:08+09:00;2005-10-01T11:29:20+09:00","default:kaw","kaw")
***dmassage [#z70d02bf]
kernelの構成を最適化するツール。
同様なツールでは、NetBSDにadjustkernelというのがあるらしい。

kernel configファイルと、dmesgの出力を読み込み、
認識されなかったデバイスをコメントアウトしたものを出力する。

http://www.sentia.org/projects/dmassage/
/// http://www.sentia.org/projects/dmassage/
 # pkg_add dmassage

また、デバイスの認識の様子をツリー上に表示する機能も付いている。
 # sysctl kern.version
 kern.version=OpenBSD 3.6-current (NIMBUS4) #16: Fri Feb 11 15:21:52 JST 2005
     kaw@nimbus4.localnet:/usr/src/sys/arch/i386/compile/NIMBUS4
 
 # /usr/local/sbin/dmassage -t
 root
  \-mainbus0
     |-bios0
     |-cpu0
     \-isa0
        |-fdc0
        |  \-fd0
        |-isadma0
        |-npx0
        |-pcic0
        |  |-pcmcia0
        |  |  \-ne0
        |  \-pcmcia1
        |-pckbc0
        |  \-pckbd0
        |     \-wskbd0
        |-vga0
        |  \-wsdisplay0
        \-wdc0
           \-wd0

*** adjkrn.awk 
*** adjkrn.awk [#j66cb9e4]
同じような働きをするコマンドをawkで書いてみた((元々は、PerlがバンドルされていないNetBSD用に書いて、某掲示板に投稿したもの))。
 #!/usr/bin/awk -f 
 
 BEGIN {
   FS = "[^?*0-9a-z][^?*0-9a-z]*"
 }
 
 {
   if ((pfn != "") && (pfn != FILENAME))
     fchg = 1
   pfn = FILENAME
 }
 
 $2 == "at" {
   if (fchg != 1) {
     if (DEBUG==1) {
        print "#D found: " $1 " at " $3
     }
     lookups[$1 "," $3] = $1 "," $3
   } else {
     dev=$1;  sub("[?*][?*]*", "[0-9][0-9]*", dev)
     pdev=$3; sub("[?*][?*]*", "[0-9][0-9]*", pdev)
     devfound = 0
     for (fdev in lookups) {
       if ((pdev == "root") || (fdev ~ "^" dev "," pdev)) {
         if (DEBUG==1) {
           print "#D--------------------------------------"
           print "#D " fdev " matched to " dev " at " pdev
           print "#D"
         }
         devfound = 1
         break
       }
     }
     if (devfound != 1)
       $0 = "#X " $0
   }
 }
 
 fchg == 1 {
     print
 }
使用方法
>''awk -f adjkrn.awk ''['' -v DEBUG=1 ''] '''dmesg-file''' '''config-file''' ''>'' '''output-file'''

dmesgの出力('''dmesg-file''') と '''config-file''' は、かならずこの順番で指定すること。
>''(dmesg ; cat'' '''config-file''' '') | awk -f adjkrn.awk ''['' -v DEBUG=1 ''] ''>'' '''output-file'''

などと実行してもよい。

''-v DEBUG=1''を指定すると、デバッグのため、動作(メッセージの認識状況)を出力にコメントの形で書き込む。
----
[[FrontPage]]

Front page   Edit Diff History Attach Copy Rename Reload   New Page list Search Recent changes   Help   RSS of recent changes