[augeas-devel] [PATCH] Add support for additional grub options

Sean E. Millichamp sean at bruenor.org
Thu Sep 18 12:52:48 UTC 2008


Attached is a simple patch to allow parsing of the "serial" and
"terminal" grub.conf options (probably used primarily in serial console
setups).

Sean

-------------- next part --------------
module Grub =
  autoload xfm

    (* This only covers the most basic grub directives. Needs to be *)
    (* expanded to cover more (and more esoteric) directives        *)
    (* It is good enough to handle the grub.conf on my Fedora 8 box *)

    let value_to_eol = store /[^= \t][^\n]*/
    let eol = Util.del_str "\n"
    let del_to_eol = del /[^\n]*/ ""
    let value_sep (dflt:string) = del /[ \t]*[ \t=][ \t]*/ dflt

    let kw_arg (kw:string) (indent:string) (dflt_sep:string) =
      [ Util.del_opt_ws indent . key kw . value_sep dflt_sep
          . value_to_eol . eol ]

    let kw_boot_arg (kw:string) = kw_arg kw "\t" " "
    let kw_menu_arg (kw:string) = kw_arg kw "" "="

    let kw_pres (kw:string) = [ key kw . del_to_eol . eol ]

    let menu_setting = kw_menu_arg "default"
                     | kw_menu_arg "fallback"
                     | kw_pres "hiddenmenu"
                     | kw_menu_arg "timeout"
                     | kw_menu_arg "splashimage"
                     | kw_menu_arg "serial"
                     | kw_menu_arg "terminal"

    let title = del /title[ \t]+/ "title " . value_to_eol . eol

    let module_lines = [ label "modules" .
                            Util.del_ws "\t" .
                             Util.del_str "module" . Util.del_ws_spc
                             . value_to_eol . eol ]

    let boot_setting = kw_boot_arg "root"
                     | kw_boot_arg "kernel"
                     | kw_boot_arg "initrd"
                     | kw_pres "quiet"  (* Seems to be a Ubuntu extension *)
                     | module_lines

    let boot = [ label "title" . title . boot_setting* ]

    let comment = [ del /(#.*|[ \t]*)\n/ "#\n" ]

    let lns = (comment | menu_setting | boot)*
    let xfm = transform lns (incl "/etc/grub.conf")


More information about the augeas-devel mailing list