13e12c5d1SDavid du Colombier#!/bin/rc 23e12c5d1SDavid du Colombier# 33e12c5d1SDavid du Colombier# this file configures a boot program (/boot) for a kernel. 43e12c5d1SDavid du Colombier# 53e12c5d1SDavid du Colombierif(! ~ $#* 1){ 63e12c5d1SDavid du Colombier echo usage: mkboot file >[1=2] 73e12c5d1SDavid du Colombier exit 1 83e12c5d1SDavid du Colombier} 93e12c5d1SDavid du Colombier 103e12c5d1SDavid du Colombiercat <<'---' 113e12c5d1SDavid du Colombier#include <u.h> 123e12c5d1SDavid du Colombier#include <libc.h> 133e12c5d1SDavid du Colombier#include "../boot/boot.h" 143e12c5d1SDavid du Colombier 153e12c5d1SDavid du ColombierMethod method[]={ 163e12c5d1SDavid du Colombier--- 173e12c5d1SDavid du Colombier 183e12c5d1SDavid du Colombier# 193e12c5d1SDavid du Colombier# configure all remote methods, i.e. all methods in the 'boot' section 203e12c5d1SDavid du Colombier# 213e12c5d1SDavid du Colombier# EXAMPLE 223e12c5d1SDavid du Colombier# boot 233e12c5d1SDavid du Colombier# incon 243e12c5d1SDavid du Colombier# 9600 253e12c5d1SDavid du Colombier# 19200 263e12c5d1SDavid du Colombier# 273e12c5d1SDavid du Colombier../port/mkextract boot 0 $* | awk '{ 283e12c5d1SDavid du Colombier printf " { \"" "" $1 "\", "\ 293e12c5d1SDavid du Colombier "config" $1 ", "\ 303e12c5d1SDavid du Colombier "connect" $1 ", " 313e12c5d1SDavid du Colombier print fieldn(2) " }," 323e12c5d1SDavid du Colombier } 333e12c5d1SDavid du Colombier 343e12c5d1SDavid du Colombier func fieldn(n, s,i) 353e12c5d1SDavid du Colombier { 363e12c5d1SDavid du Colombier s = $0 373e12c5d1SDavid du Colombier while (n > 1) { 383e12c5d1SDavid du Colombier sub(/^[ \t]*/, "", s) 393e12c5d1SDavid du Colombier if (substr(s, 1, 1) == "\"") { 403e12c5d1SDavid du Colombier sub(/^"[^\"]*"/, "", s) 413e12c5d1SDavid du Colombier } else { 423e12c5d1SDavid du Colombier sub(/^[^ \t]*/, "", s) 433e12c5d1SDavid du Colombier } 443e12c5d1SDavid du Colombier n-- 453e12c5d1SDavid du Colombier } 463e12c5d1SDavid du Colombier sub(/^[ \t]*/, "", s) 473e12c5d1SDavid du Colombier if (substr(s, 1, 1) == "\"") { 483e12c5d1SDavid du Colombier i = index(substr(s, 2), "\"") 493e12c5d1SDavid du Colombier if (i > 0) 503e12c5d1SDavid du Colombier return substr(s, 1, i+1) 513e12c5d1SDavid du Colombier else 523e12c5d1SDavid du Colombier return s 533e12c5d1SDavid du Colombier } else { 543e12c5d1SDavid du Colombier sub(/[ \t].*/, "", s) 553e12c5d1SDavid du Colombier return s 563e12c5d1SDavid du Colombier } 573e12c5d1SDavid du Colombier }' 583e12c5d1SDavid du Colombier 593e12c5d1SDavid du Colombiercat <<'---' 603e12c5d1SDavid du Colombier { 0 }, 613e12c5d1SDavid du Colombier}; 623e12c5d1SDavid du Colombier--- 633e12c5d1SDavid du Colombier 643e12c5d1SDavid du Colombierawk ' 657dd7cddfSDavid du Colombier BEGIN { cpuflag = 0; bootprog = "boot"; bootdisk = "#S/sdC0/"; rootdir = "/root"; } 669a747e4fSDavid du Colombier $0 ~ "^boot" && $2=="cpu"\ 677dd7cddfSDavid du Colombier { cpuflag = 1 687dd7cddfSDavid du Colombier if(NF == 4 && $3 == "boot") 697dd7cddfSDavid du Colombier bootdisk = $4 707dd7cddfSDavid du Colombier } 717dd7cddfSDavid du Colombier $0 ~ "^boot" && $2=="rootdir" && NF==3\ 727dd7cddfSDavid du Colombier { rootdir = $3 } 73bd389b36SDavid du Colombier $0 ~ "^boot" && ($2=="bboot" || $2=="romboot" || $2=="dosboot")\ 743e12c5d1SDavid du Colombier { cpuflag = 1; bootprog = $2; } 757dd7cddfSDavid du Colombier $0 ~ "^boot" && $2=="boot" && NF==3\ 763e12c5d1SDavid du Colombier { bootdisk = $3 } 773e12c5d1SDavid du Colombier END { print "int cpuflag = " cpuflag ";" 787dd7cddfSDavid du Colombier print "char* rootdir = \"" rootdir "\";" 793e12c5d1SDavid du Colombier print "char* bootdisk = \"" bootdisk "\";" 803e12c5d1SDavid du Colombier print "extern void " bootprog "(int, char**);" 813e12c5d1SDavid du Colombier print "void" 823e12c5d1SDavid du Colombier print "main(int argc, char **argv)" 833e12c5d1SDavid du Colombier print "{" 843e12c5d1SDavid du Colombier print "\t" bootprog "(argc, argv);" 853e12c5d1SDavid du Colombier print "}" 863e12c5d1SDavid du Colombier } 873e12c5d1SDavid du Colombier' $1 883e12c5d1SDavid du Colombier 893e12c5d1SDavid du Colombier# 906b6b9ac8SDavid du Colombier# configure in a cache file system if a 91*97bff0f0SDavid du Colombier# /386/bin/root appears in the bootdir section. 923e12c5d1SDavid du Colombier# 936b6b9ac8SDavid du Colombier../port/mkextract bootdir 0 $* | awk ' 943e12c5d1SDavid du Colombier BEGIN { cfs = 0 } 956b6b9ac8SDavid du Colombier $1 ~ "bin/cfs$" { cfs = 1 } 963e12c5d1SDavid du Colombier END { if(cfs) 973e12c5d1SDavid du Colombier print "int (*cfs)(int) = cache;" 983e12c5d1SDavid du Colombier else 993e12c5d1SDavid du Colombier print "int (*cfs)(int) = 0;" 1003e12c5d1SDavid du Colombier } 1013e12c5d1SDavid du Colombier ' 102