ref: 925b8e611e2ad1535e8e0e3eb9f3cf8dc6b3b743
parent: a1c6530959a71ead8cd26a15dfed1fd88514f610
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Wed Feb 7 13:18:32 EST 2018
fstype: make copy of first sector in /env to avoid unaligned reads on the disk (for devfs) devfs crypto partitions do not support unaligned reads, so we make a copy of the first in /env/block and then slice it to find filesystem signatures. thanks mykhal for reporting the issue.
--- a/rc/bin/fstype
+++ b/rc/bin/fstype
@@ -6,15 +6,16 @@
echo 9660
exit
}
+dd -if $1 -count 1 >/env/block >[2]/dev/null
fn fat {- m=`{dd -if $1 -bs 1 -count 3 -skip $2 >[2]/dev/null}+ m=`{dd -if /env/block -bs 1 -count 3 -skip $1 >[2]/dev/null}~ $"m FAT
}
-if(fat $1 54 || fat $1 82){+if(fat 54 || fat 82){echo dos
exit
}
-m=`{dd -if $1 -bs 4 -count 1 >[2]/dev/null | xd | sed 's,0000000 ,,;q'}+m=`{dd -if /env/block -bs 4 -count 1 >[2]/dev/null | xd | sed 's,0000000 ,,;q'} if(~ $"m 529ab12b){echo paqfs
exit
@@ -23,13 +24,12 @@
echo hjfs
exit
}
-m=`{dd -if $1 -bs 16 -count 1 -skip 16 >[2]/dev/null}+m=`{dd -if /env/block -bs 16 -count 1 -skip 16 >[2]/dev/null} if(~ $"m 'kfs wren device'){echo kfs
exit
}
-dd -if $1 -count 1 >[2]/dev/null | \
-awk '
+</env/block awk '
/^(blocksize|daddrbits|daddrbits|indirblks|dirblks|namelen)/{p[$1]=$2} END{ca["fs", "blocksize"] = 4*1024
--
⑨