Hello!

More than two months since the "always_format" flag was introduced, I
got a chance to test it. Unsuccessfully, it seems.

The disk layout on this test system was set up to imitate that on a
laptop with a total of four existing Windows partitions, (three primary
and one logical), none of which should be touched. The empty Linux
partitions were created manually with gparted. FAI is expected to create
filesystems on those during each install. There is some empty space on
the disks as well.

Here is the output from fdisk:

Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0003d396

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1               1         127     1020096    7  HPFS/NTFS
/dev/hda2             128        1402    10241437+   7  HPFS/NTFS
/dev/hda3            1403        9051    61440592+   5  Extended
/dev/hda4            9052        9729     5446035    7  HPFS/NTFS
/dev/hda5            1403        5226    30716248+   7  HPFS/NTFS
/dev/hda6            5230        5306      618471   83  Linux
/dev/hda7            5307        5561     2048256   82  Linux swap / Solaris
/dev/hda8            5562        5650      714861   83  Linux
/dev/hda9            5651        5739      714861   83  Linux
/dev/hda10           5740        6504     6144831   83  Linux
/dev/hda11           6505        7779    10241406   83  Linux
/dev/hda12           7780        8990     9727326   83  Linux

My disk configuration file looks like this:

disk_config disk1 bootable:1 preserve_always:1,2,3,4,5,6,7,8,9,10,11,12 
always_format:6,7,8,9,10,11,12
primary  -      0   -     -
primary  -      0   -     -
logical  -      0   -     -
logical  /      0   ext3  rw,errors=remount-ro   createopts="-c -j"
logical  swap   0   swap  sw
logical  /var   0   ext3  rw                     createopts="-c -m 5 -j"
logical  /tmp   0   ext3  rw                     createopts="-c -m 0 -j"
logical  /usr   0   ext3  rw                     createopts="-c -j"
logical  /home  0   ext3  rw,nosuid,nodev        createopts="-m 1 -j"
logical  /wrk   0   ext3  rw,nosuid,nodev        createopts="-m 1 -j"
primary  -      0   -     -

And the result of running "setup-storage -d" is attached.

Perhaps my syntax is incorrect too, but it crashed with an
"uninitialized value" from Perl which it probably should not.

Toomas Tamm




On Tue, 2010-04-06 at 23:55 +0200, Michael Tautschnig wrote:
> > On Fri, 2010-03-26 at 13:08 -0600, Jeffrey Stolte wrote:
> > 
> > > (I should mention that one of our main uses of FAI is to upgrade
> > > machines from one Debian release to the next.  However, rather than do
> > > an in-place upgrade, we do a fresh install of the new release while
> > > preserving the existing partition sizes on the disk.)
> > > 
> > > I hope this makes some sense.  If no one else has asked for this
> > > capability, though, maybe we need to reconsider our practice of
> > > preserving partition sizes.  I don't want you to have to add an option
> > > that no one else uses or that is not considered to be a "best
> > practice".
> > > Let me know if you need any additional information.  Thanks.
> > 
> > I would cast another vote towards adding such an option. Our use case is
> > the following: we have several dual-booting laptops where the Windows
> > partition(s), as well as the master boot record (which may contain
> > manufacturer-specific code to access recovery partitions, etc) should be
> > touched as little as possible. Just as the above user, we prefer fresh
> > installs to in-place upgrades.
> > 
> > It would feel very reassuring if there were an option in FAI which
> > essentially meant "do not touch anything in disk paritioning, just
> > create new filesystems on existing partitions where requested, and leave
> > all the rest unchanged".
> > 
> > In today's situation, I always feel an urge to test my setups (based on
> > hooks and/or manual intervention) several times on a "disposable" test
> > machine before I dare to run FAI on a "real" system.
> > 
> 
> I've added an option "always_format" which can be used along with
> preserve_always, etc. and works the same way as the "format" option did in
> setup_harddisks. 
> 
> I believe the following should work, adapting Jeffrey's example:
> 
> disk_config sda disklabel:msdos bootable:1 preserve_always:1,2,5,6,7 
> always_format:1,2,5
> primary  /      0   ext3  defaults,errors=remount-ro    createopts="-j"
> primary  swap   0   swap  sw
> logical  /var   0   ext3  defaults,errors=remount-ro    createopts="-j"
> logical  /home  0   ext3  defaults,nosuid,nodev,errors=remount-ro
> logical  /d1    0   ext3  defaults,nosuid,nodev,errors=remount-ro
> 
> In case some of the partitions need not exist in all cases, you can use
> preserve_lazy instead of preserve_always, but then some size other than 0 must
> be specified.
> 
> This option is available as of 3.3.5+experimental2. For details on how to 
> obtain
> the experimental builds please see
> http://faiwiki.informatik.uni-koeln.de/index.php/Main_Page#getting_FAI
> Testing is much appreciated!!
> 
> 
> Best,
> Michael
> 
setup-harddisks is running in test-only mode
Starting setup-storage 1.2.1+exp
disklist was: hda
Using config file: /var/lib/fai/config/disk_config/DISK_jensen
Input was:
# setup-storage configuration file for the laptop, jensen.
#
# It comes with a small partition as sda1, the larger
# sda2 for Win7, and sda4 for recovery.
#
# I shrunk sda2, created an extended partition in the empty
# space, and divided it between Windows Home (D:) and linux
# partitions. We preserve the size and location of everything, 
# but create new filesystems.

# We use the "always_format" option which was created partially
# at my own request into FAI 3.3.5+experimental2.
#

disk_config disk1 bootable:1 preserve_always:1,2,3,4,5,6,7,8,9,10,11,12 always_format:6,7,8,9,10,11,12
primary  -      0   -     -
primary  -      0   -     -
logical  -      0   -     -
logical  /      0   ext3  rw,errors=remount-ro   createopts="-c -j"
logical  swap   0   swap  sw
logical  /var   0   ext3  rw                     createopts="-c -m 5 -j"
logical  /tmp   0   ext3  rw                     createopts="-c -m 0 -j"
logical  /usr   0   ext3  rw                     createopts="-c -j"
logical  /home  0   ext3  rw,nosuid,nodev        createopts="-m 1 -j"
logical  /wrk   0   ext3  rw,nosuid,nodev        createopts="-m 1 -j"
primary  -      0   -     -
(CMD) parted -s /dev/hda unit TiB print 1> /tmp/IckBwJajzX 2> /tmp/i3JTIRK3ot
Executing: parted -s /dev/hda unit TiB print
(STDOUT) Model: ST380011A (ide)
(STDOUT) Disk /dev/hda: 0.07TiB
(STDOUT) Sector size (logical/physical): 512B/512B
(STDOUT) Partition Table: msdos
(STDOUT) 
(STDOUT) Number  Start    End      Size     Type      File system  Flags
(STDOUT)  1      0.00TiB  0.00TiB  0.00TiB  primary   ntfs              
(STDOUT)  2      0.00TiB  0.01TiB  0.01TiB  primary   ntfs              
(STDOUT)  3      0.01TiB  0.07TiB  0.06TiB  extended                    
(STDOUT)  5      0.01TiB  0.04TiB  0.03TiB  logical   ntfs              
(STDOUT)  6      0.04TiB  0.04TiB  0.00TiB  logical   ext3              
(STDOUT)  7      0.04TiB  0.04TiB  0.00TiB  logical   linux-swap        
(STDOUT)  8      0.04TiB  0.04TiB  0.00TiB  logical   ext3              
(STDOUT)  9      0.04TiB  0.04TiB  0.00TiB  logical   ext3              
(STDOUT) 10      0.04TiB  0.05TiB  0.01TiB  logical   ext3              
(STDOUT) 11      0.05TiB  0.06TiB  0.01TiB  logical   ext3              
(STDOUT) 12      0.06TiB  0.07TiB  0.01TiB  logical   ext3              
(STDOUT)  4      0.07TiB  0.07TiB  0.01TiB  primary   ntfs              
(STDOUT) 
(CMD) parted -s /dev/hda unit B print free 1> /tmp/qzpr7AdTLF 2> /tmp/Zi0nPG9LWb
Executing: parted -s /dev/hda unit B print free
(STDOUT) Model: ST380011A (ide)
(STDOUT) Disk /dev/hda: 80026361856B
(STDOUT) Sector size (logical/physical): 512B/512B
(STDOUT) Partition Table: msdos
(STDOUT) 
(STDOUT) Number  Start         End           Size          Type      File system  Flags
(STDOUT)  1      32256B        1044610559B   1044578304B   primary   ntfs              
(STDOUT)  2      1044610560B   11531842559B  10487232000B  primary   ntfs              
(STDOUT)  3      11531842560B  74447009279B  62915166720B  extended                    
(STDOUT)  5      11531874816B  42985313279B  31453438464B  logical   ntfs              
(STDOUT)         42985313280B  43009989119B  24675840B               Free Space        
(STDOUT)  6      43010021376B  43643335679B  633314304B    logical   ext3              
(STDOUT)  7      43643367936B  45740782079B  2097414144B   logical   linux-swap        
(STDOUT)  8      45740814336B  46472831999B  732017664B    logical   ext3              
(STDOUT)  9      46472864256B  47204881919B  732017664B    logical   ext3              
(STDOUT) 10      47204914176B  53497221119B  6292306944B   logical   ext3              
(STDOUT) 11      53497253376B  63984453119B  10487199744B  logical   ext3              
(STDOUT) 12      63984485376B  73945267199B  9960781824B   logical   ext3              
(STDOUT)         73945267200B  74447009279B  501742080B              Free Space        
(STDOUT)  4      74447009280B  80023749119B  5576739840B   primary   ntfs              
(STDOUT) 
(CMD) parted -s /dev/hda unit chs print free 1> /tmp/5EdBjYOGYo 2> /tmp/NPu2wstGwk
Executing: parted -s /dev/hda unit chs print free
(STDOUT) Model: ST380011A (ide)
(STDOUT) Disk /dev/hda: 9729,80,62
(STDOUT) Sector size (logical/physical): 512B/512B
(STDOUT) BIOS cylinder,head,sector geometry: 9729,255,63.  Each cylinder is 8225kB.
(STDOUT) Partition Table: msdos
(STDOUT) 
(STDOUT) Number  Start     End          Type      File system  Flags
(STDOUT)  1      0,1,0     126,254,62   primary   ntfs              
(STDOUT)  2      127,0,0   1401,254,62  primary   ntfs              
(STDOUT)  3      1402,0,0  9050,254,62  extended                    
(STDOUT)  5      1402,1,0  5225,254,62  logical   ntfs              
(STDOUT)         5226,0,0  5228,254,62            Free Space        
(STDOUT)  6      5229,1,0  5305,254,62  logical   ext3              
(STDOUT)  7      5306,1,0  5560,254,62  logical   linux-swap        
(STDOUT)  8      5561,1,0  5649,254,62  logical   ext3              
(STDOUT)  9      5650,1,0  5738,254,62  logical   ext3              
(STDOUT) 10      5739,1,0  6503,254,62  logical   ext3              
(STDOUT) 11      6504,1,0  7778,254,62  logical   ext3              
(STDOUT) 12      7779,1,0  8989,254,62  logical   ext3              
(STDOUT)         8990,0,0  9050,254,62            Free Space        
(STDOUT)  4      9051,0,0  9728,254,62  primary   ntfs              
(STDOUT) 
    Finding all volume groups
(CMD) mdadm --detail --scan --verbose -c partitions 1> /tmp/eZ57VnRW0q 2> /tmp/t97rsbKQaO
Executing: mdadm --detail --scan --verbose -c partitions
Use of uninitialized value $p in concatenation (.) or string at /usr/share/fai/setup-storage//Init.pm line 266.
Can't preserve /dev/hda because it is not defined in the current config

Antwort per Email an