On Tue, Dec 3, 2013 at 12:06 AM, Canek Peláez Valdés <can...@gmail.com> wrote:
> On Mon, Dec 2, 2013 at 10:34 PM, Jc García <jyo.gar...@gmail.com> wrote:
>> 2013/12/2 William Kenworthy <bi...@iinet.net.au>
>>>
>>> You are looking far too deep ....
>>>
>>>
>>> just rsync -avP to /newusr
>>
>> +1
>> I have done this more or less the same way
>>>
>>> reboot to livecd
>>>
>>> rsync again with --delete to update ... takes a only few seconds this
>>> time - minimal downtime :)
>>> mv /usr /oldusr
>>> mv /newusr /usr
>>> reboot
>>
>>
>> Let's make this thread more interesting, would it be possible to do
>> this without a reboot? ie: going single user mode, kill anything that
>> might still be running from usr,  umount /usr, mount it to /mnt, rsync
>> -avP to usr, going again into runlevel 3 or 5.
>> Obviously not possible if running systemd.
>
> I'm not so sure it's not possible. Perhaps it's even easier.

So, yeah, I think it's easier with systemd. You just:

1. systemctl isolate emergency.target
2. log in again (all the normal gettys are killed with the above command)
3. rsync -PvasHA /usr/ /newusr/
4. mv /usr /oldusr # mv is on /bin, so no problems here
5. mv /newusr /usr
6. rm -rf /oldusr (to make sure nothing uses it anymore)
7. systemctl isolate multi-user.target
8. You have your system again.

I did this on a minimal QEMU virtual machine. However I think it
should work with even the most complex setups, as long as your
initramfs has the necessary tools, which is really easy with dracut.

Regards.
-- 
Canek Peláez Valdés
Posgrado en Ciencia e Ingeniería de la Computación
Universidad Nacional Autónoma de México

Reply via email to