eudev-project / eudev

Repository for eudev development
GNU General Public License v2.0
522 stars 147 forks source link

Device nodes not created #60

Closed bkauler closed 11 years ago

bkauler commented 11 years ago

Testing beta4.

At first I thought that eudev is working, but when I plugged in a usb modem, /dev/ttyUSB0 did not get created. In fact, no device nodes get created, so sound wasn't working either.

Puppy Linux has a static /dev, hence boots up to the desktop and initially everything appeared ok. But no extra device nodes get created when new hardware detected.

This bug has been reported before: https://github.com/gentoo/eudev/issues/17 https://github.com/gentoo/eudev/issues/55

...and in both cases marked as solved.

However, it is not solved for me.

One of those threads mentions a mismatch between prefix /usr and /bin or /sbin, so I configured this way, specifying everything:

./configure --prefix=/ --sysconfdir=/etc --localstatedir=/var --sbindir=/sbin --libdir=/lib --libexecdir=/lib/udev --with-rootlibdir=/lib --with-firmware-path=/lib/firmware/updates:/lib/firmware --enable-introspection=no --disable-selinux --enable-legacylib --disable-libkmod --enable-gudev --with-rootprefix="" --disable-gtk-doc --disable-manpages --disable-keymap --with-modprobe=/sbin/modprobe --bindir=/bin --datarootdir=/usr/share --includedir=/usr/include --sharedstatedir=/usr/com --libexecdir=/usr/libexec --enable-modules --build=i486-pc-linux-gnu

...but, it makes no difference.

With exactly the same environment, if I bootup with udevd from udev 167 (the version that I have been using up until now), device nodes do get created.

I can't see any error messages from 'dmesg' that indicate what is wrong.

blueness commented 11 years ago

bkauler: I didn't forget about this bug! I'm working on a new release. Can you give me breif instructions on how to build in puppy and I'll make sure to support eudev for it.

bkauler commented 11 years ago

Hi, That's great.

Yeah, it is easy to setup Puppy for compiling.

Download Precise Puppy 5.6.1, these two files (171MB, 139MB): http://ftp.nluug.nl/ftp/pub/os/Linux/distr/quirky/precise-5.6.1/precise-5.6.1.iso http://ftp.nluug.nl/ftp/pub/os/Linux/distr/quirky/precise-5.6.1/devx_precise_5.6.1.sfs

md5sums: 58824fef8aeb62e64636035aa1ff09df devx_precise_5.6.1.sfs 058bd25766ed88e5a9d363c1e50010da precise-5.6.1.iso

Puppy can be run quite happily booting off CD, so I'll give those instructions. After first bootup, at the first shutdown, you will be asked to create a "save-file" for your session, and you will choose a partition to save it in.

The devx.sfs file is a "jumbo pack" of everything needed to turn Puppy into a C/C++/Vala/Genie/BaCon compiler environment. If you know in advance where you are going to create the session save-file, move the devx.sfs there, at top / directory.

The steps:

  1. Burn the .iso file to a CD,
  2. Boot up, you will be running in RAM only.
  3. Shutdown, from the Menu -> Shutdown -> Reboot computer, save the session.
  4. Next bootup, Puppy will see the devx*.sfs and a gui window will offer to load it (it is a Squashfs filesystem, that gets loaded as a aufs layer).
  5. Reboot, and you are ready to go (type "which gcc" in a terminal will confirm the devx file is loaded!)

If you need kernel source, that is also a .sfs file. You can get it from here: http://ftp.nluug.nl/ftp/pub/os/Linux/distr/quirky/pet_packages-precise/kernel_src-3.2.44-patched.sfs md5sum: 8921d5573253acd59b6428251a099dcd kernel_src-3.2.44-patched.sfs

...download it to the same partition, at /, as the devx*.sfs, and it can be loaded as well.

SFS files can be individually loaded and unloaded via the BootManager: Menu -> System -> BootManager

Many Puppy users prefer to install Puppy to the hard drive, in what we call "frugal" mode. From a running Puppy, you can do this with the Puppy Universal Installer: Menu -> Setup -> Puppy Universal Installer.

Though, seasoned Puppy users do the installation manually, just by opening the .iso file, extract the files and put them in a folder in the hard drive, then configure GRUB. Which is very easy to do. Some notes are here: http://puppylinux.com/hard-puppy.htm

If you want to read-up on SFS files: http://puppylinux.com/development/package-management.htm

Note, Puppy runs as root only. We do have a user login named "fido", and another non-root account named "spot". However, we are still working on some issues with fido, and spot will be available in the next release of Puppy. root, fido and spot are explained here: http://puppylinux.com/technical/root.htm

...which you might find to be an interesting read, especially the link to FatDog64 explanation of running as root.

Precise Puppy 5.6.1 is my latest, announced here: http://bkhome.org/blog2/?viewDetailed=00275

...it is built from Ubuntu binary packages, so the Puppy Package Manager can install anything from the Ubuntu repos.

One more link: the FAQ is helpful: http://puppylinux.com/faq.htm

Regards, Barry Kauler

On 6/6/13, blueness notifications@github.com wrote:

bkauler: I didn't forget about this bug! I'm working on a new release. Can you give me breif instructions on how to build in puppy and I'll make sure to support eudev for it.


Reply to this email directly or view it on GitHub: https://github.com/gentoo/eudev/issues/60#issuecomment-19004484

blueness commented 11 years ago

Thanks, I see what the problem is and why its not fixed for puppy but it is for others. Give me a day or two and I'll make sure I confirm the fix and give you instructions on how to build eudev for puppy. FYI, testing on gentoo shows the current eudev head is in good shape so there's no reason why we can't get it there for puppy.

BTW, what a fun distro puppy is! First time ever using it. Keep up the nice work.

blueness commented 11 years ago

Okay, I've got all devices working on precise-5.6.1 with the latest master/HEAD. Here's what you need to do:

1) Turn on the following two options in the kernel config for 3.2.44. All other kernel options can be identical.

CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y

2) configure eudev with

./configure \ --prefix=/usr \ --disable-manpages \ --infodir=/usr/share/info \ --datadir=/usr/share \ --sysconfdir=/etc \ --localstatedir=/var/lib \ --with-rootprefix= \ --docdir=/usr/share/doc/eudev \ --libdir=/usr/lib \ --with-firmware-path=/lib/firmware \ --with-html-dir=/usr/share/doc/eudev/html \ --with-rootlibdir=/lib \ --enable-split-usr \ --exec-prefix=/ \ --enable-gudev

3) Gentoo like most linux distros, has moved /var/run to /run and eudev expect this. grep the code an you'll see lots of places where its hard coded /run. We can patch this out for puppy, but I recommend that the next release of puppy have /var/run be a sym link to /run to futureproof the fs hierarchy. I actually did a sym link from /run to /var/run, but the opposite is better.

4) I'm also following the Gentoo convention of putting the hwdb in /etc/udev and rules in /lib/udev, although rules in /etc/rules.d are still parsed. Basically:

    udevconfdir:                   /etc/udev
    udevconffile:                   /etc/udev/udev.conf
    udevhwdbdir:                  /etc/udev/hwdb.d
    udevhwdbbin:                 /etc/udev/hwdb.bin
    udevkeymapdir:              /lib/udev/keymaps
    udevkeymapforceredir:    /lib/udev/keymaps/force-release
    udevrulesdir:                  /lib/udev/rules.d

5) Your network will come up with the persistent names, eg enp0s3 instead of eth0. If this is a problem, then mkdir -p /etc/udev/rules.d ; touch /etc/udev/rules.d/80-net-name-slot.rules and you will supercede the new naming scheme and fall back on the old.

Please test to make sure its working for you since you know the system better than I do. I've only been a puppier for about 4 hours :) If you need any changes I'll be glad to add them.

bkauler commented 11 years ago

blueness, Thanks very much for that work. I am pleased to report that eudev is now working in Puppy.

I recompiled the kernel with devtmpfs enabled, as you advised. I configured eudev this way:

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/lib/udev --with-rootlibdir=/lib --with-firmware-path=/lib/firmware/updates:/lib/firmware --enable-introspection=no --disable-selinux --disable-libkmod --enable-gudev --with-rootprefix="" --disable-gtk-doc --disable-manpages --disable-keymap --with-modprobe=/sbin/modprobe --libexecdir=/usr/libexec --enable-modules --build=i486-pc-linux-gnu --enable-split-usr --exec-prefix=""

Precise Puppy is still using module-init-tools, so I used --disable-libkmod.

I made a couple of changes in the Woof build system, to work with or without a devtmpfs-enable kernel, and built a new Precise Puppy, and it works great.

Thanks very much.

Next thing I will do is test with kmod.

On 6/8/13, blueness notifications@github.com wrote:

Okay, I've got all devices working on precise-5.6.1 with the latest master/HEAD. Here's what you need to do:

1) Turn on the following two options in the kernel config for 3.2.44. All other kernel options can be identical.

CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y

2) configure eudev with

./configure \ --prefix=/usr \ --disable-manpages \ --infodir=/usr/share/info \ --datadir=/usr/share \ --sysconfdir=/etc \ --localstatedir=/var/lib \ --with-rootprefix= \ --docdir=/usr/share/doc/eudev \ --libdir=/usr/lib \ --with-firmware-path=/lib/firmware \ --with-html-dir=/usr/share/doc/eudev/html \ --with-rootlibdir=/lib \ --enable-split-usr \ --exec-prefix=/ \ --enable-gudev

3) Gentoo like most linux distros, has moved /var/run to /run and eudev expect this. grep the code an you'll see lots of places where its hard coded /run. We can patch this out for puppy, but I recommend that the next release of puppy have /var/run be a sym link to /run to futureproof the fs hierarchy. I actually did a sym link from /run to /var/run, but the opposite is better.

4) I'm also following the Gentoo convention of putting the hwdb in /etc/udev and rules in /lib/udev, although rules in /etc/rules.d are still parsed. Basically:

    udevconfdir:                   /etc/udev
    udevconffile:                   /etc/udev/udev.conf
    udevhwdbdir:                  /etc/udev/hwdb.d
    udevhwdbbin:                 /etc/udev/hwdb.bin
    udevkeymapdir:              /lib/udev/keymaps
    udevkeymapforceredir:    /lib/udev/keymaps/force-release
    udevrulesdir:                  /lib/udev/rules.d

5) Your network will come up with the persistent names, eg enp0s3 instead of eth0. If this is a problem, then mkdir -p /etc/udev/rules.d ; touch /etc/udev/rules.d/80-net-name-slot.rules and you will supercede the new naming scheme and fall back on the old.

Please test to make sure its working for you since you know the system better than I do. I've only been a puppier for about 4 hours :) If you need any changes I'll be glad to add them.


Reply to this email directly or view it on GitHub: https://github.com/gentoo/eudev/issues/60#issuecomment-19149948

blueness commented 11 years ago

bkauler: good. I'll keep up puppy support. Ping me anytime. I'm on IRC: freenode/#gentoo-udev.