[pkg-fso-maint] debian install.sh giving wrong partitioning sizes

Sam Tygier samtygier at yahoo.co.uk
Sat Sep 10 17:01:27 UTC 2011


On 10/09/11 08:05, Steffen Möller wrote:
> On 09/10/2011 12:09 AM, Sam Tygier wrote:
>> SHR has fdisk (util-linux-ng 2.18), which defaults to working in sectors. so fdisk asks for sectors, and install.sh replies in
>> cylinders.
>>
>> the quick fix on SHR seems to be to call fdisk with "fdisk /dev/mmcblk0 -u=cylinders", but this will probably give an error if you
>> do it on other fdisks. I could make a patch to to try to detect which fdisk is being used, and conditionally add the flag.
>>
>> it looks like in the future fdisk will use sectors, so the real solution is probably do the calculations in sectors. The "-u"
>> should make sure any fdisk version uses sectors.
>
> I recall many contributions from many sides to that part of install.sh. A varying behaviour of fdisk indeed explains a lot to me.
> This is why my desktop's fdisk (GNU Fdisk 1.2.4) gives me:
>
> 	-u, --sector-units
>                use sectors, instead of cylinders for a default unit.
> 	-C, --cylinders=CYLINDERS
>                Specify the number of cylinders of the disk. Currently does nothing, it is left for Linux fdisk compatibility.
>
> So this is somewhat different, -u does not need any extra options, -C means something different. This sniplet works for me
>
> 	b=`/sbin/fdisk --version`
> 	fdiskFlags=""
> 	if echo $b|grep -q ^GNU; then
> 	        echo "I am a GNU: $b"
> 	        #fdiskFlags="-u" # sectors
> 	        fdiskFlags=""    # cylinders
> 	else
> 	        echo "Who am I, util-linux-ng maybe?"
> 	        fdiskFlags=""             # sectors
> 	        fdiskFlags="-u=cylinders" # cylinders
> 	fi
> 	
> 	echo "The flags to use are: $fdiskFlags"
>
>
> I think we should prefer an explicit failure over an unsupported fdisk option over presuming any default unit. If it is not too
> cumbersome, could you please prepare a patch that works for you and introduces the explicit unit setting through some extra magic
> like outlined above? This would be great.


so it looks like we have 3 distinct fdisk version. gnu fdisk, old util-linux-ng, and new util-linux-ng.

also it looks like the current install.sh depends on the util-linux-ng interactive behaviour. on uln-fdisk asks for a partition number (n,p,1) whereas gnu-fdisk does not (n,p). gnu-fdisk would assume that 1 is the start cylinder.

I think the full logic is something like:

#!/bin/bash

fdiskVersion=`/sbin/fdisk -v`  # util-linux-ng fdisk does not recognise --version
fdiskFlags=""
fdiskUsePartNumbers=false # gnu fdisk does not ask for partition numbers
if [[ $fdiskVersion == GNU* ]] ; then
	echo "I am a GNU: $fdiskVersion "
	#fdiskFlags="-u" # sectors
	fdiskFlags=""    # cylinders
	fdiskUsePartNumbers=false
elif [[ $fdiskVersion == *util-linux-ng*2.17*  ]] ; then
	echo "I am a util-linux-ng fdisk (defaulting to cylinders): $fdiskVersion "
	#fdiskFlags="-u"             # sectors
	fdiskFlags="" # cylinders
	fdiskUsePartNumbers=true
elif [[ $fdiskVersion == *util-linux-ng*2.18*  ]] ; then
	echo "I am a util-linux-ng fdisk (defaulting to sectors): $fdiskVersion "
	#fdiskFlags="-u=sectors"             # sectors
	fdiskFlags="-u=cylinders" # cylinders
	fdiskUsePartNumbers=true
else
	echo "Unrecognised fdisk version: $fdiskVersion"
	echo "Please check if your fdisk defaults to cyclinders or sectors and report to the mailing list"
	exit
fi

echo "The flags to use are: $fdiskFlags"
echo "Use partition numbers: $usePartNumbers"

does anyone know of any other fdisks likely to be encountered on an openmoko?

sam



More information about the pkg-fso-maint mailing list