> Is it possible to make Xen-U kernels fake the loading of modules? Every
> time someone says "insmod foobar", the kernel would say "ok, foobar is
> now on the lsmod list" but then it doesn't actually run any code in the
> module.
>
> Would this fake-out anaconda sufficiently? Or does anaconda run
> 'insmod' or 'modprobe' (in which case replacing those programs with
> symlinks to '/bin/true' would fix the problem)?
Interesting thought. I just gave this a try, replacing /usr/sbin/insmod
with a symbolic link to /usr/bin/true, and it didn't work: after I
selected a module to load, it came up with the same messagebox titled "No
driver found": "Unable to find any devices of the type needed for this
installation type. Would you like to manually select your driver or use a
driver disk?" I tried a module in each of Local CDROM, Hard drive, and
FTP.
So perhaps the key is first convincing anaconda that it should try loading
a (any) module, then using the /bin/true trick. Any idea how anaconda
(and/or other Linux apps) tests for which devices are present? Looking at
the relevant strace info (see below), it seems to get a list of PCI and
USB signatures, so it must match them somehow against a memory location or
file contents(?). (It seems like it'd be fairly heavy-weight to extend
Xen to pretend to export a PCI device just to fool anaconda, but maybe we
could just create a static file /proc/pci/something with the expected
entry in it.)
Below is the strace of the anaconda loader (mentioned in my earlier
message), grepped for lines that start with "open".
open("/var/run/loader.run", O_RDWR|O_CREAT|O_TRUNC, 0666) = 3
open("/dev/tty3", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
open("/dev/tty3", O_WRONLY|O_LARGEFILE) = 4
open("/tmp/anaconda.log", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 EIO
(Input/output error)
open("/proc/cmdline", O_RDONLY|O_LARGEFILE) = 5
open("/tmp/netinfo", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/modules/module-info", O_RDONLY|O_LARGEFILE) = 5
open("/proc/modules", O_RDONLY|O_LARGEFILE) = 5
open("/modules/modules.dep", O_RDONLY|O_LARGEFILE) = 5
open("/modules/modules.cgz", O_RDONLY) = 5
open("/tmp/modprobe.conf", O_WRONLY|O_APPEND|O_CREAT|O_LARGEFILE, 0666) =
-1 EIO (Input/output error)
open("/etc/screenfont.gz", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/dev/console", O_RDWR|O_LARGEFILE) = 5
open("/proc/meminfo", O_RDONLY|O_LARGEFILE) = 5
open("/modules/modules.cgz", O_RDONLY) = 5
open("/tmp/modprobe.conf", O_WRONLY|O_APPEND|O_CREAT|O_LARGEFILE, 0666) =
-1 EIO (Input/output error)
open("/modules/modules.cgz", O_RDONLY) = 5
open("/tmp/modprobe.conf", O_WRONLY|O_APPEND|O_CREAT|O_LARGEFILE, 0666) =
-1 EIO (Input/output error)
open("/modules/modules.cgz", O_RDONLY) = 5
open("/tmp/modprobe.conf", O_WRONLY|O_APPEND|O_CREAT|O_LARGEFILE, 0666) =
-1 EIO (Input/output error)
open("/usr/share/hwdata/pcitable", O_RDONLY) = 5
open("/lib/modules/2.6.9-xenU/modules.pcimap", O_RDONLY) = -1 ENOENT (No
such file or directory)
open("/etc/modules.pcimap", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/modules/modules.pcimap", O_RDONLY) = 5
open("/usr/share/hwdata/pcitable", O_RDONLY) = 5
open("/lib/modules/2.6.9-xenU/modules.pcimap", O_RDONLY) = -1 ENOENT (No
such file or directory)
open("/etc/modules.pcimap", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/modules/modules.pcimap", O_RDONLY) = 5
open("/modules/pcitable", O_RDONLY) = 5
open("/modules/modules.pcimap", O_RDONLY) = 5
open("/.buildstamp", O_RDONLY) = 5
open("//.terminfo/l/linux", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/usr/share/terminfo/l/linux", O_RDONLY) = 6
open("/dev/tty", O_RDWR) = -1 ENXIO (No such device or
address)
open("/proc/cmdline", O_RDONLY|O_LARGEFILE) = 6
open("/lib/modules/2.6.9-xenU/modules.usbmap", O_RDONLY) = -1 ENOENT (No
such file or directory)
open("/usr/share/hwdata/usb.ids", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("./usb.ids", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/proc/bus/usb/devices", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/proc/scsi/usb-storage-0", O_RDONLY|O_DIRECTORY) = -1 ENOENT (No
such file or directory)
open("/etc/lang-table", O_RDONLY) = 6
open("/lib/modules/2.6.9-xenU/modules.usbmap", O_RDONLY) = -1 ENOENT (No
such file or directory)
open("/usr/share/hwdata/usb.ids", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("./usb.ids", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/proc/bus/usb/devices", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/proc/scsi/usb-storage-0", O_RDONLY|O_DIRECTORY) = -1 ENOENT (No
such file or directory)
open("/lib/modules/2.6.9-xenU/modules.usbmap", O_RDONLY) = -1 ENOENT (No
such file or directory)
open("/usr/share/hwdata/usb.ids", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("./usb.ids", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/proc/bus/usb/devices", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/proc/scsi/usb-storage-0", O_RDONLY|O_DIRECTORY) = -1 ENOENT (No
such file or directory)
open("/proc/driver/cciss/cciss0", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/proc/driver/cpqarray/ida0", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/proc/rd/c0/current_status", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/proc/i2o/iop0/lct", O_RDONLY) = -1 ENOENT (No such file or
directory)
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://productguide.itmanagersjournal.com/
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/xen-devel
|