Scripting sysinstall(8) to create & use multiple slices on a disk?

Garrett Cooper yanefbsd at gmail.com
Sat Mar 6 08:41:41 UTC 2010


On Fri, Mar 5, 2010 at 10:33 AM, Josh Paetzel <jpaetzel at freebsd.org> wrote:
> On Friday 05 March 2010 07:01:00 John Baldwin wrote:
>> On Thursday 04 March 2010 4:33:29 pm David Wolfskill wrote:
>> > For reasons that may well be idiosyncratic, I like to set up FreeBSD
>> > machines to have at least 2 bootable slices -- e.g., one can act as a
>> > fallback if an attempted software upgrade proves to have been ill-timed.
>> >
>> > In the past, I've done this manually; while a bit tedious & fairly
>> > "target-rich" with opportunities for human error, it's something that is
>> > typically done infrequently (i.e., once) in the life of a machine (or at
>> > least its boot drive).
>> >
>> > At work, the IT folks use a scripted sysinstall(8) to set machines up;
>> > to increase the probability that I'll be able to get 3 "special"
>> > machines set up the way I want, I'm trying to set up a sysinstall config
>> > file to make this as painless as possible.
>> >
>> > I managed to get a copy of the config script IT uses, so I had a
>> > starting-point ... but they were setting the machines up with
>> >
>> > partition=exclusive
>> >
>> > which doesn't seem like a good choice for what I'm doing.  :-}
>> >
>> >
>> > After my first attempt failed, I poked around on the Net & found
>> > <http://www.nntpnews.net/f2458/what-proper-install-cfg-configuring-multip
>> > le-
>>
>> slices-4387807/>,
>>
>> > (dated 18-11-08, 10:40 PM ), in which Peter Steele describes something
>> >
>> > similar to what I was about to try next, and writes:
>> > | My intent here is to create three slices-one 6GB in size, another 1GB
>> > | in size, and the third sized to consume the remaining free space. When
>> > | I run this through sysinstall, it complains that it can't find the
>> > | space for the partitions. It even complains that it can't find any
>> > | free space. Because the slices don't get created, the subsequent label
>> > | assignments fail as well. What is the proper commands for creating
>> > | multiple slices in install.cfg?
>> >
>> > In a foillowup, he writes:
>> > | After a lot of experimenting, my impression is that sysinstall simply
>> > | doesn't support multiple slice installations. It works to a point, but
>> > | I get some unexpected errors, e.g.
>> > |
>> > | Unable to make device node for /dev/ad0s1a in /dev
>> >
>> > which doesn't seem very encouraging.
>> >
>> >
>> > Would someone please either confirm the limitation or provide a
>> > suitable excerpt from a sysinstall config script to demonstrate
>> > that it is actually possible?  (Or show me where it's spelled out in the
>> > man page....)
>> >
>> > (I'm using 7.x sysinstall, if that matters.)
>>
>> If you are doing a fully scripted install you may be better off just using
>> a dedicated shell script to format your disks and mount them and then use
>> the various *-install.sh scripts from the release distributions to install
>> the code.  You could still do this via sysinstall by sticking your shell
>> script in /stand in the MFS root and having your sysinstall script just
>> run that script. You might want to build a custom mfsroot to add some more
>> useful tools though.
>>
>> I really think sysinstall needs to support a disk "backdoor" whereby the
>> user can either manually partition disks and then mount them at /mnt (or
>> have a script do it), and tell sysinstall to just skip the disk stuff and
>> assume /mnt is mounted.
>
> David,
>
> I second the ditching sysinstall for a shell script idea.  A shell script that
> replaces sysinstall is nearly as short as the install.cfg and a lot easier to
> figure out.  I've written a half dozen auto installers for FreeBSD, from
> trivial to complex and would be more than willing to help you get something
> set up.  I can send you code if you want as well.

(Attempts to avoid shoe flying in his direction from randi@ :/),

FWIW, sysinstall(8) is a good starter tool and it has a lot of the
information that you need in order to complete an install (especially
if you're doing it from scratch), but the amount of effort for using
sysinstall(8)'s install.cfg, etc has the greater potential to change
in the future when compared with a shell scripted method which is less
likely to change; granted gpart vs fdisk is in transition, but the
number of steps and the simplicity required to get everything up and
going is trivial, and I did so in < 100 lines of bourne shell.

I'd be happy to share my custom script if desired as well to provide
you a general idea of what could be done to solve your problem.

Cheers,
-Garrett


More information about the freebsd-hackers mailing list