Andrey Borzenkov wrote:
On Mon, Apr 15, 2013 at 10:29 AM, Linda Walsh <suse@tlinx.org> wrote: ...
BUT, I said ***why MOVE*** the files from bin->/usr?
Only 1 file had deps on /usr -- the new lib for mount. So why through out the entire ability to have a separate user when it worked for those who wanted it.
This only one for your specific configuration. Care to count how many files there will be for someone having /usr on iSCSI LUN connected to port requiring 802.1x with smart card authentication?
iSCSI requires network. Initial boot to 'S' hasn't included networking as a rule. Even 'init-1' only adds in networking *after* the local file systems are mounted. That said -- if you are booting "diskless", then you have a whole different set of problems that are, also, "not the general case".
If distribution goes to support it, it has to work for everyone. Not only for Lina Walsh.
It would be nice if it worked for everyone -- vs. breaking it only for the standard case systemd suggests to optimize your boot -- the case that Linda Walsh was already using because she knew how to optimize a system -- booting with no separate ramdisk first. The ram disk duplicates your files from /root and /usr in order to boot the real system.. Any files used at boot and also used later have to be loaded twice. The Ramdisk already boots into SHELL -- not systemd, so it can run the SystemVinit scripts that were in /etc/boot.d (that are all now on the init-ramdisk. The init-ramdisk also copies parts of /usr, /usr/share, and nearly all of /etc/sysconfig onto the ramdisk. The technology is there to identify all the parts needed for boot. That same technology could easily be used as part of rpm-lint to make sure needed boot components are on /root.
This is never ending story.
--- It's called development. There will always be *new* drivers that won't be on a machine. Then they have to be placed on the machine. The package of the driver should be responsible enough to know if it is a driver that is needed at boot or not. When it gets added to the dist. The integrator can make the correct choice. It is already the case that distro-builders, often, do not put packages in their "upstream" locations. How is this any different? Suse didn't need to move all of these files from /bin to /usr/bin -- noted because existing programs still have hardcoded references to the prog in its original location, in /bin or /sbin or /lib64 -- and compatibility links are needed to make those work. The problem you are stating is for *new* drivers and libs added to the system: are they needed at boot? yes, put them in a boot-accessible location. For *existing* programs, like most of these -- there was no need to move them from their existing locations to /usr. So why? Instead of moving them, why weren't symlinks put in /usr/[s]bin to point to the binaries on root? Administratively, those would have been "safe links", since /usr is mounted on the link-destination (i.e. they would be links to a higher, already mounted device). Vs. these that go against good practice and do forward links from 1 device to another device that it is not dependent on. I.e. creating forward dependencies that didn't exist before, and that are subject to failure. unsafe link: /sbin/adjtimex => /usr/sbin/adjtimex unsafe link: /sbin/agetty => /usr/sbin/agetty unsafe link: /sbin/arping => /usr/sbin/arping unsafe link: /sbin/badblocks => /usr/sbin/badblocks unsafe link: /sbin/blkid => /usr/sbin/blkid unsafe link: /sbin/blockdev => /usr/sbin/blockdev unsafe link: /sbin/brctl => /usr/sbin/brctl unsafe link: /sbin/cfdisk => /usr/sbin/cfdisk unsafe link: /sbin/chcpu => /usr/sbin/chcpu unsafe link: /sbin/chkconfig => /usr/bin/chkconfig unsafe link: /sbin/clockdiff => /usr/sbin/clockdiff unsafe link: /sbin/crda => /usr/sbin/crda unsafe link: /sbin/ctrlaltdel => /usr/sbin/ctrlaltdel unsafe link: /sbin/debugfs => /usr/sbin/debugfs unsafe link: /sbin/dhcpcd => /usr/sbin/dhcpcd unsafe link: /sbin/dumpe2fs => /usr/sbin/dumpe2fs unsafe link: /sbin/e2fsck => /usr/sbin/e2fsck unsafe link: /sbin/e2image => /usr/sbin/e2image unsafe link: /sbin/e2label => /usr/sbin/e2label unsafe link: /sbin/e2undo => /usr/sbin/e2undo unsafe link: /sbin/ethtool => /usr/sbin/ethtool unsafe link: /sbin/fbset => /usr/sbin/fbset unsafe link: /sbin/fbtest => /usr/sbin/fbtest unsafe link: /sbin/fdisk => /usr/sbin/fdisk unsafe link: /sbin/findfs => /usr/sbin/findfs unsafe link: /sbin/fsck => /usr/sbin/fsck unsafe link: /sbin/fsck.cramfs => /usr/sbin/fsck.cramfs unsafe link: /sbin/fsck.ext2 => /usr/sbin/fsck.ext2 unsafe link: /sbin/fsck.ext3 => /usr/sbin/fsck.ext3 unsafe link: /sbin/fsck.ext4 => /usr/sbin/fsck.ext4 unsafe link: /sbin/fsck.minix => /usr/sbin/fsck.minix unsafe link: /sbin/fsfreeze => /usr/sbin/fsfreeze unsafe link: /sbin/fstrim => /usr/sbin/fstrim unsafe link: /sbin/hwclock => /usr/sbin/hwclock unsafe link: /sbin/ifenslave => /usr/sbin/ifenslave unsafe link: /sbin/in.rdisc => /usr/sbin/in.rdisc unsafe link: /sbin/ip => /usr/sbin/ip unsafe link: /sbin/logsave => /usr/sbin/logsave unsafe link: /sbin/losetup => /usr/sbin/losetup unsafe link: /sbin/mke2fs => /usr/sbin/mke2fs unsafe link: /sbin/mkfs => /usr/sbin/mkfs unsafe link: /sbin/mkfs.bfs => /usr/sbin/mkfs.bfs unsafe link: /sbin/mkfs.cramfs => /usr/sbin/mkfs.cramfs unsafe link: /sbin/mkfs.ext2 => /usr/sbin/mkfs.ext2 unsafe link: /sbin/mkfs.ext3 => /usr/sbin/mkfs.ext3 unsafe link: /sbin/mkfs.ext4 => /usr/sbin/mkfs.ext4 unsafe link: /sbin/mkfs.minix => /usr/sbin/mkfs.minix unsafe link: /sbin/mkfs.ntfs => /usr/sbin/mkntfs unsafe link: /sbin/mkswap => /usr/sbin/mkswap unsafe link: /sbin/modeline2fb => /usr/sbin/modeline2fb unsafe link: /sbin/mount.fuse => /usr/sbin/mount.fuse unsafe link: /sbin/mount.vmhgfs => /usr/sbin/mount.vmhgfs unsafe link: /sbin/nologin => /usr/sbin/nologin unsafe link: /sbin/pivot_root => /usr/sbin/pivot_root unsafe link: /sbin/raw => /usr/sbin/raw unsafe link: /sbin/rckbd => /usr/sbin/rckbd unsafe link: /sbin/refresh_initrd => /usr/sbin/refresh_initrd unsafe link: /sbin/regdbdump => /usr/sbin/regdbdump unsafe link: /sbin/resize2fs => /usr/sbin/resize2fs unsafe link: /sbin/service => /usr/sbin/service unsafe link: /sbin/sfdisk => /usr/sbin/sfdisk unsafe link: /sbin/smart_agetty => /usr/sbin/smart_agetty unsafe link: /sbin/swaplabel => /usr/sbin/swaplabel unsafe link: /sbin/swapoff => /usr/sbin/swapoff unsafe link: /sbin/swapon => /usr/sbin/swapon unsafe link: /sbin/switch_root => /usr/sbin/switch_root unsafe link: /sbin/syslogd => /usr/sbin/syslogd unsafe link: /sbin/tracepath => /usr/sbin/tracepath unsafe link: /sbin/tracepath6 => /usr/sbin/tracepath6 unsafe link: /sbin/tune2fs => /usr/sbin/tune2fs unsafe link: /sbin/udevadm => /usr/bin/udevadm unsafe link: /sbin/udhcpc => /usr/sbin/udhcpc unsafe link: /sbin/vconfig => /usr/sbin/vconfig unsafe link: /sbin/wipefs => /usr/sbin/wipefs unsafe link: /bin/arch => /usr/bin/arch unsafe link: /bin/basename => /usr/bin/basename unsafe link: /bin/cat => /usr/bin/cat unsafe link: /bin/chgrp => /usr/bin/chgrp unsafe link: /bin/chmod => /usr/bin/chmod unsafe link: /bin/chown => /usr/bin/chown unsafe link: /bin/chvt => /usr/bin/chvt unsafe link: /bin/clrunimap => /usr/bin/clrunimap unsafe link: /bin/cp => /usr/bin/cp unsafe link: /bin/cpio => /usr/bin/cpio unsafe link: /bin/date => /usr/bin/date unsafe link: /bin/dd => /usr/bin/dd unsafe link: /bin/dd_rescue => /usr/bin/dd_rescue unsafe link: /bin/dd_rhelp => /usr/bin/dd_rhelp unsafe link: /bin/deallocvt => /usr/bin/deallocvt unsafe link: /bin/df => /usr/bin/df unsafe link: /bin/dmesg => /usr/bin/dmesg unsafe link: /bin/dumpkeys => /usr/bin/dumpkeys unsafe link: /bin/echo => /usr/bin/echo unsafe link: /bin/egrep => /usr/bin/egrep unsafe link: /bin/eject => /usr/bin/eject unsafe link: /bin/false => /usr/bin/false unsafe link: /bin/fgconsole => /usr/bin/fgconsole unsafe link: /bin/fgrep => /usr/bin/fgrep unsafe link: /bin/fillup => /usr/bin/fillup unsafe link: /bin/find => /usr/bin/find unsafe link: /bin/findmnt => /usr/bin/findmnt unsafe link: /bin/gawk => /usr/bin/gawk unsafe link: /bin/getkeycodes => /usr/bin/getkeycodes unsafe link: /bin/getunimap => /usr/bin/getunimap unsafe link: /bin/grep => /usr/bin/grep unsafe link: /bin/guess_encoding => /usr/bin/guess_encoding unsafe link: /bin/gunzip => /usr/bin/gunzip unsafe link: /bin/gzip => /usr/bin/gzip unsafe link: /bin/ip => /usr/sbin/ip unsafe link: /bin/ipg => /usr/bin/ipg unsafe link: /bin/kbd_mode => /usr/bin/kbd_mode unsafe link: /bin/kbdinfo => /usr/bin/kbdinfo unsafe link: /bin/kbdrate => /usr/bin/kbdrate unsafe link: /bin/kill => /usr/bin/kill unsafe link: /bin/ln => /usr/bin/ln unsafe link: /bin/loadkeys => /usr/bin/loadkeys unsafe link: /bin/loadunimap => /usr/bin/loadunimap unsafe link: /bin/logger => /usr/bin/logger unsafe link: /bin/ls => /usr/bin/ls unsafe link: /bin/lsblk => /usr/bin/lsblk unsafe link: /bin/mapscrn => /usr/bin/mapscrn unsafe link: /bin/md5sum => /usr/bin/md5sum unsafe link: /bin/mkdir => /usr/bin/mkdir unsafe link: /bin/mknod => /usr/bin/mknod unsafe link: /bin/mktemp => /usr/bin/mktemp unsafe link: /bin/more => /usr/bin/more unsafe link: /bin/mount => /usr/bin/mount unsafe link: /bin/mv => /usr/bin/mv unsafe link: /bin/nisdomainname => /usr/bin/nisdomainname unsafe link: /bin/openvt => /usr/bin/openvt unsafe link: /bin/outpsfheader => /usr/bin/outpsfheader unsafe link: /bin/ping => /usr/bin/ping unsafe link: /bin/ping6 => /usr/bin/ping6 unsafe link: /bin/psfaddtable => /usr/bin/psfaddtable unsafe link: /bin/psfgettable => /usr/bin/psfgettable unsafe link: /bin/psfstriptable => /usr/bin/psfstriptable unsafe link: /bin/psfxtable => /usr/bin/psfxtable unsafe link: /bin/pwd => /usr/bin/pwd unsafe link: /bin/readlink => /usr/bin/readlink unsafe link: /bin/resizecons => /usr/bin/resizecons unsafe link: /bin/rm => /usr/bin/rm unsafe link: /bin/rmdir => /usr/bin/rmdir unsafe link: /bin/screendump => /usr/bin/screendump unsafe link: /bin/sed => /usr/bin/sed unsafe link: /bin/setfont => /usr/bin/setfont unsafe link: /bin/setkeycodes => /usr/bin/setkeycodes unsafe link: /bin/setleds => /usr/bin/setleds unsafe link: /bin/setlogcons => /usr/bin/setlogcons unsafe link: /bin/setmetamode => /usr/bin/setmetamode unsafe link: /bin/setpalette => /usr/bin/setpalette unsafe link: /bin/setvesablank => /usr/bin/setvesablank unsafe link: /bin/setvtrgb => /usr/bin/setvtrgb unsafe link: /bin/showconsolefont => /usr/bin/showconsolefont unsafe link: /bin/showkey => /usr/bin/showkey unsafe link: /bin/sleep => /usr/bin/sleep unsafe link: /bin/sort => /usr/bin/sort unsafe link: /bin/spawn_console => /usr/bin/spawn_console unsafe link: /bin/spawn_login => /usr/bin/spawn_login unsafe link: /bin/stat => /usr/bin/stat unsafe link: /bin/stty => /usr/bin/stty unsafe link: /bin/su => /usr/bin/su unsafe link: /bin/sync => /usr/bin/sync unsafe link: /bin/systemctl => /usr/bin/systemctl unsafe link: /bin/systemd => /usr/lib/systemd/systemd unsafe link: /bin/systemd-ask-password => /usr/bin/systemd-ask-password unsafe link: /bin/testutf8 => /usr/bin/testutf8 unsafe link: /bin/touch => /usr/bin/touch unsafe link: /bin/true => /usr/bin/true unsafe link: /bin/umount => /usr/bin/umount unsafe link: /bin/uname => /usr/bin/uname unsafe link: /bin/unicode_start => /usr/bin/unicode_start unsafe link: /bin/unicode_stop => /usr/bin/unicode_stop unsafe link: /bin/ypdomainname => /usr/bin/ypdomainname unsafe link: /bin/zcat => /usr/bin/zcat unsafe link: /lib64/libcom_err.so.2 => /usr/lib64/libcom_err.so.2 unsafe link: /lib64/libcom_err.so.2.1 => /usr/lib64/libcom_err.so.2.1 unsafe link: /lib64/libe2p.so.2 => /usr/lib64/libe2p.so.2 unsafe link: /lib64/libe2p.so.2.3 => /usr/lib64/libe2p.so.2.3 unsafe link: /lib64/libext2fs.so.2.4 => /usr/lib64/libext2fs.so.2.4 unsafe link: /lib64/libfuse.so.2 => /usr/lib64/libfuse.so.2 unsafe link: /lib64/libfuse.so.2.9.0 => /usr/lib64/libfuse.so.2.9.0 unsafe link: /lib64/libhandle.a => /usr/lib64/libhandle.a unsafe link: /lib64/libhandle.la => /usr/lib64/libhandle.la unsafe link: /lib64/libkmod.so.2 => /usr/lib64/libkmod.so.2 unsafe link: /lib64/libkmod.so.2.2.2 => /usr/lib64/libkmod.so.2.2.2 unsafe link: /lib64/libss.so.2 => /usr/lib64/libss.so.2 unsafe link: /lib64/libss.so.2.0 => /usr/lib64/libss.so.2.0 ------------------------- There will always be something else. So
the only way to avoid it is to ensure you have full system environment from the start. And if you go this route, having the whole OS under single directory provides more advantages than arbitrary split across multiple directories. Even only from maintenance point of view.
That reasoning also applies to the system environment on a ram/init disk as well. Are you going to put all of /usr and /usr/share on initrd?
You have heavily customized system.
, what prevents you from adding
static mount binary to mount your /usr early in boot process?
That's a possible solution, but all of the above have been moved as well. Also, until I reported the bug and it was fixed, you couldn't build libc statically. Now you can -- but suse never chose to pursue a statically linked libc for boot. Instead they just tell you that you can't have one if you use any id&auth calls (getentX). That would have been perfect for a run-time loaded extra set of files to run when the network is up -- but if your network isn't up, being able to bind in NIS, winbind, LDAP, etc... is of limited use. -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse+owner@opensuse.org