Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Device nodes not created #60

Closed
bkauler opened this issue Apr 19, 2013 · 6 comments
Closed

Device nodes not created #60

bkauler opened this issue Apr 19, 2013 · 6 comments
Assignees

Comments

@bkauler
Copy link

bkauler commented Apr 19, 2013

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:
#17
#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.

@ghost ghost assigned blueness Apr 22, 2013
@blueness
Copy link
Contributor

blueness commented Jun 5, 2013

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
Copy link
Author

bkauler commented Jun 7, 2013

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:
#60 (comment)

@blueness
Copy link
Contributor

blueness commented Jun 8, 2013

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
Copy link
Contributor

blueness commented Jun 8, 2013

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

  1. 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.

  2. 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
  1. 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
Copy link
Author

bkauler commented Jun 12, 2013

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

  1. 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.

  2. 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
  1. 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:
#60 (comment)

@blueness
Copy link
Contributor

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants