123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- #!/bin/rc
- #
- # this file configures a boot program (/boot) for a kernel.
- #
- if(! ~ $#* 1){
- echo usage: mkboot file >[1=2]
- exit 1
- }
- cat <<'---'
- #include <u.h>
- #include <libc.h>
- #include "../boot/boot.h"
- Method method[]={
- ---
- #
- # configure all remote methods, i.e. all methods in the 'boot' section
- #
- # EXAMPLE
- # boot
- # incon
- # 9600
- # 19200
- #
- ../port/mkextract boot 0 $* | awk '{
- printf " { \"" "" $1 "\", "\
- "config" $1 ", "\
- "connect" $1 ", "
- print fieldn(2) " },"
- }
- func fieldn(n, s,i)
- {
- s = $0
- while (n > 1) {
- sub(/^[ \t]*/, "", s)
- if (substr(s, 1, 1) == "\"") {
- sub(/^"[^\"]*"/, "", s)
- } else {
- sub(/^[^ \t]*/, "", s)
- }
- n--
- }
- sub(/^[ \t]*/, "", s)
- if (substr(s, 1, 1) == "\"") {
- i = index(substr(s, 2), "\"")
- if (i > 0)
- return substr(s, 1, i+1)
- else
- return s
- } else {
- sub(/[ \t].*/, "", s)
- return s
- }
- }'
- cat <<'---'
- { 0 },
- };
- ---
- awk '
- BEGIN { cpuflag = 0; bootprog = "boot"; bootdisk = "#S/sdC0/"; rootdir = "/root"; }
- $0 ~ "^boot" && $2=="cpu"\
- { cpuflag = 1
- if(NF == 4 && $3 == "boot")
- bootdisk = $4
- }
- $0 ~ "^boot" && $2=="rootdir" && NF==3\
- { rootdir = $3 }
- $0 ~ "^boot" && ($2=="bboot" || $2=="romboot" || $2=="dosboot")\
- { cpuflag = 1; bootprog = $2; }
- $0 ~ "^boot" && $2=="boot" && NF==3\
- { bootdisk = $3 }
- END { print "int cpuflag = " cpuflag ";"
- print "char* rootdir = \"" rootdir "\";"
- print "char* bootdisk = \"" bootdisk "\";"
- print "extern void " bootprog "(int, char**);"
- print "void"
- print "main(int argc, char **argv)"
- print "{"
- print "\t" bootprog "(argc, argv);"
- print "}"
- }
- ' $1
- #
- # configure in a cache file system if a
- # /386/bin/root appears in the bootdir section.
- #
- ../port/mkextract bootdir 0 $* | awk '
- BEGIN { cfs = 0 }
- $1 ~ "bin/cfs$" { cfs = 1 }
- END { if(cfs)
- print "int (*cfs)(int) = cache;"
- else
- print "int (*cfs)(int) = 0;"
- }
- '
|