[arch-releng] [PATCH 5/5] [configs/releng] Rework automated_script() from initscript hooks to /root/.zlogin

Gerardo Exequiel Pozzi vmlinuz386 at yahoo.com.ar
Sun Sep 23 17:53:35 EDT 2012


On 09/20/2012 11:08 AM, Charles wrote:
> Le 19/09/2012 23:39, Gerardo Exequiel Pozzi a écrit :
>> On 09/19/2012 12:55 PM, Charles wrote:
>>> Le 17/09/2012 14:46, Gerardo Exequiel Pozzi a écrit :
>>>> On 09/17/2012 09:38 AM, Charles wrote:
>>>>> Le 17/09/2012 14:26, Gerardo Exequiel Pozzi a écrit :
>>>>>> On 09/17/2012 09:22 AM, Gerardo Exequiel Pozzi wrote:
>>>>>>> On 09/17/2012 06:42 AM, Charles wrote:
>>>>>>>> Le 17/09/2012 01:12, Gerardo Exequiel Pozzi a écrit :
>>>>>>>>> On 09/16/2012 06:01 PM, Charles wrote:
>>>>>>>>>> Le 12/09/2012 09:10, Gerardo Exequiel Pozzi a écrit :
>>>>>>>>>>> Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386 at yahoo.com.ar>
>>>>>>>>>>> ---
>>>>>>>>>>> .../releng/root-image/root/.automated_script.sh | 34 
>>>>>>>>>>> ++++++++++++++++++++++
>>>>>>>>>>>   configs/releng/root-image/root/.zlogin | 1 +
>>>>>>>>>>>   2 files changed, 35 insertions(+)
>>>>>>>>>>>   create mode 100755 
>>>>>>>>>>> configs/releng/root-image/root/.automated_script.sh
>>>>>>>>>>>   create mode 100644 configs/releng/root-image/root/.zlogin
>>>>>>>>>>>
>>>>>>>>>>> diff --git 
>>>>>>>>>>> a/configs/releng/root-image/root/.automated_script.sh 
>>>>>>>>>>> b/configs/releng/root-image/root/.automated_script.sh
>>>>>>>>>>> new file mode 100755
>>>>>>>>>>> index 0000000..859452f
>>>>>>>>>>> --- /dev/null
>>>>>>>>>>> +++ b/configs/releng/root-image/root/.automated_script.sh
>>>>>>>>>>> @@ -0,0 +1,34 @@
>>>>>>>>>>> +#!/bin/bash
>>>>>>>>>>> +
>>>>>>>>>>> +script_cmdline ()
>>>>>>>>>>> +{
>>>>>>>>>>> +    local param
>>>>>>>>>>> +    for param in $(< /proc/cmdline); do
>>>>>>>>>>> +        case "${param}" in
>>>>>>>>>>> +            script=*) echo "${param##*=}" ; return 0 ;;
>>>>>>>>>>> +        esac
>>>>>>>>>>> +    done
>>>>>>>>>>> +}
>>>>>>>>>>> +
>>>>>>>>>>> +automated_script ()
>>>>>>>>>>> +{
>>>>>>>>>>> +    local script rt
>>>>>>>>>>> +    script="$(script_cmdline)"
>>>>>>>>>>> +    if [[ -n "${script}" ]]; then
>>>>>>>>>>> +        if [[ "${script}" =~ ^http:// || "${script}" =~ 
>>>>>>>>>>> ^ftp:// ]]; then
>>>>>>>>>>> +            wget "${script}" -q -O /tmp/startup_script 
>>>>>>>>>>> >/dev/null
>>>>>>>>>>> +            rt=$?
>>>>>>>>>>> +        else
>>>>>>>>>>> +            cp "${script}" /tmp/startup_script
>>>>>>>>>>> +            rt=$?
>>>>>>>>>>> +        fi
>>>>>>>>>>> +        if [[ ${rt} -eq 0 ]]; then
>>>>>>>>>>> +            chmod +x /tmp/startup_script
>>>>>>>>>>> +            /tmp/startup_script
>>>>>>>>>>> +        fi
>>>>>>>>>>> +    fi
>>>>>>>>>>> +}
>>>>>>>>>>> +
>>>>>>>>>>> +if [[ $(tty) == "/dev/tty1" ]]; then
>>>>>>>>>>> +    automated_script
>>>>>>>>>>> +fi
>>>>>>>>>>> diff --git a/configs/releng/root-image/root/.zlogin 
>>>>>>>>>>> b/configs/releng/root-image/root/.zlogin
>>>>>>>>>>> new file mode 100644
>>>>>>>>>>> index 0000000..f598e43
>>>>>>>>>>> --- /dev/null
>>>>>>>>>>> +++ b/configs/releng/root-image/root/.zlogin
>>>>>>>>>>> @@ -0,0 +1 @@
>>>>>>>>>>> +~/.automated_script.sh
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> Two problems:
>>>>>>>>>> - when the script is run, the network is not ready, making 
>>>>>>>>>> automated_script to fail. Adding the parameter 
>>>>>>>>>> "--retry-connrefused" to wget will fixed it.
>>>>>>>>> "network ready" issues is a thing that should be fixed in some 
>>>>>>>>> way. For now adding such switch seems to be fine ;)
>>>>>>>>>> - the hook /etc/rc.d/functions.d/automated_script has not 
>>>>>>>>>> been removed.
>>>>>>>>> Is removed, ensure that you are working on clean enviroment 
>>>>>>>>> (remove files from /usr/share/archiso, etc)
>>>>>>>>>
>>>>>>>>> rm -r /usr/lib/initcpio/archiso_* 
>>>>>>>>> /usr/lib/initcpio/hooks/archiso* 
>>>>>>>>> /usr/lib/initcpio/install/archiso* /usr/share/doc/archiso 
>>>>>>>>> /usr/share/archiso /usr/sbin/mkarchiso
>>>>>>>>>>
>>>>>>>>>> Thanks for trying to make this function work. Very useful to 
>>>>>>>>>> me !
>>>>>>>>> Thanks you for testing.
>>>>>>>>>>
>>>>>>>>>> Regards,
>>>>>>>>>>
>>>>>>>>>> Charles
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> Hi Gerardo,
>>>>>>>>
>>>>>>>> > Is removed, ensure that you are working on clean enviroment 
>>>>>>>> (remove files from /usr/share/archiso, etc)
>>>>>>>>
>>>>>>>> I don't get that. the file 
>>>>>>>> "http://projects.archlinux.org/archiso.git/tree/configs/releng/root-image/etc/rc.d/functions.d/automated_script" 
>>>>>>>> is still there, isn't it ? or is there another patch ?
>>>>>>>>
>>>>>>>> Charles
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> These RFC patchs are not merged in master and main repo. Only in 
>>>>>>> my repo, inside experimental branch.
>>>>>>>
>>>>>>> https://github.com/djgera/archiso/compare/master...experimental
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> When you tested this, how do you do? Only applied this patch over 
>>>>>> master?
>>>>>>
>>>>> Yes
>>>>>
>>>> Oooh thats wrong, you need to apply all patches, or just use my 
>>>> experimetal branch. Otherwise non-native systemd things will be used.
>>>>
>>>> I guess this was your problem about no network available... If you 
>>>> have some time, you can build again but using "experimental" 
>>>> branch, and removing --retry-connrefused, at least in my case 
>>>> works, when I made this patch.
>>>>
>>>> Thanks.
>>>>
>>>>
>>> Sorry. I build a new image from your experimental branch. It's working.
>>>
>>> The only weird thing are the ton of messages at reboot, which you 
>>> already mentioned.
>>>
>>> Thanks
>>>
>>> Charles
>>>
>> Nice, thanks for confirmation. Anyway I will keep that switch, seems 
>> to be a good idea.
>>
> > Anyway I will keep that switch, seems to be a good idea.
>
> I think so too. Doesn't harm and make things more robust.
>
>
>

I reworked a bit the logic:
instead of avoid re-executing agetty/autologin service on tty1, now 
automated_script checks if was already executed.

if [[ -n "${script}" && ! -x /tmp/startup_script ]]; then


-- 
Gerardo Exequiel Pozzi
\cos^2\alpha + \sin^2\alpha = 1



More information about the arch-releng mailing list