Slackware - InstallationThis forum is for the discussion of installation issues with Slackware.
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
I have an IBM Thinkpad laptop, that I'm trying to get slackware 10 up and running on. Since I use Windows XP for work, I've attempted to install slackware 10 on an externel USB2.0 connected HDD.
Upon installation cd, the USB HDD was successful connected to /dev/sd1, and I was able to do the installation without any problems.
Of course, booting the newly installed system is a different issue. None of the prebuilt slackware kernels have USB mass storage support compiled in (I thought the zipslack kernel might work, but that failed as well).
I realise I need to build my own kernel, but at the moment, this is the only PC I have access to.
Essentially my questions are:
- Is it possible to compile a custom kernel whilst running from the install cd? (after booting the install cd, I've mounted the install partition to /cdrom/live - since the path's are set there by default - but make config dies very quickly)
- Does anybody know of where I can find a prebuilt kernel with USB mass support compiled in? (I've tried googling without success...)
- Are there any other solutions that I haven't thought of?
I installed Slack 10.0 with the bare.i kernel and it gave me usb mass storage
right off the bat. Issue
bash-2.05b$ cat /boot/config-ide-2.4.26 | less
and look through that file.
I have 2 usb gas drives (which are lappy drives) and a flash disk. All were
immediately recognized by Slack.
I think the problem may be that you can't mount the device in that stage
of the bootstrap?
You can compile a kernel on another computer and have it on medium ready
to install when Slack asks you which kernel you want to use during it's installation.
Where you compile it doesn't matter, so long as you've got the file available.
Probably not a lot of help, but I hope it gets you thinking some more...
Thanks for the reply. You're right - bare.i gives me USB mass storage as a module, so I was able to install slackware. My issue is that without USB mass storage compiled into the kernel, I can't boot (kernel panic since it can't find /dev/sda).
Because my laptop is the only system I have available to me, I'm in a catch 22 situtation. I need to boot linux to compile a kernel, but I need to compile a kernel to boot linux...
You want I should email you my .config file, then you can edit it and burn
it to your CD? I guess that would work, eh? Then you'd be able to load
that kernel in the Slack install when you get to choose.
Edit: You can edit the actual file in Notepad, WordPad, etc.
Last edited by Bruce Hill; 07-09-2004 at 06:15 AM.
2 ways I can think off the top of my head to get this working.
1) Use a custom initrd to load the USB modules for you.
You'd build the initrd, place it in your /boot directory and make lilo aware of it. This same process is used for booting from SCSI hard drives sometimes. The bootloader would load this initrd as / and then execute whatever is needed to get your models loaded and then switch / to the USB drive. The problem is that you'll need a working linux installation to build the initrd, unless you can find one somewhere.
2) Download one of Live CDs like Knoppix, DamnSmallLinux, or possibly even one of the many Rescue CDs out there that has a toolchain. I believe there is one that trys to mimic Slackware also, so that one may be the best "fit" for the task. I forget the name though. Use the tools on the LiveCD to set up your paritions, format them and etc. Then mount the disk, download the kernel source to it, set it up and build your custom kernel. You'd just need to manipulate the Slackware installation a bit taking care not to overwrite your kernel and etc. You'd want to rebuild the kernel in Slackware when you got it going, so I'd probably keep it as simple as possible and use a barebones non-modular kernel to get it going.
Also, there is a CD available for Linux From Scratch 6.0 at http://mirrors.angelinacounty.net/lfs-boot-cd/ that is just 354mb. It will have a complete toolchain with everything you'd need. That may be your best bet as far as download size goes.
I'm concentrating on option 1 fro DaHammer. Picked up some clues from various other sources.
Now have an initrd.gz sitting in /boot of /dev/sda1. However I can't get the boot process to pick it up. Looking at README.initrd on the installation disks it says once the initrd.gz is made amend the /etc/lilo.conf and run lilo.
This is where I'm stuck. The only way into /dev/sda1 is by mounting it whilst running slackware on my desktop or using the slackware installation disk 1 or the rescue disk 2.
With the installation disk I ran setup again without reformatting and skipping package loading. Used the simple lilo creation but that overwrote my lilo.conf. Used the expert but couldn't find a way of including the initrd.gz or writing the image to a floppy disk.
Tried to do the lilo manually as suggested in README.initrd but couldn't find a way to write it to a floppy. I'm not a lilo person and use GRUB on my desktop. Tried using a GRUB boot disk that refused to start pointing to (sd0,0).
Any suggestions of how I can get LILO to write to a floppy.
Moved the contents of the boot directory including the initrd.gz to a tmp directory called isolinux ran -
mkisofs -o archos.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table isolinux
cdrecord to create the CD
Booted from the CD. Picked up the initrd.gz. Bombed out on each and every file in modules directory saying something like "not an ELF file". At least I now have a mechanism to work with!
Googled it and can't find anything meaningful on it
You will need to decompress the modules before loading them. And why are you loading an ext3 modules? I'd think that ext3 filesystem support would be built into all of the Slackware kernels. I checked bare.i, if that's the one you are using and both ext3 and debugging support (jbd) are built in.
Hehe, I edited my post while you were posting your reply. :D
Anyway, I took a look at the initrd tree that mkinitrd from Slackware creates. There is no mechanism in it to decompress the modules that I see. You must be running "mkinitrd" from a bootdisk, on which modules would be gzipp'ed in order to save space, which is a good idea. But I suspect mkinitrd was never intended to be ran from a bootdisk and just blindly copies the gzipp'ed modules into the tree and adds the the insmod lines for them with the .gz. insmod is not capable of decompressing them first, hince why you get the non-elf error. You'll need to add code to decompress them to the "load_kernel_modules" script before loading them.
Also as mentioned above, I find it odd that the ext3 & jbd modules are present. If they aren't then mkinitrd should error when you run it. Either way, i doubt you need those, even though the example in the initrd.README has them. They should be compiled into the kernel your using.
BTW, the "-m" option to mkinitrd specifies which modules you want.
Usage: mkinitrd [OPTION]
mkinitrd creates an initial ramdisk used to load kernel modules that
are needed to mount the root filesystem, or other modules that might
be needed before the root filesystem is available.
-c Clear the existing initrd tree first
-f Filesystem to use for root partition (must be used with -r)
--help Display this message
-k Kernel version to use
-m A colon (:) delimited list of kernel modules to load.
Additional options may be added to use when loading the
kernel modules (but in this case the entire list must be
wrapped with double quotes).
-o Output image (default /boot/initrd.gz)
-r Root partition device (must be used with -f)
-s Initrd source tree (default /boot/initrd-tree/)
-V Display version number
A simple example: Build an initrd for a reiserfs root partition:
mkinitrd -c -m reiserfs
Another example: Build an initrd image using Linux 2.6.7 kernel
modules for a system with an ext3 root partition on /dev/hdb3:
mkinitrd -c -k 2.6.7 -m jbd:ext3 -f ext3 -r /dev/hdb3
If run without options, mkinitrd will rebuild an initrd image using
the contents of the $SOURCE_TREE directory, or, if that directory
does not exist it will be created and populated, and then mkinitrd