[arch-releng] [PATCH] [syslinux-iso] Add automated_script support
Gerardo Exequiel Pozzi
vmlinuz386 at yahoo.com.ar
Sat Jan 29 18:38:08 EST 2011
On 01/29/2011 08:01 PM, Dieter Plaetinck wrote:
> On Sat, 29 Jan 2011 19:28:19 -0300
> Gerardo Exequiel Pozzi<vmlinuz386 at yahoo.com.ar> wrote:
>> On 01/28/2011 10:19 AM, Dieter Plaetinck wrote:
>>> On Thu, 27 Jan 2011 22:25:13 -0300
>>> Gerardo Exequiel Pozzi<vmlinuz386 at yahoo.com.ar> wrote:
>>>> Via kernel parameter "script=/path/to/script".
>>>> /path/to/script can be a ftp:// or http:// or an absolute path.
>>>> Original idea by "Charles", I just changes few things to use
>>>> initscripts hooks.
>>>> Signed-off-by: Gerardo Exequiel Pozzi<vmlinuz386 at yahoo.com.ar>
>>>> .../overlay/etc/rc.d/functions.d/automated_script | 21
>>>> ++++++++++++++++++++ 1 files changed, 21 insertions(+), 0 deletions(-)
>>>> create mode 100644
>>>> diff --git
>>>> new file mode 100644 index 0000000..4637ee1 --- /dev/null
>>>> @@ -0,0 +1,21 @@ +. /etc/archiso/functions
>>>> +automated_script ()
>>>> + script="$(cmdline_param script)"
>>>> + if [ -n $script ] ; then
>>>> + stat_busy "Running $script"
>>>> + if [[ $script =~ ^http:// || $script =~ ^ftp:// ]] ; then
>>>> + wget "$script" -q -O /tmp/startup_script>/dev/null
>>>> + else
>>>> + cp $script /tmp/startup_script
>>>> + fi
>>>> + if [ -s /tmp/startup_script ] ; then
>>>> + chmod +x /tmp/startup_script
>>>> + /tmp/startup_script
>>>> + fi
>>>> + stat_done
>>>> + fi
>>>> +add_hook multi_end automated_script
>>> Can you explain how it works?
>>> An explanation will be needed for the README anyway.
>>> If it does what I think it does, then we need to put it in the official
>>> installation guide as well.
>>> What I think it does:
>>> - this hook is always executed during boot (independent of boot metod
>>> such as pxe, cd-rom or usb)
>>> - it checks if the kernel has a "script" argument (as given by the
>>> bootloader - never in the official builds - but can easily be
>>> specified when booting over pxe, or making your own iso builds)
>>> - it will download the script if it starts with 'http://' or 'ftp://',
>>> otherwise it will copy it (in this case, you should have have built
>>> your own images with the script in them, otherwise there is no way
>>> to have acess to the script, or is there? (network mount?))
>>> - it then executes the script if it is copied/downloaded successfully.
>>> in the script you can put something like 'aif -p automatic -c<path
>>> to config>' or 'aif -p interactive'.
>> Not exactly, depends on what you want.
>>> I would suggest some error handling.
>>> if the wget fails (and/or /tmp/startup_script does not exist), you
>>> should not do a stat_done, but stat_error or whatever it's called.
>>> another thing, if /tmp/startup_script takes a long time (like, when
>>> running aif), doing this all in the "boot process" and then doing a
>>> stat_done doesn't seem right. aif is supposed to be run after boot has
>>> completed. (to which extent this gives problems, I don't know, maybe
>>> the ncurses dialogs will be rendered incorrectly etc)
>>> also, we use MOTD to show some info before the installation is
>>> invoked, with this approach it will show the MOTD after aif has run.
>> Yes. Errors must be catched. According to Charles, this works OK.
>> @Charles: aif tested via the script?
>> I guess that MOTD will never appears (guessing an automatic reboot).
>> Anyway all these things are responsability of the script creator.
>> This patch only add support to launch a custom script, what and how
>> things are doing by script is another issue.
> well, i mention running aif explicitly, because this was the original use case
> ( https://bbs.archlinux.org/viewtopic.php?id=111925)
> and this will probably also be -by far- the most common use case. So we should be sure it works fine before merging. (it seems reasonable to test both an automatic and an interactive install)
> maybe there is an easy way to make this script set up another script so that it will be run after the boot process has completed.
> for example, the script could be something like:
> echo 'aif -p automatic -c<config>'>> /etc/rc.local
> chmod +x /etc/rc.local
Originaly, the script overwrites the rc.local (from rc.d/archiso). I
modified it to run after rc.local (this is multi_end hook).
> however, I think that will also be run before the MOTD gets shown.
> Ideally, I think the script would set up auto login as root, and then put the aif invocation in /root/.bash_profile, or something like that.
> But it's probably too late to set up auto login as root, because that needs to be done by modifying /etc/inittab, but init is already running...
This sound much better, running from /root/.bash_profile. Or just having
a modified inittab that runs agetty with automatic login.
>> PS1: Charles, please suscribe to arch-releng ML, so can follow thing
>> more easily.
>> PS2: I am a bit busy these days.
Gerardo Exequiel Pozzi
\cos^2\alpha + \sin^2\alpha = 1
More information about the arch-releng