mountkfs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #!/bin/rc
  2. # desc: choose and mount file system partition
  3. switch($1){
  4. case go
  5. echo 'The following partitions named fs* were found.'
  6. echo
  7. echo 'Please choose one to use as the installation file system'
  8. echo 'for your Plan 9 installation.'
  9. echo
  10. files=(`{ls /dev/sd*/fs* /dev/fs/fs* >[2]/dev/null})
  11. ls -l $files
  12. echo
  13. if(~ $#files 1)
  14. default=(-d $files)
  15. if not
  16. default=()
  17. prompt $default 'Kfs partition to use for Plan 9 installation' $files
  18. fs=$rd
  19. export fs
  20. kname=`{kfsname $fs}
  21. doinit=(-rb8192)
  22. if(iskfs $fs){
  23. echo 'A Plan 9 kfs file system already exists on '^$fs^'.'
  24. echo 'Do you want to wipe it clean?'
  25. echo
  26. prompt -d keep 'Wipe the Plan 9 file system clean' keep wipe
  27. switch($rd){
  28. case keep
  29. doinit=()
  30. }
  31. }
  32. log Starting kfs file server for $fs
  33. unmount /n/kfs >[2]/dev/null
  34. disk/kfscmd -n $kname halt >[2]/dev/null
  35. rm -f /srv/kfs.$kname /srv/kfs.$kname.cmd
  36. logprog disk/kfs -n $kname $doinit -f $fs
  37. disk/kfscmd -n $kname allow >>[2]/srv/log
  38. log Mounting kfs file server for $fs
  39. if(! logprog mount -c /srv/kfs.$kname /n/kfs){
  40. echo 'mounting kfs: '^$status
  41. exit oops
  42. }
  43. if(test -d /n/kfs/wrap){
  44. moveoldfs go
  45. if(test -d /n/kfs/wrap)
  46. exit cannotsmashold
  47. }
  48. if(! test -f /n/kfs/dist/replica/client/plan9.log){
  49. disk/kfscmd -n $kname 'create /dist sys sys 775 d'
  50. disk/kfscmd -n $kname 'create /dist/replica sys sys 775 d'
  51. disk/kfscmd -n $kname 'create /dist/replica/ndist sys sys 775'
  52. disk/kfscmd -n $kname 'create /dist/replica/client sys sys 775 d'
  53. disk/kfscmd -n $kname 'create /dist/replica/client/plan9.db sys sys 664'
  54. disk/kfscmd -n $kname 'create /dist/replica/client/plan9.log sys sys 664 a'
  55. }
  56. case checkready checkdone
  57. if(! test -f /dev/sd*/fs*){
  58. mountfs=notdone
  59. export mountfs
  60. exit
  61. }
  62. if(! ~ $#fs 1 || ! test -f $fs){
  63. mountfs=ready
  64. export mountfs
  65. exit
  66. }
  67. kname=`{kfsname $fs}
  68. if(! test -f /srv/kfs.$kname){
  69. disk/kfscmd -n $kname halt >[2]/dev/null
  70. rm -f /srv/kfs.$kname /srv/kfs.$kname.cmd
  71. logprog disk/kfs -n $kname -f $fs
  72. disk/kfscmd -n $kname allow >>[2]/srv/log
  73. }
  74. if(test -f /srv/kfs.$kname && ! test -f /n/kfs/dist/replica/client/plan9.log){
  75. log Mounting kfs file server for $fs
  76. if(! logprog mount -c /srv/kfs.$kname /n/kfs)
  77. echo 'mounting kfs: '^$status
  78. disk/kfscmd -n $kname allow >>[2]/srv/log
  79. }
  80. if(test -f /srv/kfs.$kname && test -f /n/kfs/dist/replica/client/plan9.log){
  81. mountfs=done
  82. export mountfs
  83. exit
  84. }
  85. mountfs=ready
  86. export mountfs
  87. exit
  88. }