Date: Fri, 25 Oct 2013 15:31:20 -0700 From: David Newman <dnewman@networktest.com> To: freebsd-questions@freebsd.org Subject: Re: viewing major and minor device numbers Message-ID: <526AF138.9000200@networktest.com> In-Reply-To: <025FA68F-57BF-4B6E-8898-5BD3EAF96372@lafn.org> References: <526AC5E7.3080900@networktest.com> <20131025213456.13153587.freebsd@edvax.de> <526AD757.7010704@networktest.com> <025FA68F-57BF-4B6E-8898-5BD3EAF96372@lafn.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 10/25/13 3:24 PM, Doug Hardie wrote: > > On 25 October 2013, at 13:40, David Newman <dnewman@networktest.com> wrote: > >> On 10/25/13 12:34 PM, Polytropon wrote: >>> On Fri, 25 Oct 2013 12:26:31 -0700, David Newman wrote: >>>> FreeBSD 9.2-RELEASE, amd64 >>>> >>>> To create some character special devices in a chroot environment, I've >>>> previously used mknod, but now can't find the major and minor device >>>> numbers. >>>> >>>> The ls manpage says these numbers should be displayed in the size field. >>>> However, I'm seeing only one hex value, e.g.: >>>> >>>> $ ls -l /dev/null >>>> crw-rw-rw- 1 root wheel 0x13 Oct 25 12:22 /dev/null >>>> >>>> So I don't know what major and minor values to feed mknod. Or is there >>>> another way to do this? >>> >>> Do you have any "suspicious" ls alias or options preconfigured? >>> That output looks a bit strange, it should be something like >>> this (example from a host system, not from inside a jail): >>> >>> % /bin/ls -laFG /dev/null >>> crw-rw-rw- 1 root wheel 0, 17 Oct 25 21:33 /dev/null >>> ^ ^^ >>> >>> This is the binary /bin/ls, no "shell builtin" or the like, >>> called from the C shell; OS is FreeBSD 8, x86. >> >> Even with /bin/ls, the system still returns the hex code: >> >> # /bin/ls -laFG /dev/null >> crw-rw-rw- 1 root wheel 0x13 Oct 25 13:22 /dev/null >> >> Two machines, both running 9.2/amd64, both return these hex codes. One >> machine runs on bare metal and the other is a VM I just built. Both >> machines have no aliases for ls. >> > > The ls source module print.c has been changed in the printdev module to print differently: > > Here is the module from 8.x (I don't recall which exact version this is) > > printdev(size_t width, dev_t dev) > { > char buf[DEVSTR_HEX_LEN + 1]; > > if (minor(dev) > 255 || minor(dev) < 0) > (void)snprintf(buf, sizeof(buf), "%3d, 0x%08x", > major(dev), (u_int)minor(dev)); > else > (void)snprintf(buf, sizeof(buf), "%3d, %3d", > major(dev), minor(dev)); > > (void)printf("%*s ", (u_int)width, buf); > } > > > > Note that it splits the dev number into the two fields we are all used to. > > Now here is the same code from 9.2 Release: > > printdev(size_t width, dev_t dev) > { > > (void)printf("%#*jx ", (u_int)width, (uintmax_t)dev); > } > > > > Note its a lot simpler because it does not bother to split out the major and minor numbers. Ahhh, got it. Many thanks. In this case I'm OK going with devfs, but thanks for clearing up why the output is different in 9.x. I suppose one could say this "breaks" mknod, or at least makes it much harder to use. But since the same thing is available from devfs, and it doesn't require messing with device numbers, I guess it's OK. Thanks again dn > > You might be able to replace just this module and rebuild ls. major and minor are still in the libs. It looks like it should work, but I haven't tried it. > > > > _______________________________________________ > freebsd-questions@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-questions > To unsubscribe, send any mail to "freebsd-questions-unsubscribe@freebsd.org" >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?526AF138.9000200>