On Tue, April 7, 2015 13:02, Alex Wilson wrote:
> On the topic of local tweaks to autoinstall, I was trying to use it for
> a bunch of blades with very limited disk the other day, and I really
> wanted to make them just create a single slice for / and some swap.
>
> I ended up doing:
>
> --- a/distrib/amd64/common/install.md
> +++ b/distrib/amd64/common/install.md
> @@ -125,7 +125,11 @@ start of the disk, NOT the start of the OpenBSD MBR
> partition.
>
> __EOT
>
> - disklabel $FSTABFLAG $_f -E $_disk
> + if _autorespond "disklabel" "$_def"; then
> + print "$resp" | disklabel $FSTABFLAG $_f -E $_disk
> + else
> + disklabel $FSTABFLAG $_f -E $_disk
> + fi
> }
>
> md_congrats() {
>
>
> So that then I could put
>
> Use (W)hole disk, use the = W
> Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout = C
> disklabel = D\na b\n\n4g\n\na a\n\n\n\n/\np\nq\n
>
> in my install.conf
>
> Would you be interested in a patch to add this on all the platforms? Or
> some other nicer way of doing it? (should it be "Disklabel" rather than
> little d, for consistency?)
>
>
I like the idea, because previously I had to build custom bsd.rd with tweaked
disklabel
to disable autopartitioning and just create one partition.
>
> On 06/04/15 23:48, Nathanael Rensen wrote:
>> A couple of autoinstall(8) tweaks that I find useful.
>>
>> I find it convenient to be able to specify a path to the response file.
>> I also prefer to use the DHCP supplied hostname rather than the MAC
>> address.
>>
>> Index: install.sub
>> ===================================================================
>> RCS file: /cvs/src/distrib/miniroot/install.sub,v
>> retrieving revision 1.829
>> diff -u -p -r1.829 install.sub
>> --- install.sub 5 Apr 2015 12:37:14 -0000 1.829
>> +++ install.sub 6 Apr 2015 13:33:02 -0000
>> @@ -304,7 +304,7 @@ retrap() {
>>
>> # Fetch response file for autoinstall.
>> get_responsefile() {
>> - local _rf _ifdev _mac _mode _server _lf
>> + local _rf _ifdev _mac _mode _server _lf _path
>> action=
>>
>> [[ -f /auto_upgrade.conf ]] && _rf=/auto_upgrade.conf _mode=upgrade
>> @@ -328,16 +328,18 @@ get_responsefile() {
>> [[ -n $_ifdev ]] && dhclient $_ifdev || break
>> _lf=/var/db/dhclient.leases.$_ifdev
>> _server=$(sed "/^ *next-server /!d;s///;s/;$//;q" $_lf)
>> - _mode=$(sed -E '/^ *filename
>> "auto_(install|upgrade)";$/!d;s//\1/;q' $_lf)
>> + _mode=$(sed -E '/^ *filename
>> "(.*\/)?auto_(install|upgrade)";$/!d;s//\2/;q' $_lf)
>> + _path=$(sed -E '/^ *filename "(.*\/)[^/]+";$/!d;s//\1/;q' $_lf)
>> hostname "$(sed -E '/^ *option host-name "(.*)";$/!d;s//\1/;q'
>> $_lf)"
>> done
>>
>> # Fetch response file if server and mode are known, otherwise tell which
>> - # one was missing. First try to fetch mac-mode.conf, then mode.conf.
>> + # one was missing. First try to fetch mac-mode.conf, then
>> + # hostname-mode.conf, and finally mode.conf.
>> if [[ -n $_server && -n $_mode ]]; then
>> _mac=$(ifconfig $_ifdev | sed 's/.*lladdr \(.*\)/\1/p;d')
>> - for _rf in {$_mac-,}$_mode; do
>> - _url=http://$_server/$_rf.conf
>> + for _rf in {$_mac-,$(hostname -s)-,}$_mode; do
>> + _url=http://$_server/$_path$_rf.conf
>> echo "Fetching $_url"
>> if ftp -Vo "/ai.$_mode.conf" "$_url" 2>/dev/null; then
>> action=$_mode
>> Index: autoinstall.8
>> ===================================================================
>> RCS file: /cvs/src/share/man/man8/autoinstall.8,v
>> retrieving revision 1.11
>> diff -u -p -r1.11 autoinstall.8
>> --- autoinstall.8 23 Oct 2014 21:33:21 -0000 1.11
>> +++ autoinstall.8 6 Apr 2015 13:31:22 -0000
>> @@ -47,22 +47,16 @@ It behaves as if the user selected '(A)u
>> always fetches the response file via the netboot interface.
>> .Ss Fetching the response file
>> .Nm
>> -uses HTTP to fetch one of the files
>> -.Pa install.conf
>> -or
>> -.Ar MAC_address Ns - Ns Pa install.conf
>> -for install answers, or one of
>> -.Pa upgrade.conf
>> -or
>> -.Ar MAC_address Ns - Ns Pa upgrade.conf
>> -for upgrade answers.
>> -The URL used to fetch the file is constructed from information provided in
>> -the
>> +uses HTTP to fetch a response file which provides answers to
>> +install or upgrade questions.
>> +The URL used to fetch the response file is constructed from
>> +information provided in the
>> .Xr dhcpd.conf 5
>> -statements
>> -.Ic next-server
>> +.Ic next-server ,
>> +.Ic filename
>> and
>> -.Ic filename .
>> +.Ic host-name
>> +options.
>> If the
>> .Ar filename
>> is
>> @@ -71,6 +65,7 @@ then the URLs tried are, in order:
>> .Sm off
>> .Bd -unfilled -offset indent
>> .No http:// Ar next-server No / Ar MAC_address No -install.conf
>> +.No http:// Ar next-server No / Ar host-name No -install.conf
>> .No http:// Ar next-server No /install.conf
>> .Ed
>> .Sm on
>> @@ -79,7 +74,7 @@ where
>> .Ar MAC_address
>> is a string of six hex octets separated by colons
>> representing the MAC
>> -address of the interface being used to fetch the files.
>> +address of the interface being used to fetch the response file.
>> .Pp
>> If the
>> .Ar filename
>> @@ -89,9 +84,15 @@ the URLs tried are, in order:
>> .Sm off
>> .Bd -unfilled -offset indent
>> .No http:// Ar next-server No / Ar MAC_address No -upgrade.conf
>> +.No http:// Ar next-server No / Ar host-name No -upgrade.conf
>> .No http:// Ar next-server No /upgrade.conf
>> .Ed
>> .Sm on
>> +.Pp
>> +If the
>> +.Ar filename
>> +includes a parent directory it will be used as a server relative
>> +path in the http URL to fetch the response file.
>> .Pp
>> On architectures where the
>> .Ic filename
>>
>>
>> It's handy for the log to remain on the host as a reference. Sometimes the
>> email gets lost (e.g. caught in a spam trap).
>>
>> Index: install.sub
>> ===================================================================
>> RCS file: /cvs/src/distrib/miniroot/install.sub,v
>> retrieving revision 1.829
>> diff -u -p -r1.829 install.sub
>> --- install.sub 5 Apr 2015 12:37:14 -0000 1.829
>> +++ install.sub 6 Apr 2015 13:33:02 -0000
>> @@ -2305,13 +2318,12 @@ elif [[ -z $RESPFILE ]]; then
>> if [[ -f /ai.done ]]; then
>> # Generate unique filename and let rc.firsttime feed it to
>> # whatever mail system we have at hand by then.
>> - while _lf=/mnt/var/log/ai.log.$RANDOM && test -e $_lf; do done
>> + _lf=/mnt/var/log/$action.$(date +%Y%m%d%H%M%S)
>> cp /ai.log $_lf
>> chmod 600 $_lf
>> _lf=${_lf#/mnt}
>> cat <<__EOT >>/mnt/etc/rc.firsttime
>> -( /usr/bin/mail -s '$(hostname) $action log' root < $_lf &&
>> - rm $_lf ) >/dev/null 2>&1 &
>> +/usr/bin/mail -s '$(hostname) $action log' root < $_lf >/dev/null 2>&1 &
>> __EOT
>> exec reboot
>> else
>>
>> Nathanael
>>
>
>