add fstype command to detect 9660, kfs and cwfs filesystems
This commit is contained in:
parent
a7db29c663
commit
19a82a2654
3 changed files with 73 additions and 14 deletions
57
rc/bin/fstype
Executable file
57
rc/bin/fstype
Executable file
|
@ -0,0 +1,57 @@
|
||||||
|
#!/bin/rc
|
||||||
|
m=`{dd -if $1 -bs 2048 -skip 16 >[2]/dev/null | xd -c | sed 1q | \
|
||||||
|
sed 's/.........(....................).*/\1/; s/ //g'}
|
||||||
|
if(~ $"m 01CD00101){
|
||||||
|
echo 9660
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
dd -if $1 -count 1 >[2]/dev/null | \
|
||||||
|
awk '
|
||||||
|
/^kfs/{fs["kfs"]++}
|
||||||
|
/^(blocksize|daddrbits|daddrbits|indirblks|dirblks|namelen)/{p[$1]=$2}
|
||||||
|
END{
|
||||||
|
ca["fs", "blocksize"] = 4*1024
|
||||||
|
ca["fs", "namelen"] = 28
|
||||||
|
ca["fs", "dirblks"] = 6
|
||||||
|
ca["fs", "indirblks"] = 2
|
||||||
|
ca["fs", "daddrbits"] = 32
|
||||||
|
|
||||||
|
ca["fs64", "blocksize"] = 8*1024
|
||||||
|
ca["fs64", "namelen"] = 56
|
||||||
|
ca["fs64", "dirblks"] = 6
|
||||||
|
ca["fs64", "indirblks"] = 4
|
||||||
|
ca["fs64", "daddrbits"] = 64
|
||||||
|
|
||||||
|
ca["cwfs", "blocksize"] = 16*1024
|
||||||
|
ca["cwfs", "namelen"] = 28
|
||||||
|
ca["cwfs", "dirblks"] = 6
|
||||||
|
ca["cwfs", "indirblks"] = 2
|
||||||
|
ca["cwfs", "daddrbits"] = 32
|
||||||
|
|
||||||
|
ca["cwfs64", "blocksize"] = 16*1024
|
||||||
|
ca["cwfs64", "namelen"] = 56
|
||||||
|
ca["cwfs64", "dirblks"] = 6
|
||||||
|
ca["cwfs64", "indirblks"] = 4
|
||||||
|
ca["cwfs64", "daddrbits"] = 64
|
||||||
|
|
||||||
|
ca["cwfs64x", "blocksize"] = 16*1024
|
||||||
|
ca["cwfs64x", "namelen"] = 144
|
||||||
|
ca["cwfs64x", "dirblks"] = 6
|
||||||
|
ca["cwfs64x", "indirblks"] = 4
|
||||||
|
ca["cwfs64x", "daddrbits"] = 64
|
||||||
|
|
||||||
|
for(e in ca){
|
||||||
|
split(e, k, SUBSEP)
|
||||||
|
if(ca[k[1],k[2]] == p[k[2]])
|
||||||
|
fs[k[1]]++
|
||||||
|
}
|
||||||
|
for(i in fs)
|
||||||
|
if(fs[i] > fs[j])
|
||||||
|
j=i
|
||||||
|
if(fs[j]){
|
||||||
|
print j
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
'
|
|
@ -3,11 +3,13 @@
|
||||||
fn showlocaldevs{
|
fn showlocaldevs{
|
||||||
echo local devices found:
|
echo local devices found:
|
||||||
for(c in /dev/sd*/ctl){
|
for(c in /dev/sd*/ctl){
|
||||||
d=`{echo $c | sed 's,/ctl,,g'}
|
if(test -r $c){
|
||||||
echo $d':' `{sed 's/inquiry[ ]+//g; q' $c}
|
d=`{echo $c | sed 's,/ctl,,g'}
|
||||||
for(i in `{ls -p $d | grep -v -e 'ctl|raw'})
|
echo $d':' `{sed 's/inquiry[ ]+//g; q' $c}
|
||||||
echo $d'/'$i
|
for(i in `{ls -p $d | grep -v -e 'ctl|raw'})
|
||||||
echo
|
echo $d'/'$i `{fstype $d'/'$i}
|
||||||
|
echo
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,16 +26,15 @@ fn configlocal{
|
||||||
}
|
}
|
||||||
|
|
||||||
fn connectlocal{
|
fn connectlocal{
|
||||||
part=`{echo $* | sed 's,.*/([^ ]+),\1,g'}
|
t=`{fstype $1}
|
||||||
part=$part(1)
|
if(~ $#t 0)
|
||||||
switch($part){
|
fatal unknown fstype $1
|
||||||
case kfs fs
|
switch($t){
|
||||||
must disk/kfs -n boot -f $*
|
case 9660
|
||||||
case cwfs fscache fsworm w0 w1 w2 w3
|
|
||||||
must cwfs64x -n boot -f $*
|
|
||||||
case data
|
|
||||||
must 9660srv -f $* boot
|
must 9660srv -f $* boot
|
||||||
|
case kfs
|
||||||
|
must disk/kfs -n boot -f $*
|
||||||
case *
|
case *
|
||||||
fatal unknown partition $part
|
must $t -n boot -f $*
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,6 +39,7 @@ rc
|
||||||
local.rc 555 sys sys ../boot/local.rc
|
local.rc 555 sys sys ../boot/local.rc
|
||||||
tcp.rc 555 sys sys ../boot/tcp.rc
|
tcp.rc 555 sys sys ../boot/tcp.rc
|
||||||
bin
|
bin
|
||||||
|
fstype
|
||||||
diskparts
|
diskparts
|
||||||
bootrc 555 sys sys ../boot/bootrc
|
bootrc 555 sys sys ../boot/bootrc
|
||||||
tmp
|
tmp
|
||||||
|
|
Loading…
Reference in a new issue