From owner-FreeBSD-users-jp@jp.freebsd.org  Tue Apr 23 21:39:45 1996
Received: by mail.jp.freebsd.org (8.7.3+2.6Wbeta5/8.7.3) id VAA04667
	Tue, 23 Apr 1996 21:39:45 +0900 (JST)
Received: by mail.jp.freebsd.org (8.7.3+2.6Wbeta5/8.7.3) with SMTP id VAA04662
	for <FreeBSD-users-jp@jp.freebsd.org>; Tue, 23 Apr 1996 21:39:43 +0900 (JST)
Received: from localhost.apphy.fukui-u.ac.jp (localhost.apphy.fukui-u.ac.jp [127.0.0.1]) by pollen.apphy.fukui-u.ac.jp (8.6.12/8.6.12) with SMTP id VAA29126 for <FreeBSD-users-jp@jp.freebsd.org>; Tue, 23 Apr 1996 21:45:49 +0900
Message-Id: <199604231245.VAA29126@pollen.apphy.fukui-u.ac.jp>
X-Authentication-Warning: pollen.apphy.fukui-u.ac.jp: Host localhost.apphy.fukui-u.ac.jp didn't use HELO protocol
To: FreeBSD-users-jp@jp.freebsd.org
From: Takaaki Hashimoto <d901005@icpc00.icpc.fukui-u.ac.jp>
In-reply-to: Your message of "Tue, 23 Apr 1996 17:00:44 JST."
             <199604230800.RAA03383@weyl.math.tsukuba.ac.jp> 
Date: Tue, 23 Apr 1996 21:45:39 +0900
Reply-To: FreeBSD-users-jp@jp.freebsd.org
X-Distribute: distribute [version 2.1 (Alpha) patchlevel=19]
X-Sequence: FreeBSD-users-jp 1229
Subject: [FreeBSD-users-jp 1229] Re: How to newfs MO on FreeBSD 2.0.5(98) 
Errors-To: owner-FreeBSD-users-jp@jp.freebsd.org
Sender: owner-FreeBSD-users-jp@jp.freebsd.org


$@66K\!wJ!0fBg3X$G$9!#(J

$@0J2<$N(J perl $@%9%/%j%W%H$G$3$A$i$G$O$&$^$/(J
newfs $@$^$G=PMh!"(Jmount $@$G$-$F$$$^$9!#(J
FreeBSD 2.1 $@$G$9$,!";29M$^$G$K!#(J

sd# $@$r@_Dj$7!"(J
$@:G=i$N(J exit $@$H(J
#&fdisk ;
#&disklabel ;
#&newfs ;
$@$N!t$r$O$:$7$F$/$@$5$$!#(J

'./disktab_tmp'
'fdisk.expect'

$@$H$$$&%U%!%$%kL>$N0l;~%U%!%$%k$r:n@.$7$^$9!#(J

===========================================

#!/usr/local/bin/perl

$DISK = sd# ;

print 'CHECK $DISK FIRST !!!' , "\n" ;
print 'Now $DISK is : ' , $DISK , "\n" ;

exit ;

$CYL = 217 ;
$HEAD = 64 ;
$SEC = 32 ;

$ACTIV = 0 ;

$ROOT =      0 ;
$SWAP =      0 ;
$VAR  =      0 ;
$USR  =      0 ;
$HOME = remain ;

#&fdisk ;
#&disklabel ;
#&newfs ;

exit ;

sub newfs {
   open ( DISKLABEL , " disklabel $DISK | " ) ;
   @DISKLABEL = <DISKLABEL> ;
   @BSD_FILE_SYS = grep ( /4.2BSD/ , @DISKLABEL ) ;
   foreach $BSD_FILE_SYS ( @BSD_FILE_SYS ) {
      @SLICE = split ( ' ' , $BSD_FILE_SYS ) ;
      $SLICE = join ( '' , @SLICE ) ;
      @SLICE = split ( ':' , $SLICE ) ;
      $RDEV = '/dev/r' . $DISK . $SLICE[0] ;
      system ( "/sbin/newfs $RDEV" ) ;
   }
}

sub disklabel {
   $TMP_FILE = './disktab_tmp' ;
   $DISK_TYPE = 'disk' ;
   open ( DISKTAB_TMP , ">$TMP_FILE" ) ;
   $TOTAL_SIZE = $CYL * $HEAD * $SEC ;
   $START = $SEC ;
   $SIZE = $TOTAL_SIZE - $START ;
   $USR = $SIZE - $ROOT - $SWAP - $VAR - $HOME if $USR eq 'remain' ;
   $HOME = $SIZE - $ROOT - $SWAP - $VAR - $USR if $HOME eq 'remain' ;
   $ROOT_OFF = 0 ;
   $SWAP_OFF = $ROOT ;
   $SWAP_OFF = 0 if $SWAP == 0 ;
   $VAR_OFF = $ROOT + $SWAP ;
   $VAR_OFF = 0 if $VAR == 0 ;
   $USR_OFF = $ROOT + $SWAP + $VAR ;
   $USR_OFF = 0 if $USR == 0 ;
   $HOME_OFF = $ROOT + $SWAP + $VAR + $USR ;
   $HOME_OFF = 0 if $HOME == 0 ;
   $DISKTAB_TMP = <<"-*-END-*-" ;
$DISK_TYPE|DISK: \\
	:dt=SCSI:ty=winchester: \\
	:se#512:ns#$SEC:nt#$HEAD:nc#$CYL: \\
	:pa#$ROOT:oa#$ROOT_OFF:fa#1024:ba#8192:ta=4.2BSD: \\
	:pb#$SWAP:ob#$SWAP_OFF: \\
	:pc#$SIZE:oc#0: \\
	:pd#$SIZE:od#0: \\
	:pe#$VAR:oe#$VAR_OFF:fe#1024:be#8192:te=4.2BSD: \\
	:pf#$USR:of#$USR_OFF:ff#1024:bf#8192:tf=4.2BSD: \\
	:ph#$HOME:oh#$HOME_OFF:fh#1024:bh#8192:th=4.2BSD:
-*-END-*-
   print DISKTAB_TMP $DISKTAB_TMP ;
#   print $DISKTAB_TMP ;
#   exit ;
   close ( DISKTAB_TMP ) ;
   system ( "/bin/cp /etc/disktab ./disktab.back" ) ;
   system ( "/bin/cp $TMP_FILE /etc/disktab" ) ;
   system ( "/sbin/disklabel -w -r $DISK $DISK_TYPE" ) ;
   system ( "/bin/cp ./disktab.back /etc/disktab" ) ;
   unlink ( $TMP_FILE ) ;
   system ( "/sbin/disklabel $DISK" ) ;
   system ( "/sbin/disklabel -B $DISK" ) ;
}

sub fdisk {
   $SYSID = 165 ; # FreeBSD
   $TOTAL_SIZE = $CYL * $HEAD * $SEC ;
   $START = $SEC ;
   $SIZE = $TOTAL_SIZE - $START ;
   $BCYL = 0 ;
   $BHEAD = 1 ; # skip
   $BSEC = 1 ; # skip
   $ECYL = $CYL - 1 ;
   $EHEAD = $HEAD - 1 ;
   $ESEC = $SEC ;
   $TMP_FILE = 'fdisk.expect' ;
   open ( FDISK , ">$TMP_FILE" ) ;
   $FDISK = <<"-*-END-*-" ;
#!/usr/local/bin/expect
spawn fdisk -u $DISK
set timeout -1
expect {*change*}
send "y\\n"
expect {*cylinders*}
send "$CYL\\n"
expect {*heads*}
send "$HEAD\\n"
expect {*sectors*}
send "$SEC\\n"
expect {*choice*}
send "y\\n"
expect {*0*}
send "y\\n"
expect {*sysid*}
send "$SYSID\\n"
expect {*start*}
send "$START\\n"
expect {*size*}
send "$SIZE\\n"
expect {*address*}
send "y\\n"
expect {*cylinder*}
send "$BCYL\\n"
expect {*head*}
send "$BHEAD\\n"
expect {*sector*}
send "$BSEC\\n"
expect {*cylinder*}
send "$ECYL\\n"
expect {*head*}
send "$EHEAD\\n"
expect {*sector*}
send "$ESEC\\n"
expect {*happy*}
send "y\\n"
expect {*change*}
send "y\\n"
expect {*sysid*}
send "0\\n"
expect {*start*}
send "0\\n"
expect {*size*}
send "0\\n"
expect {*address*}
send "y\\n"
expect {*cylinder*}
send "0\\n"
expect {*head*}
send "0\\n"
expect {*sector*}
send "0\\n"
expect {*cylinder*}
send "0\\n"
expect {*head*}
send "0\\n"
expect {*sector*}
send "0\\n"
expect {*happy*}
send "y\\n"
expect {*change*}
send "y\\n"
expect {*sysid*}
send "0\\n"
expect {*start*}
send "0\\n"
expect {*size*}
send "0\\n"
expect {*address*}
send "y\\n"
expect {*cylinder*}
send "0\\n"
expect {*head*}
send "0\\n"
expect {*sector*}
send "0\\n"
expect {*cylinder*}
send "0\\n"
expect {*head*}
send "0\\n"
expect {*sector*}
send "0\\n"
expect {*happy*}
send "y\\n"
expect {*change*}
send "y\\n"
expect {*sysid*}
send "0\\n"
expect {*start*}
send "0\\n"
expect {*size*}
send "0\\n"
expect {*address*}
send "y\\n"
expect {*cylinder*}
send "0\\n"
expect {*head*}
send "0\\n"
expect {*sector*}
send "0\\n"
expect {*cylinder*}
send "0\\n"
expect {*head*}
send "0\\n"
expect {*sector*}
send "0\\n"
expect {*happy*}
send "y\\n"
expect {*active*}
send "y\\n"
expect {*value*}
send "$ACTIV\\n"
expect {*happy*}
send "y\\n"
expect {*write*}
send "y\\n"
interact
-*-END-*-
   print FDISK $FDISK ;
   close ( FDISK ) ;
   chmod ( 0700 , $TMP_FILE ) ;
   system ( "./$TMP_FILE" ) ;
#   unlink ( $TMP_FILE ) ;
}

#$ROOT =  65536 ;
#$SWAP = 153792 ;
#$VAR  =  61440 ;
#$USR  = remain ;
#$HOME =      0 ;

