Device name convert for linux use

Gao Long urgaolong at
Wed May 26 06:52:13 PDT 2004

Akihiro Sagawa <sagawa at> wrote:Hi,

In "Device name convert for linux use", wrote:
> I was developig a name and major/minor device number converting 
> mechanism for linux applications to use on a linux.ko module , as if
> the application itself run on a linux.
> Is this helpful to linux emulator ? 

This mail was a bit old, but that sounds great.

AFAIK, glibc's wordexp(3) checks /dev/null's device number before
opening /dev/null as stderr for a shell. If they are not match (ie.
under FreeBSD Linux emulation mode), wordexp always returns error.

And (maybe?) also checks /dev/null's device number before
launching programs when one of stdin, stdout, stderr is closed and program
has set SetUID bit. (In glibc-2.3.2/sysdeps/generic/dl-sysdep.c???)

Therefore I made a quick hack patch for sys/compat/linux/linux_stats.c
to tell a lie about /dev/null's device number. But Sharp Gao's way seems
to be better. :)

Where is the patch?

Akihiro SAGAWA 

To reproduce this problem, compile below source 
with linux gcc.
---- for wordexp, cut here

int main(int argc, char* argv[])
int i, err;
wordexp_t we;

err = wordexp("`date`", &we, 0);
printf("err=%d\n", err);
if (!err)
for(i=0; i < we.we_wordc; i++)
printf("[%d] %s\n", i, we.we_wordv[i]);
---- to here

---- for ld-linux, cut here

int main(int argc, char* argv[])
char* exec_args[] = {"id", NULL};

printf("bye stdin\n");
printf("stdin has closed\n");
execvp(exec_args[0], exec_args);
printf("failed to exec prog.\n");
---- to here

freebsd-emulation at mailing list
To unsubscribe, send any mail to "freebsd-emulation-unsubscribe at"


Hi , I moved from imgaolong at to urgaolong at 

for the trouble of gb2312 coding.

The intial pulse to build up a convert table is that we find some one in 

linux always uses the tty? instead of ttyv? , and the gnu libc is always 

fond of checking the major/minor numbers of the devices:->

I have patched the linux_file.c to use a virual name system 

just correspond to  the linux systems , when linux.ko passes device

names into the FreeBSD kernel , we just consult the table and convert 

them into proper FreeBSD styles. So every linux application running on a 

FreeBSD seemed to have a correct device name space , including the 

major/minor device numbers.

After all , the real behavior of the devices are the critical thing. If the 

behavior of the device in two operating systems is absolutely the 

same , so every thing is OK , as we have already impletmented the 

tty? to ttyv? convertion , nothing bad has ever happened . But not to 

any device name else, if the device's behavior is just alike. Other things 

continued to make the table still very short.

I may take up time to implement a my-best solution ,  well , it's just a 

try , before I could understand every details of the device name properties 

of both the Linux and FreeBSD devices.I was still wandering whether it 

could be taken into the next version of linux emulation , for it really can 

improve the compatiblities.

  Yahoo! Messenger - Communicate instantly..."Ping" your friends today! Download Messenger Now

More information about the freebsd-emulation mailing list