Patch title: Release 94 bulk changes
Abstract:
File: /pliant/fullpliant/boot.pli
Key:
    Removed line
    Added line
   
abstract
  [This is the boot script for the FullPLiant operating syst

module "/pliant/language/context.pli"
module "/pliant/fullpliant/this_computer.pli"
module "/pliant/language/stream.pli"
module "/pliant/linux/storage/partition.pli"
module "/pliant/linux/storage/filesystem.pli"
module "/pliant/linux/network/boot.pli"
module "/pliant/linux/kernel/module.pli"
abstract
  [This is the boot script for the FullPLiant operating syst

module "/pliant/language/context.pli"
module "/pliant/fullpliant/this_computer.pli"
module "/pliant/language/stream.pli"
module "/pliant/linux/storage/partition.pli"
module "/pliant/linux/storage/filesystem.pli"
module "/pliant/linux/network/boot.pli"
module "/pliant/linux/kernel/module.pli"
module "/pliant/linux/kernel/device.pli"
module "/pliant/admin/file.pli"
module "/pliant/admin/execute.pli"
module "/pliant/admin/file.pli"
module "/pliant/admin/execute.pli"
module "/pliant/language/os.pli"


function boot
  plugin first


function boot
  plugin first
  console character:27+"[lb]9;0[rb]" # no console blanking
  console "This computer is "+computer_fullname eol
  if medium<>"nfs" and medium<>"cdrom"
    var Str root := this_computer:env:"partition":"root":"de
  console "This computer is "+computer_fullname eol
  if medium<>"nfs" and medium<>"cdrom"
    var Str root := this_computer:env:"partition":"root":"de
    var Int dev := (file_query "/" extended):options option "filesystem_device" Int
    if dev<>undefined
      var Array:FileInfo devs := file_list "file:/dev/" extended+recursive
      for (var Int i) 0 devs:size-1
        if (devs:i:options option "device" Int)=dev
          root := devs:i name
    if root<>""
      var CBool force_check := this_computer:env:"partition"
      console "Remounting / read write" (shunt checkdisk ", 
      if (filesystem_mount root "file:/" "remount"+(shunt ch
        console "Failed to remount / read write." eol
      if checkdisk
        file_delete "file:/boot/checkdisk.flag"
    else
      console "There is no root partition defined." eol
    if root<>""
      var CBool force_check := this_computer:env:"partition"
      console "Remounting / read write" (shunt checkdisk ", 
      if (filesystem_mount root "file:/" "remount"+(shunt ch
        console "Failed to remount / read write." eol
      if checkdisk
        file_delete "file:/boot/checkdisk.flag"
    else
      console "There is no root partition defined." eol
    # os_chroot "/"
    # os_chdir "/"
  (var Stream log) open "file:/log/pliant.log" append+safe
  log writeline "boot "+string:datetime
  log close
  (var Stream log) open "file:/log/pliant.log" append+safe
  log writeline "boot "+string:datetime
  log close
  console "Mounting /proc filesystem." eol
  if false # (file_query "file:/mnt/initrd/" standard+directories)=success
    console "Unmounting initrd filesystem." eol
    filesystem_dismount "file:/mnt/initrd/"
  console "Mounting /proc and /sys filesystems." eol
  if (filesystem_mount "file:proc" "file:/proc" "filesystem 
    console "Failed to mount /proc filesystem." eol
  else
    (var Stream s) open "file:/proc/sys/kernel/hostname" out
    s writeline computer_name
    s open "file:/proc/sys/kernel/domain" out+safe
    s writeline computer_domain
    s close
  if (filesystem_mount "file:proc" "file:/proc" "filesystem 
    console "Failed to mount /proc filesystem." eol
  else
    (var Stream s) open "file:/proc/sys/kernel/hostname" out
    s writeline computer_name
    s open "file:/proc/sys/kernel/domain" out+safe
    s writeline computer_domain
    s close
  if (file_query "file:/sys/" extended)=failure
    file_tree_create "file:/sys/"
  filesystem_mount "file:sys" "file:/sys" "filesystem [dq]sysfs[dq]"
  if true # adjust processor frequency
    if (this_computer:env:"hardware":"processor":"frequency" parse (var Float ghz))
      (var Stream s) open "file:/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed" out+safe
      s writeline (string 1000000*ghz)
      s close
    if (this_computer:env:"hardware":"processor":"frequency_minimum" parse (var Float ghz))
      (var Stream s) open "file:/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq" out+safe
      s writeline (string 1000000*ghz "fixed 0")
      s close
    if (this_computer:env:"hardware":"processor":"frequency_maximum" parse (var Float ghz))
      (var Stream s) open "file:/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq" out+safe
      s writeline (string 1000000*ghz "fixed 0")
      s close
  if true
    var Str scheduler := this_computer:env:"partition":"root":"linux_scheduler"
    var Str block := this_computer:env:"partition":"root":"device"
    while block:len>0 and (block block:len-1)>="0" and (block block:len-1)<="9"
      block := block 0 block:len-1
    block := block (block search_last "/" -1)+1 block:len
    (var Stream s) open "file:/sys/block/"+block+"/queue/scheduler" out+safe
    s writeline (shunt scheduler<>"" scheduler "cfq")
    s close
  if medium="cdrom"
    console "Mounting /tmp in a RAM filesystem" eol
    partition_format "device:/ram1" "ext2" "standard"
    if (filesystem_mount "device:/ram1" "file:/tmp" "")=fail
      console "Failed to mount /tmp in a RAM read write file
    console "Configuring kernel modules dependencies" eol
    execute "depmod -a -n" output "file:/tmp/modules.dep"
  else
    console "Configuring kernel modules dependencies" eol
    execute "depmod -a "
  plugin early
  each m this_computer:env:"module"
    console "Loading " m:"module" " kernel module" eol
  if medium="cdrom"
    console "Mounting /tmp in a RAM filesystem" eol
    partition_format "device:/ram1" "ext2" "standard"
    if (filesystem_mount "device:/ram1" "file:/tmp" "")=fail
      console "Failed to mount /tmp in a RAM read write file
    console "Configuring kernel modules dependencies" eol
    execute "depmod -a -n" output "file:/tmp/modules.dep"
  else
    console "Configuring kernel modules dependencies" eol
    execute "depmod -a "
  plugin early
  each m this_computer:env:"module"
    console "Loading " m:"module" " kernel module" eol
    kernel_load_module m:"module" m:"options"
    if (m:"sleep" parse (var Float seconds))
    if (kernel_load_module m:"module" m:"options")=success and (m:"sleep" parse (var Float seconds))
      sleep seconds
  console "Starting kernel helper daemons" eol
  if (file_query "file:/bin/irqbalance" standard)=defined
    console "  IRQ balancing" eol
    file_tree_create "file:/var/run/" # wallaround dirty Deb
    execute "irqbalance"
    file_delete "file:/var/run/irqbalance.pid"
    file_delete "file:/var/run/"
    file_delete "file:/var/"
  if (file_query "file:/bin/cardmgr" standard)=defined
    console "PCMCIA setup" eol
    execute "cardmgr -o -c /bin/pcmcia -p /tmp/cardmgr.pid -
  filesystem_scan
  each p this_computer:env:"partition"
    if p:"filesystem"="swap"
      execute "mkswap "+(file_os_name p:"device")
    eif p:"mountpoint"<>"" and p:"mountpoint"<>"file:/"
      var CBool force_check := p:"check"="true"
      console "Mounting "+keyof:p+" partition" eol
      if (filesystem_mount p:"device" p:"mountpoint" p:"opti
        console "Failed to mount "+keyof:p+" at "+p:"mountpo
  if embedded<>""
    module "embedded/boot.pli"
    embedded_boot1 this_computer
  net_boot
      sleep seconds
  console "Starting kernel helper daemons" eol
  if (file_query "file:/bin/irqbalance" standard)=defined
    console "  IRQ balancing" eol
    file_tree_create "file:/var/run/" # wallaround dirty Deb
    execute "irqbalance"
    file_delete "file:/var/run/irqbalance.pid"
    file_delete "file:/var/run/"
    file_delete "file:/var/"
  if (file_query "file:/bin/cardmgr" standard)=defined
    console "PCMCIA setup" eol
    execute "cardmgr -o -c /bin/pcmcia -p /tmp/cardmgr.pid -
  filesystem_scan
  each p this_computer:env:"partition"
    if p:"filesystem"="swap"
      execute "mkswap "+(file_os_name p:"device")
    eif p:"mountpoint"<>"" and p:"mountpoint"<>"file:/"
      var CBool force_check := p:"check"="true"
      console "Mounting "+keyof:p+" partition" eol
      if (filesystem_mount p:"device" p:"mountpoint" p:"opti
        console "Failed to mount "+keyof:p+" at "+p:"mountpo
  if embedded<>""
    module "embedded/boot.pli"
    embedded_boot1 this_computer
  net_boot
  (var Stream flag) open "file:/boot/boot.flag" out+safe ; f
  if (constant this_computer:env:"pliant":"browser":"console"="true")
    console "Configuring graphic console" eol
    kernel_load_module "uhci_hcd"
    kernel_load_module "usbkbd"
    kernel_make_device "device:/tty0"
    # kernel_make_device "device:/input/keyboard"
    kernel_load_module "usbmouse"
    kernel_make_device "device:/input/mice"
    # kernel_load_module "vesafb_tng"
    kernel_make_device "device:/fb0"
    module "/pliant/graphic/console/framebuffer_configure.pli"
    framebuffer_configure
  if (constant this_computer:env:"hardware":"audio":"module"<>"")
    module "/pliant/linux/multimedia/audio.pli"
    console "Audio setup" eol
    kernel_make_device "device:/dsp"
    kernel_make_device "device:/mixer"
    if embedded<>""
      kernel_make_device "embedded:/dev/dsp"
      file_rights "embedded:/dev/dsp" undefined undefined 6*64+6*8+6 0
      kernel_make_device "embedded:/dev/mixer"
      file_rights "embedded:/dev/mixer" undefined undefined 6*64+6*8+6 0
    kernel_load_module this_computer:env:"hardware":"audio":"module"
    kernel_load_module "snd_pcm_oss"
    if this_computer:env:"hardware":"audio":"volume"<>""
      (var Stream s) open "audio:" "volume "+this_computer:env:"hardware":"audio":"volume"+(shunt this_computer:env:"hardware":"audio":"mic_volume"<>"" " mic_volume "+this_computer:env:"hardware":"audio":"mic_volume" "") in+out+safe
      s close
boot


boot


function boot2
  module "/pliant/fullpliant/export.pli"
  if embedded<>""
    export_init
  if this_computer:env:"debian":"nfs":"service"="true"
    console "Starting NFS file sharing" eol
    export_nfs_start
  if this_computer:env:"debian":"samba":"service"="true"
    console "Starting Samba file sharing" eol
    export_samba_start
  if this_computer:env:"debian":"netatalk":"service"="true"
    console "Starting Netatalk file sharing" eol
    export_netatalk_start
  if (constant this_computer:env:"sip":"siproxd":"service"="true")
    var Str root := this_computer:env:"sip":"siproxd":"root"
    if root=""
      root := shunt (file_query "file:/bin/siproxd" standard)=success "file:/" "embedded:/"
    if not (this_computer:env:"sip":"siproxd":"user" parse (var Int uid))
      uid := os_getuid
    if not (this_computer:env:"sip":"siproxd":"group" parse (var Int gid))
      gid := os_getgid
    if (constant this_computer:env:"sip":"siproxd":"configure"="true")
      var Str inbound := this_computer:env:"sip":"siproxd":"if_inbound"
      var Str outbound := this_computer:env:"sip":"siproxd":"if_outbound"
      var Str reg := this_computer:env:"sip":"siproxd":"hosts_allow_reg"
      (var Stream s) open root+"etc/siproxd.conf" out+safe+mkdir
      s writeline "if_inbound = "+(shunt inbound<>"" inbound "eth1")
      s writeline "if_outbound = "+(shunt outbound<>"" outbound "eth0")
      s writeline "hosts_allow_reg = "+(shunt reg<>"" reg "10.0.0.0/8,192.168.0.0/16")
      s writeline "sip_listen_port = 5060"
      s writeline "daemonize = 1"
      s writeline "rtp_proxy_enable = 1"
      s writeline "rtp_port_low  = 7070"
      s writeline "rtp_port_high = 7079"
      s writeline "rtp_timeout = 300"
      s writeline "rtp_dscp = 46"
      s writeline "default_expires = 600"
      s close
    console "Starting SIP proxy" eol
    execute "siproxd" root root path root user uid group gid detached # output root+"tmp/siproxd.out" error root+"tmp/siproxd.err"
  (var Stream flag) open "file:/boot/boot.flag" out+safe ; flag close
boot2

if embedded<>""
  console "Booting embedded system" eol
  module "/pliant/language/stream/filesystembase.pli"
  module "/pliant/language/stream/multi.pli"
  pliant_multi_file_system mount "target:/" "embedded:/" pli
  module "embedded/configure.pli"
  embedded_configure this_computer false
  pliant_multi_file_system dismount "target:/"
  module "embedded/boot.pli"
  embedded_boot2 this_computer
if embedded<>""
  console "Booting embedded system" eol
  module "/pliant/language/stream/filesystembase.pli"
  module "/pliant/language/stream/multi.pli"
  pliant_multi_file_system mount "target:/" "embedded:/" pli
  module "embedded/configure.pli"
  embedded_configure this_computer false
  pliant_multi_file_system dismount "target:/"
  module "embedded/boot.pli"
  embedded_boot2 this_computer