Quote:
So, if we assume that your kernel is 3.8.8-smp, your root partition is an ext4 on /dev/sda2 and your swap partition is on /dev/sda3, then, like I said, an example of generation of an correct initrd is executing: Code:
mkinitrd -c -k 3.8.8-smp -f ext4 -r /dev/sda2 -h /dev/sda3 -m usb-storage:xhci-hcd:ehci-pci:ohci-hcd:usbhid:mbcache:jbd2:ext4 -u -M -o /boot/initrd-3.8.8-smp.gz Then, you have just to add it to your /etc/lilo.conf. |
Just remember when you have two ways to do a task, A and B, it is not always the case that everyone agrees on which is the easier. For example, if the task involved some programming, and A used the C language and B used the Python language, C programmers might find A to be easier and Python programmers might find B to be easier. For me, init scripts are easier because ... I've gone through the process of writing working (and still working on two of my machines) the entire suite of init scripts from scratch (and it's neither BSD nor SYSV style).
But I'll try mkinitrd. |
Quote:
Quote:
|
Quote:
The design of my init scripts used a scheme where the directory /etc/sys contained a list of script files named with a hybrid sequence number and run level scheme: Code:
tesla/root /root 1# cd /etc/sys I find this scheme easier because it's all in one place, and you can see how it is configured with "ls -l". Scripts being started are run in forward order. Scripts being stopped are run in reverse order. So ... there you have the gist of it. There are some core scripts as well. They were all written from scratch. Soon, these machines will be decomissioned (one will get Slackware 14.1). It's unlikely I will run this scheme again, unless it proves valuable in making a udev-free system. But I do always end up hacking init scripts. And this is one reason I like Slackware is it plays well with people changing stuff. edit: Note that host "tesla" and the one next to it "faraday" running this init system have been solid and stable for years ... and have no trouble accepting hot-plugged hard drives on USB or SATA despite there being no udev on either of them. I could understand some people might want what udev does as their tool for exacting control over everything that happens. But that comes at the price of people like me just wanting it to default to the old behavior until explicitly configured otherwise. |
It will be a little while before I test mkinitrd. I put 14.0 on in place of -current to test that (it hangs in udev). I need to put -current back on. But I have decided to do a full erase of everything except the /dev/sda9 -> /home partition, then re-install -current. Maybe get to that later tonight.
|
Are you sure -smp is right?
Code:
root@planck:~# mkinitrd -c -k 3.8.8-smp -f ext4 -r /dev/sda2 -h /dev/sda3 -m usb-storage:xhci-hcd:ehci-pci:ohci-hcd:usbhid:mbcache:jbd2:ext4 -u -M -o /boot/initrd-3.8.8-smp.gz I think 64-bit only has SMP (ever heard of a one core 64 bit CPU?), and does not have "-smp" designation. |
So I tried it without the "-smp" ...
Code:
bash-4.2# mkinitrd -c -k 3.8.8 -f ext4 -r /dev/sda2 -h /dev/sda3 -m usb-storage:xhci-hcd:ehci-pci:ohci-hcd:usbhid:mbcache:jbd2:ext4 -u -M -o /boot/initrd-3.8.8.gz It seems to have no effect. The mouse still does not work. The xhci* modules are not loaded. The following from dmesg suggests something wrong: Code:
[ 0.349093] rootfs image is not initramfs (junk in compressed archive); looks like an initrd |
I went ahead and did the module loading in a script. It seems the "huge" kernel already has SOME of the modules in it. So ordered loading is screwed. And the "generic" kernel is bad in some way and panics before it ever gets to userland/init. I don't know why. Of course this is working with -current which has its ups and downs as the next version is coming together.
So maybe I have to fall way back to kernel building? edit: Here's what the two kernels have configured: Code:
bash-4.2# egrep -i 'usb.storage|xhci.hcd|ehci.pci|ohci.hcd|usbhid' /boot/config-{generic,huge}-3.8.8 |
Having just done it, I'll make suggestions on your kernel below.
Do you want to solve your problem? What's your ~#@$&! chipset? Post the output of lspci, and let people know what you're trying to set up. For a kernel, boot the huge kernel, remove the config, switch everything you use on and connect it, and run make localmodconfig THEN go through that config. I had to find and add modules for webcam, card reader (under some 'staging drivers' heading) and printer as well. some things that are compiled in you won't need, but it speeds thing up mightily. I would label it 3.8.8-1 - there's a spot for a suffix in the general setup. Just make it -1. Next one becomes -2, etc. Also be aware that the slackware kernel has an intel kms driver as part of it, while the stock kernel does not. If you are using the linus kernel, go figure that first. |
See message #10 for motherboard and chipset.
See message #1 for link to lots of info including lspci (it was too much to embed in the initial question). It looks like I was booting the huge kernel all along. It looks like the huge kernel is causing drivers to be initialized out of order because that kernel has some, but not all, of the drivers you suggested loading in a particular order. So the problem of out of order initialization is inherint in the huge kernel itself. I tried the generic kernel, but it has another panic issue somewhere. It looks like my next step is one of these: 1. Get the panic problem of the generic kernel fixed 2. Put all the drivers mentioned in the huge kernel (maybe it will init in the right order that way) 3. Take all the drivers mentioned out of the huge kernel (so that can be loaded as modules in order) 4. Put together a custom kernel in some way. Which config should I remove? The one in /boot or elsewhere? Where should the "make localmodconfig" be done? Is there a special Slackware place for that, or do I just do it in the kernel source tree? And it is still unclear if you are wanting me to do things statically in the kernel or as modules. What all I can do is still rather limited and slow until I get it working right. Other USB things work sometimes, but sometimes not, so I have to use my SATA attached CF card slot to run my rescue device, instead of USB. At this point I'm looking at Alien's guide to building a kernel and making a new custom one. That or just test cross-fitting the Xubuntu kernel and module set just to see what it does. |
Intel C602 Sandy Bridge chipset. I'm not familiar at all with it, but others will be. Intel's hardware is usually straight down the line.
In your option list, I would do 1. or 4., not 2, or 3. 2 or 3 might be a faster route, but they might never sort it. Your problem with the generic kernel is simply that you haven't made an initrd to suit. You need modules for filesystem(ext4 or whatever), motherboard chipset, usb [x|e|u]hci_hcd, and anything else you need to get onto the root filesystem. The initrd is mounted on / and the kernel grabs modules from there until your root partition is mounted over it on / and the module tree becomes available. A problem with the huge kernel is that ohci (which you don't want) is compiled in, whereas uhci is just a module. You get a kernel source (FYI, the slackware 3.8.8 kernel source in current has the intel graphics driver added) cd to top source, and work from there. A good start would be Quote:
As for the lspci, there is a Nvidia card in there as well. the kernel offers some laptop gpu switching option at this stage so maybe we're catching up. |
Quote:
Quote:
Quote:
My previous Slackware systems don't need or have an initrd and their USB works (there's no XHCI involved, though). I did not pay attention to whether they are statically built in or loaded as modules, but USB does work. I do know how initrd fundamentally works, as well as loading modules. But I have not needed initrd on Slackware before because the basics have always been there in generic and huge ... enough to get to the point where modules fill in the rest. Quote:
Wikipedia says XHCI supports ALL device speeds. So I guess 1.1 won't be a problem if we can get it to work. So in theory XHCI is all that I need. But the other drivers like OHCI are interfering? My graphics is working fine so far. The nouveau driver loaded, switch the text screen to frame buffer mode, and Slackware loaded some fonts that gave a 240x75 text display in 1920x1200 pixels. The installer did a larger font that actually looked nice (I'll figure out which it is later). Quote:
Quote:
|
Quote:
|
Quote:
Code:
bash-4.2# egrep -i 'ohci|uhci|ehci|xhci' < /boot/config-generic-3.8.8 If that works, it could complicate how to set up kernels. On hosts without XHCI, which run from USB storage devices, a kernel without EHCI could not get to the root device. It would have to be there for all those systems older than a few months or so. I still need to see if that causes problems and if it does, if the BIOS setting above can get around it. So it looks like I'll go build a couple kernels based on the huge kernel config, tweaked to have in one case just XHCI alone, and in the other have XHCI and EHCI combined, and blacklist OHCI and UHCI for testing them. I spent today switching to the EXTLINUX boot loader and did not work on the USB issues. |
To prevent modules loading you can
1. put them in /etc/modprobe.d/blacklist They still just might load, so you can also have some usb.conf in /etc/modprobe.d with lines like Code:
install ohci_hcd /sbin/modprobe xhci_hcd Using those two, you should be able to experiment with all the modules one by one. |
All times are GMT -5. The time now is 11:44 AM. |