***dmassage [#qebf0377]
 kernelの構成を最適化するツール。
 同様なツールでは、NetBSDにadjustkernelというのがあるらしい。
 
 kernel configファイルと、dmesgの出力を読み込み、
 認識されなかったデバイスをコメントアウトしたものを出力する。
 
 http://www.sentia.org/projects/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 [#o9e948b1]
 同じような働きをするコマンドを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]]
Reload  New Edit Diff Attach Copy Rename  Top Index Search Recent Backups  Help  RSS