[systemd-devel] [PATCH] build: lookup for the "mount" binary

Cristian Rodríguez crrodriguez at opensuse.org
Thu Oct 31 16:17:01 CET 2013


El jue 31 oct 2013 07:43:54 CLST, Harald Hoyer escribió:
> On 10/30/2013 09:25 PM, Cristian Rodríguez wrote:
>> El 30/10/13 15:34, Harald Hoyer escribió:
>>> On 10/30/2013 07:27 PM, Cristian Rodríguez wrote:
>>>> El mié 30 oct 2013 15:18:48 CLST, Tom Gundersen escribió:
>>>>> On Wed, Oct 30, 2013 at 7:12 PM, Cristian Rodríguez
>>>>> <crrodriguez at opensuse.org> wrote:
>>>>>> Real executable might be in /usr and not in /bin
>>>>>
>>>>> I'm not against the patch, but the justification seems lacking... Does
>>>>> anyone actually do this? I.e., have a mount that is not symlinked to
>>>>> by /bin/mount?
>>>>
>>>> I am not aware of anyone not having a symlink to /bin/mount.. however,
>>>> when creating an initrd with dracut the symlink is not included (only
>>>> the real binary is at /usr/bin/mount) and mounting stuff breaks.
>>>>
>>>> It is either this patch or I should send a patch to dracut instead :-)
>>>>
>>>> In any case, from my perspective this is the right thing to do anyway.
>>>>
>>>
>>> Can you provide me the output of "dracut --debug -f test.img", so I can see what
>>> goes wrong?
>>>
>>> Normally dracut also installs the symlink.
>>>
>>
>> Here is the debug log attached, this is dracut git HEAD.
>>
>> The resulting initrd drops you into the emergency shell because systemd is
>> unable to find /bin/mount to mount /sysroot.
>>
>> Workaround to continue boot is to create the symlink and exit or a adding
>> band-aid hack to
>> http://git.kernel.org/cgit/boot/dracut/dracut.git/tree/modules.d/99fs-lib/module-setup.sh
>> just before inst_multiple -o $_helpers fsck to force installation of mount as
>> /bin/mount , clearly not the right thing to do ;-)
>>
>
> dracut-install: Handle 'mount'
> dracut-install: PATH=/usr/sbin:/sbin:/usr/bin:/bin
> dracut-install: stat(/usr/sbin/mount) != 0
> dracut-install: stat(/sbin/mount) != 0
> dracut-install: find_binary(mount) == /usr/bin/mount
> dracut-install: dracut_install '/usr/bin/mount'
> dracut-install: dracut_install('/usr/bin/mount', '/usr/bin/mount')
> dracut-install: dracut_install ret = 0
> dracut-install: cp '/usr/bin/mount' '/var/tmp/initramfs.pRJ2ZL/usr/bin/mount'
> dracut-install: dracut_install ret = 0
> dracut-install: dracut_install '/usr/bin/mount' OK
>
>
> So, the PATH dracut uses is PATH=/usr/sbin:/sbin:/usr/bin:/bin.
> dracut-install finds a real mount at /usr/bin/mount.
>
> So, you are saying, that you have a symbolic link pointing:
>
> /bin/mount -> /usr/bin/mount
>
> ??

Yes /bin/mount -> /usr/bin/mount .


> What we might can do, is search _all_ components of PATH for the binaries and
> install everyone of them.

That will be cool. because there is the same problem with the following 
binaries

setfont, loadkeys, blkid and mount.



--
"Judging by their response, the meanest thing you can do to people on 
the Internet is to give them really good software for free". - Anil Dash


More information about the systemd-devel mailing list