Click to See Complete Forum and Search --> : Upgrade slackware 10.x to 11.x as well as kernel 2.4 to 2.6


acid45
07-04-2007, 05:40 AM
Hey everyone,

I've getting bored with what I know to do in Slackware, so I need some adventure. And I have just the opportunity right now. I only have Slackware 10.1 disks and I would like to upgrade my installation to 11-current. I have swaret installed so the individual components _shouldn't_ be a problem but I'm guessing I will have some anyway.

I was wondering if anyone knew of a guide I could follow that would help me out. I will need questions answered such as:
"What do I upgrade first? Compiler? Kernel? Libs?"
"Will I be able to follow this guide generically?" *a kernel upgrade guide I found
"Can I use any kernel from kernel.org or does my distro require a special kernel? .config file?"

I would like to be able to read the guide and figure these out myself, but if I can just download any kernel from kernel.org and upgrade to that, that would be great.

This is not my first kernel upgrade but the last time it was using the kernel in the /testing or maybe the other 2.6 kernel provided with Slackware 11. Using that disc is _not_ an option as it is 5,000km away. That was a piece of cake. I'm guessing I will run into many more problems going from slackware 10.1 to 11 as well as kernel 2.4 to 2.6. I'm not quite sure which order to go in either. I couldn't really find anything on google about it. I did find one guy trying to upgrade his kernel using swaret. But that's just one stone in the path.

This is what I THINK I will have to do.

Upgrade Kernel to 11 versions
Set SwareT to 11-current
Upgrade all
Probably manually upgrade some things, which couldn't be installed using SwareT that is what I'm really worried about.

Mostly I'm just looking for answers to my questions from documentation rather than lamely relying on good folks on the net, like you guys here at JustLinux.com

bwkaz
07-04-2007, 10:20 AM
Not sure if there's any documentation hanging around, but your approach seems valid to me. Get the kernel up and running first, then get userspace all set. Same way as I did my 32-bit to 64-bit-multilib migration. :)

I suspect the first package to upgrade after the kernel would be glibc -- but a newer glibc may require newer versions of other packages too. So you may have to upgrade everything in one fell swoop, then reboot and hope it works. ;)

If there's any kind of Slackware version-upgrade process, then obviously following it would be recommended. But I have no idea if there is or not...

acid45
07-04-2007, 05:13 PM
Thanks bwkaz.

I have a few questions, well more like confirmations of what I think I can do.

I can just use the default kernel config for 2.6.21.5 right? and then modifiy it to include everything I need, like sata support etc.

I can just use a kernel from kernel.org right?

paj12
07-04-2007, 08:07 PM
With every release, Mr. Volkerding writes up a CHANGES_AND_HINTS.TXT file with instructions on how to upgrade from the previous release. The file for Slackware 11.0 can be found here:
ftp://ftp.slackware.com/pub/slackware/slackware-11.0/CHANGES_AND_HINTS.TXT

No matter what, the first two packages you want to upgrade are bash and glibc-solibs. Pkgtool uses these, and having old versions can crash pkgtool and leave your upgrade only half done.

EDIT: Sorry, the file I was thinking of was UPGRADE.TXT (ftp://ftp.slackware.com/pub/slackware/slackware-11.0/UPGRADE.TXT). Not that CHANGES_AND_HINTS.TXT doesn't have a lot of great information too.

acid45
07-04-2007, 09:57 PM
Hey, I just noticed that 12.0 was released. I should just be able to download it's packages and upgrade to that right?

acid45
07-04-2007, 10:52 PM
Okay, I've read both the upgrades. This is what I'm going to do.

Upgrade to 11, then to 12. I may have to upgrade to 10.2 first though :(

Ah well, it's the experience I want. I'm gona download the ISOs for 12 first in case I get into trouble I can't get out of. But I'd rather upgrade.

bwkaz
07-05-2007, 11:47 AM
I can just use the default kernel config for 2.6.21.5 right? Not unmodified, but you can use them as a starting point, yes.

and then modifiy it to include everything I need, like sata support etc. Also make sure you include everything your distro's boot scripts expect -- e.g. if the scripts unconditionally try to load a certain module, they'll fail if that module isn't built or is built into the kernel. It may be safer to start with your current kernel's .config file, if you can get that.

Actually, never mind: don't start with your current .config if your current kernel is 2.4, because several settings have changed.

I can just use a kernel from kernel.org right? You should be able to, yes. Grab the latest stable (which at the time of this posting is 2.6.21.5).

acid45
07-07-2007, 01:39 PM
Well, I got from 10.1 to 11 forllowing the 10.2 -> 11 guide. I'm having troubles finding the package to install the s11 test26 kernel source package. All I seem to be able to find is the bzImage.

Reading some more I found that I need to install the "kernel-headers" package.

P.S.
slackware 11 upgrade to a 2.6 kernel
brings my post up as #3 :p
I was hoping it was gona help :mad:

acid45
07-10-2007, 02:16 PM
Okay,

I've hit a brick wall. In the first set up steps provided fro upgrading from 11.0 to 12.0 it says you need a 2.6.18+ kernel. I have 2.4.33.3.

This is where I run into a wall, it says there are kernels in the a/ series of packages but that the 'generic' kernels will require an initrd and the mkinitrd that is installed in 11.0 is not suitable for making it, so I have to use one of the 'huge' kernels.

By 'it', I mean ftp://ftp.slackware.com/pub/slackware/slackware-12.0/UPGRADE.TXT
-or-
ftp://ftp.slackware.com/pub/slackware/slackware-12.0/CHANGES_AND_HINTS.TXT
They seem to be the same.

I did this and used installpkg, because I learned my lesson the first time, to install a second kernel.

I modified LILO and ran it and now I have two options to boot:
Slackware2.4 <- uses 2.4.33.3 slackware 11 kernel
Slackware2.6 <- uses 2.6.21.5 slackware 12 kernel

When I choose Slackware2.6, I get an error:
Failed to open device '/dev/sda2': No such file or directory
An error has occurred durring the root filesystem check......
blah blah blah
try e3fsck blah blah blah
Type ctrl-d to proceed with normal startup, (or give the root password to enter maintenance mode)

If I give the root password and enter maintenance mode, it mounts the filesystem as read only, so I can't do any changes. If I try to do a filesystem check using reiserfsck, it does not work. I get the same "Unable to open device" error message above.

Someone I know, who isn't as familiar with Linux as I am, suggested compiling the reiserfs into the kernel. But I don't even think that's the issue because it wouldn't mount read-only if it wasn't compiled in. AND, I would get an error message along the lines of:

Kernel Panic - Not Syncing: VFS: Unable to mount root file system on unknown block(8,2)

I know, I've run into that issue before.

So I decided to download the 2.6.21.5 kernel from kernel.org. I compiled it, made sure it had SATA support compiled in for my SATA device, as well as for the reiserfs. I get the exact same thing.

I tried to install the slackware 11 2.6.17.13 kernel, that gives me the same thing as well. I think there is a 2.6 kernel source package somewhere between the two releases that I installed and compiled and got the same error durring root file system check.

The only thing I can think of is that I need to install a new reiserfs progs package. The only reason I haven't is that this 2.4 kernel is the only thing I can get working.

ANY ideas, comments or suggestions would be greatly appreciated!

Thanks for taking the time to read this.

[edit]

-I've read an article at kerneltrap.oreg among many others that seem all to say the same thing.
-ReiserFS is compiled into the kernel and not just a module, so I shouldn't need an initrd.
-I've checked all my versions, all of which exceed the minimum.
-Still the same error trying t fsck the root filesystem.
-I wish I could find the wiki page I found for upgrading kernels that hepled me the first time I went from 2.4 to 2.6. The only difference now is that when I upgraded from 2.4 to 2.6, it was all from the same Slackware 11 DVD. Now, I've installed 10.1 and upgraded to 11 with a 2.4.33 kernel, which is where I was at the first/last time I upgraded to a 2.6 kernel. I believe it was the same kernel I'm trying right now. 2.6.18. I hope this works as 2.6.17.13 and 2.6.21.5 did not work.

acid45
07-12-2007, 05:34 PM
I am obviously doing something wrong but the guides I'm following don't seem to mention anything about how to fix it. The only answer I can find for my issue is that I have to compile the reiserfs into the kernel, which it was from the start. I read quite a bit of kernel stuff before compiling my network card driver into the kernel and found that some people had troubles with ext3 being built as a module so they had to compile it into the kernel or create an initrd.

I don't think I should have to create an initrd but this is the only thing I can think of to do now. The upgrade guide says that the slackware 11 mkinitrd is not suitable for creating a 2.6.18 initrd ready for slackware 12. Everything is so conflicting.

I've tried about 10 different 2.6 kernels now.

I tried 2 different kernels from the slackware 11(2.6.17.13) and slackware 12(2.6.21.5) packages that didn't require compiling, which means I would have to create an initrd to use reiserfs. I also tried source installs from slackware 11 (2.6.17.13-huge, 2.6.18-testing) and from slackware 12 (2.6.21.5). They all gave me two errors, one because I didn't have a initrd to preload the reiserfs module...which I didn't do because it's said that the mkinitrd for slackware 11 can't make a suitable one. And one that I'm going to try and resolve by creating an initrd anyway.

[edit]
I think I found my problem.

When I boot the 2.6 kernel and go into maintenance mode, if I run dmegs it says that /dev/sda2 is a scsi disk ( that's how sata is seen ), but it also says that it has mounted root /dev/sda2 ( ext filesystem )

this is my lilo entry for the 2.6 kernel.

image = /boot/vmlinuz
root = /dev/sda2
initrd = /boot/initrd.gz
label = slackware2.6.18
read-only

to create the initrd I ran:

mkinitrd -c -f reiserfs -k 2.6.18 -m reiserfs

Since the defaults for -o and -s were acceptable I didn't specify.

It ran without warning or errors and then I reran lilo.

It said it added slackware2.4 and slackware2.6.

root# lilo
Added slackware2.4.33 *
Added slackware2.6.18

I would assume that this meant that initrd.gz was a valid initrd and that everything worked fine.

I have also tried copying vmlinux to /boot/vmlinuz-2.6.18 and that didn't help either.

I always run lilo before trying the new kernel with the modifications, and if I get the "error" during root fsck, i reboot into the 2.4 kernel and run lilo again after making sure the lilo.conf file is configured properly.

Any ideas, suggestions or slaps and links to other threads that I may have missed would be greatly appreciated.

This is what I have done, with various modifications, such as different kernel versions.

cd /path/to/slackward/packages/a
ls kernel*
installpkg kernel-[generic/huge/other]-[kernelversion].tgz
I do the same for kernel-headers and kernel-modules
between different attempts I uninstall previously installed packages using:
removepkg /var/log/packages/[packages installed]
ls -l /usr/src
cd /linux ( since it always seems to be a link to /usr/src/linux-[kernel version] after I do an installpkg for the source
make menuconfig and recently make xconfig
make
make install
this always moves the previous attempts to vmlinuz.old, System.old, etc.
and copies the /arch/i386/.../bzImage to /boot/vmlinuz.
sometimes I would just make sure and copy the files manually, adding "-[kernel version]", including the .config to /boot/config
I would also add another lilo entry so that there are 3 lilo entries

image = /boot/vmlinuz-[kernel version]
root = /dev/sda2
label = slackwareK[kernel version]
read-only

I don't seem to ever get any errors setting up a kernel to try to boot. I don't know what I'm doing wrong. The only thing that I can see that bothers me is when I try to boot to the 2.6 kernel is says mounted root ( ext filesystem ) even though when I tried to create an initrd i set the fs to reiserfs and loaded the reiserfs module, even though I compiled reiserfs into the kernel.

But it also says that root is reisferfs 3.2 and has been found on /dev/sda2 before that.

If I go into maintenance mode there isn't anything in /dev/ except two files. I forget what they are.

When I boot the 2.4 kernel, only 1 CD-ROM is detected(/dev/hdc) and when I boot my 2.6 kernel both CD-ROM and CD-RW are detected (/dev/hda and /dec/hdc) as primary and secondary masters.

acid45
07-13-2007, 12:41 AM
It is now mounting as reiserfs but when I fixed it from mounting as ext, I noticed a bunch of insmod errors...relating to 2.4.33.3.

I will try and fix those and see how that works.

[edit]
Oddly enough, I can't seem to find anything that will help me fix these errors. The only output I seem to be able to get is the live output durring boot. dmesg doesn't seem to have the output from the 2.6.18 kernel boot. I can't even tell that it's actually booting a 2.6 kernel other than the fact that I compiled it and copied the files myself. I think resolving these insmod errors will resolve everything. I just gona get it to point to /lib/modules/2.6.18 instead of /lib/modules/2.4.33.3

acid45
07-13-2007, 06:33 AM
Okay, I have resolved the issue of the FS mounting as ext and the issue with insmod still looking for 2.4 modules.

I don't know what fixed the FS mouting issue, but I know that when I changed /etc/rc.d/rc.modules to point to /etc/rc.d/rc.modules-2.6.18 instead of /etc/rc.d/rc.modules-2.6.21.5 it no longer gave the insmod errors.

This is the order in which I do things.

make mrproper; cp ../config-2.6.18 ./.config; make bzImage; make modules; cat arch/i386/boot/bzImage > /vmlinuz; cp System.map /boot/System.map; make modules_install;

vi /etc/lilo.conf to make sure nothing has changed in it for the zillionth time.

Then I run make install. Since I do things this way, I think all I'm doing with make install is copying the System.map and bzImage over to /boot and then running lilo. I could probably skip make install and just run lilo. But I won't unless someone tells me that I'm correct.

This order of commands isn't the same as the other guide I was following from a random google hit. This is the order I got from the slack book.

Still I get the error that /dev/sda1 doesn't exist when it tries to run swapon and then when it tries to fsck the root filesystem while it's read only /dev/sda2 doesn't exist.

I made sure SATA support was compiled in, although I couldn't find my SATA driver (SIL3112).

Reading some info, I need a proper IDE chipset.

bwkaz
07-13-2007, 06:33 PM
make mrproper; cp ../config-2.6.18 ./.config; make bzImage; You forgot "make oldconfig". :)

The various *config targets in the kernel tree do a lot more than just updating the .config file. So if you copy in a .config file, you need to make oldconfig -- both to update the config file (because options get removed and new ones get added between kernel versions) and to actually generate the rest of the files needed by the rest of the build (include/linux/autoconf.h for one, so the C code knows what features were enabled).

Then I run make install. Since I do things this way, I think all I'm doing with make install is copying the System.map and bzImage over to /boot and then running lilo. I could probably skip make install and just run lilo. But I won't unless someone tells me that I'm correct. Here's what I do:

tar xf linux-<version>.tar.bz2
cd linux-<version>
make mrproper
cp ../linux-<oldversion>/.config .
make oldconfig # look at the help on the new options, decide Y/N/M
cp .config myconfig # save config file just in case
make
su -c "make modules_install ; cp arch/x86_64/boot/bzImage /boot/bzImage-<version>"

And then update /boot/grub/menu.lst (or rerun lilo, if I used that).

You don't "make bzImage" anymore, just "make". That will build the bzImage and all the modules. Then, I copy the file manually (and run modules_install because that's complicated) and update the bootloader. System.map is also not required anymore, now that kernel 2.6 has ksymoops built in (so the oops reports already have symbol information). (The only use I ever found for System.map in 2.4 was to translate addresses to functions when reporting an oops.)

I made sure SATA support was compiled in, although I couldn't find my SATA driver (SIL3112). That's likely your problem. If your SATA chipset doesn't have a driver, then none of the drives connected to it will show up. You might have some luck with the AHCI driver, since that's sort of a standard; lots of SATA chipsets conform to it.

acid45
07-15-2007, 12:53 PM
I don't think thats the issue. It gets mount as read only and I can access files on it in maintenance mode. SIL3114 was there and mine seems to work fine. Mine uses SIL3112. I found lots of people having issues getting it to go at SATA speeds but that had a solution. I later found out that it is included in the new libata that is built in. When I added in the deprecated SATA driver, it would recognize the disk but as a /dev/hde and not /dev/sda which is what I was used to when using SATA disks ( /dev/sd means SCSI subsystem right? )

I am running the modified script now. Thanks bwkaz. I will let you know how it turns out.

I really hope this missing compile step is what was causing my issues. I have a long queue of software that has to be compiled and installed, which depends on the kernel so I have to wait until I upgrade. Well, I don't want to install them twice.

bwkaz
07-15-2007, 04:23 PM
I later found out that it is included in the new libata that is built in. When I added in the deprecated SATA driver, it would recognize the disk but as a /dev/hde and not /dev/sda which is what I was used to when using SATA disks ( /dev/sd means SCSI subsystem right? ) Oh, I get what you were saying. I forgot about the old SATA-as-hd*-devices layer. That's no longer recommended for anything. New drivers are also not being added to it.

libata, on the other hand, is getting new drivers, and is recommended (and uses sd* devices). (But the sd* devices aren't a huge deal either, since you can use the /dev/disk/by-*/ symlinks instead, and those are persistent.)

(I should also note that if you're compiling a 32-bit kernel, you should copy arch/i386/boot/bzImage instead of what I posted. I do that because I build 64-bit.)

If you still run into similar errors, try booting with init=/bin/bash on the kernel command line. You should get dumped into a minimal shell with just your root FS mounted (nothing else). From here, you can run each boot script one at a time, and see which one fails (or if you get the failure before you get the shell, then that's useful info too). If when running the filesystem-check script, you still get the "sdXY doesn't exist", then see what does exist in /dev. If you only have console and null (or nothing at all), then you probably need to add a udev script to run before the check-FS and turn-on-swap scripts.

acid45
07-16-2007, 10:21 PM
Thanks bwkaz. I really appreciate your help. I will try your suggestions. I noticed that it is mounting /dev/sda2 as reiserfs but then all of a sudden, there are no devices in /dev. Just null and initchr| and that's it. I don't know if this would mean anything but it would make sense that I'm getting /dev/sda2 no such file or directory if there is no such file or directory. I think I may have done something to my .config file to cause this. I'm going to start with a fresh one and compile in only reiserfs and see if that is the issue. I think I only disabled a bunch of sound cards, ISA support and PCMCIA support, since it's not an old machine nor a laptop, and I know my system uses emu10k.

acid45
07-17-2007, 02:55 PM
Okay, a fresh config file didn't resolve the issue. I read your post again and will probably be able to figure it out, but I just wanted to make sure.

After reading some of the /etc/rc.d/rc scripts I have determined that /etc/rc.d/rc.S is the first init script to be run. From reading that, it seems that rc.hotplug, rc.udev, rc.modules and rc.sysvinit are the next to follow suit, in that order. Before rc.udev rc.fsdev is tried but that script doesn't exist for me and it mentions something about rc.udev being used by newer kernels.

I think once I figure out how to get to the kernel command line before anything starts booting, I think this is the command line you pass parameters to during installation, I should be able to enter init=/bin/bash.

I think this is done using LILO with the append
append = "init=/bin/bash"

I will give that a try and see how everything works out!
Thanks again!

acid45
07-17-2007, 03:20 PM
Well, it seems that something is causing the devices in /dev to disappear. When I get into the minimal shell and run the above mentioned bootscripts they all seem to run except rc.udev. It gives an error:
Sorry, but you need tmpfs support in the kernel to use udev.
FATAL: Refusing to run /etc/rc.d/rc.udev
I tried enabling it but everywhere I looked, it said that tmpfs was enabled through File Systems->Pseudo Filesystems
It didn't seem to be there:

--- /proc file system support
/proc/kcore support
Virtual memory file system support (former shm fs)
[ ] HugeTLB file system support
<M> Userspace-driven configuration filesystem (EXPERIMENTAL)

This is what I get, and from what I can tell, the (former shm fs) is the option I need enabled, but it already was. It is also now mounting the FS as reiserFS as read only just before it goes to the minimal shell, which is what I was suspecting, because it was mounting as read only.

Also, I must be missing a script or something that has to be run before rc.hotplug. I can't find what it is. I will look some more.

It seems to me that the first script to be run by /sbin/init is /etc/rc.d/rc.S. I'm probably wrong.

bwkaz
07-17-2007, 06:18 PM
When I get into the minimal shell and run the above mentioned bootscripts they all seem to run except rc.udev. It gives an error:
Sorry, but you need tmpfs support in the kernel to use udev.
FATAL: Refusing to run /etc/rc.d/rc.udev Well, tmpfs is at CONFIG_TMPFS, which is the "virtual memory file system support (former shm fs)" entry that you said was set to Y. Hmm... (You might try grepping both the .config file and the include/linux/autoconf.h file -- see what CONFIG_TMPFS is set to in both of them.)

Also, I must be missing a script or something that has to be run before rc.hotplug. I don't know whether that's it. If you can't mount a tmpfs, then that's a huge red flag, because your /dev directory is a tmpfs. ;)

Try booting it up again, then run the scripts. But just before running the udev script, try to "mount -t tmpfs udev /dev" and see if that works. If so, see whether /proc is mounted, and if it is, whether /proc/filesystems contains "tmpfs".

If /proc isn't mounted, try mounting it (mount -t proc proc /proc) and seeing if that lets the udev script run. (If /proc isn't mounted, then I suspect the issue with the udev script is that BSD-based init systems -- like what Slackware uses, or at least used to use -- aren't meant to run each script individually. Basically the whole system is one huge script, which may or may not call out to other scripts. The problem is, that's a real PITA if you ever need to troubleshoot the sub-scripts...)

acid45
07-17-2007, 11:07 PM
Well, tmpfs is at CONFIG_TMPFS, which is the "virtual memory file system support (former shm fs)" entry that you said was set to Y. Hmm... (You might try grepping both the .config file and the include/linux/autoconf.h file -- see what CONFIG_TMPFS is set to in both of them.)
.config: CONFIG_TMPFS=y
include/linux/autoconf.h: #define CONFIG_TMPFS 1

Well, if I run just /etc/rc.d/rc.S it doesn't complain. If I just go throrough the scripts run by rc.S one by one, it complains.(after reading your post a second time this makes sense) The funny thing is, if I take out the kernel boot param, there is no /dev. If I put it back in, there is a /dev with all the /dev/devices, and I can do things with /dev/sda2, except fsck it cause it's mounted as read/write.

I will give it a shot what you suggested and post back my results. Thanks for being so patient :)

acid45
07-17-2007, 11:21 PM
Here are the odd results.

ls /dev
expected listing appears

mount -t tmpfs udev /dev; ls /dev
nothing listed
then...
umount /dev; ls /dev
expected listing appears again

ls /proc
nothing listed

mount -t proc proc /proc
files listed, i have never work with /proc before so I don't know what to expect.

try mounting /dev again doesn't change the results.

Could I just make the rc.udev non executable? I'm gona try...and hope I can get back into this OS lol. If not I can always make it executable through the very limited functionality 2.6 kernel :D (actualy further exploration shows that udev should have no effect on my 2.4 kernel boot) It seems that /dev is populated as 2.4 is populated and udev dynamically repopulates it with only physically present devices...or just removes the ones it can't open. Which is why /dev/null is present when I boot without the minimal console and go into maintenance mode. So something is definitely fishy with udev, whether or not it's udev itself. I am off to explore.


[edit]
Being bored at....5AM, I decided to look into thins myself. So I strated with udev. It's running the current version packaged with slackware 11, which is what I'm running. I think I may have an idea as to where the problem originated. I did an upgrade from 10.1 and not 10.2 as the instructions I followed was titled. There was no warning that 10.1 was insufficient, and everything seems to work find...until now that I want a 2.6 kernel...

Probably a non-issue. I wonder why /proc doesn't get mounted and when /dev gets mounted (?a second time?) everything in /dev disappears. It's a mystery to me.

I did find this:
a/udev-097-i486-10.tgz: If there’s no udevd daemon, don’t allow rc.udev to
and udev doesn't seem to be compatible with a kernel under 2.6.15, so this is a new script. I wonder if the udev daemon isn't running, or stops running.

bwkaz
07-18-2007, 07:47 PM
mount -t tmpfs udev /dev; ls /dev
nothing listed Right, because tmpfs is just a RAM-based filesystem; it doesn't contain any files. You have to create the files inside the tmpfs after it's mounted. But this was just to see whether your kernel really did have tmpfs support, or if the udev script was complaining for no reason.

then...
umount /dev; ls /dev
expected listing appears again Yep, because the device files were still there, on your root filesystem. They were hidden by the tmpfs mount, though.

ls /proc
nothing listed OK, that means that /proc wasn't mounted, and I suspect that was the reason the udev script complained about no tmpfs support.

mount -t proc proc /proc
files listed, i have never work with /proc before so I don't know what to expect. OK, try it this way then. Boot with init=/bin/bash, then when you get the shell, run all the scripts up until the udev script. Then "mount -t proc proc /proc", and then "mount -t sysfs sysfs /sys". Then run the udev script. Finally, see what gets created in /dev.

Could I just make the rc.udev non executable? If you don't mind going back to the 1990s, yes, you can. :p Udev is really the only way forward, especially now that recent kernels do their SCSI scanning in parallel. (Because they scan in parallel, you can't rely on the "a" part of sda always being the same. But udev adds persistent symlinks to these devices, which you can rely on.)

(actualy further exploration shows that udev should have no effect on my 2.4 kernel boot) Right, because 2.4 didn't have any notion of udev events, so udev couldn't exist. :)

It seems that /dev is populated as 2.4 is populated and udev dynamically repopulates it with only physically present devices...or just removes the ones it can't open. Devices are created by udev, not deleted. It creates all the device files that the kernel drivers tell it to; that's why the tmpfs starts off empty.

Assuming you use a relatively-recent version of udev, part of the udev script should be running "udevtrigger", which re-creates all these events after mounting the tmpfs.

Your raw disk has a bunch of static devices on it, which may work if you disable udev. But eventually you'll start having issues with disks moving around. ;)

I did find this:
a/udev-097-i486-10.tgz: If there’s no udevd daemon, don’t allow rc.udev to
and udev doesn't seem to be compatible with a kernel under 2.6.15, so this is a new script. I wonder if the udev daemon isn't running, or stops running. The udev script should be starting udevd. :)

acid45
07-19-2007, 12:24 AM
Thanks again bwkaz! I will try what you said. For the part you mentioned 'udev script should be starting udevd' I will look at the code, but this wouldn't be the first time I had to fix a script in slackware. The last time was when rc.wireless was added to slackware. They used iwpriv twice instead of iwpriv and iwspy. I knew how to fix it because I'm intimatly familiar with both programs :P Haven't looked at their source though.

acid45
07-19-2007, 08:29 AM
When I mount /proc bfore I run /etc/rc.d/rc.udev, the script doesn't complain.

It seems that it's mounted like this in /etc/rc.d/rc.S, which is the startup script for the system, supposedly.

/sbin/mount -v proc /proc -n -t proc


I noticed that /sys will not be mounted due to the /proc/filesystems contents.
cat /proc/filesystems
nodev rootfs
nodev bdev
nodev proc
nodev sockfs
nodev tmpfs
nodev shm
nodev pipefs
ext3
ext2
nodev ramfs
umsdos
msdos
vfat
iso9660
nodev nfs
reiserfs
nodev devpts
nodev usbdevfs
nodev usbfs


if [ -d /sys ]; then
if cat /proc/filesystems | grep -wq sysfs ; then
if ! cat /proc/mounts | grep -wq sysfs ; then
/sbin/mount -v sysfs /sys -n -t sysfs
fi
fi
fi


Just in case it makes a difference, and it probably does, I'm going to check in the new kernel to make sure it matched, I'm guessing sysfs will be present in the 2.6 /prof/filesystems file.

Would you look at that, here is the error I'm getting:

echo
echo "************************************************** *********"
echo "*** An error occurred during the root filesystem check. ***"
echo "*** You will now be given a chance to log into the ***"
echo "*** system in single-user mode to fix the problem. ***"
echo "*** ***"
echo "*** If you are using the ext2 filesystem, running ***"
echo "*** 'e2fsck -v -y <partition>' might help. ***"
echo "************************************************** *********"
echo
echo "Once you exit the single-user shell, the system will reboot."
echo

I'm modifying the script to see exactly what error code I get.

acid45
07-19-2007, 09:00 AM
Yeah so... I hate to be so analy useless but...

uname -s -r
Linux 2.6.18

I can't even tell you what I did other than try what you suggested, and along the way, when I took out the append line from lilo, I can't get the error I was getting because...it boots.

Funny story, the sound that plays when you load KDE, seems like it's on a record and the record is skipping. LOL.

Thanks a zillion bwkaz! Something you did* fixed it, although I'd have to replicate the issue to tell you exactly what. I'm not gona test fate though.

Slackware 12 here I come!!!

*technically I did it, but you suggested it :P

Thanks a zillion + 1!!!!

bwkaz
07-19-2007, 06:36 PM
Well, um... Good!

(I wasn't even to the point where I knew what was going on, either. Yikes!)

:D

acid45
07-26-2007, 12:38 AM
I have no idea what I did. I think, when I recompiled my kernel and left EVERYTHING in as it was and just added in reiserfs support in the kernel and didn't remove all the networking cards I don't have, laptop support and various other thing, it just started working. My bad.

Sorry for wasting your time. I will have to keep recompiling it removing one thing at a time and see what doesn't work. I'm pretty sure everything I removed was card/line specific drivers. I may be wrong.

NOTE TO SELF
3GB is not enough for /USR if you plan on upgrading...