[SOLVED] Need advice installing slackware to a GPT/UEFI system
SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
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.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Sorry when I tried to install the nvidea-driver from sbopkg, sbopkg could not find the nvidea bz2 file it was looking for. I the tried doing it manually by running the NVIDIA installer downloaded from the Nvidea site and that worked.
Thanks. That does give me a grub menu but the menu will not boot. It stalls at mounting /dev/sda2
I presume grub.cfg needs editing. It does not look right. Initrd is being loaded for huge (perhaps that does not matter) but what about insmod est2? I am running on ext4.
Quote:
menuentry 'Slackware-13.37.0 GNU/Linux, with Linux 2.6.37.6 huge' --class slackware-13.37.0 --class gnu-linux --class gnu --class os {
load_video
insmod gzio
insmod part_gpt
insmod ext2
set root='(hd0,gpt2)'
search --no-floppy --fs-uuid --set=root 61c5fbf6-4a4e-42dd-a6f0-f566e4900fe6
echo 'Loading Linux 2.6.37.6 ...'
linux /boot/vmlinuz-huge-2.6.37.6 root=UUID=61c5fbf6-4a4e-42dd-a6f0-f566e4900fe6 ro
echo 'Loading initial ramdisk ...'
### initrd /boot/initrd-2.6.37.6
}
menuentry 'Slackware-13.37.0 GNU/Linux, with Linux 2.6.37.6 (recovery mode)' --class slackware-13.37.0 --class gnu-linux --class gnu --class os {
load_video
insmod gzio
insmod part_gpt
insmod ext2
set root='(hd0,gpt2)'
search --no-floppy --fs-uuid --set=root 61c5fbf6-4a4e-42dd-a6f0-f566e4900fe6
echo 'Loading Linux 2.6.37.6 ...'
linux /boot/vmlinuz-huge-2.6.37.6 root=UUID=61c5fbf6-4a4e-42dd-a6f0-f566e4900fe6 ro single
echo 'Loading initial ramdisk ...'
initrd /boot/initrd-2.6.37.6
}
menuentry 'Slackware-13.37.0 GNU/Linux, with Linux 2.6.37.6' --class slackware-13.37.0 --class gnu-linux --class gnu --class os {
load_video
insmod gzio
insmod part_gpt
insmod ext2
set root='(hd0,gpt2)'
search --no-floppy --fs-uuid --set=root 61c5fbf6-4a4e-42dd-a6f0-f566e4900fe6
echo 'Loading Linux 2.6.37.6 ...'
linux /boot/vmlinuz-generic-2.6.37.6 root=UUID=61c5fbf6-4a4e-42dd-a6f0-f566e4900fe6 ro
echo 'Loading initial ramdisk ...'
initrd /boot/initrd-2.6.37.6
}
menuentry 'Slackware-13.37.0 GNU/Linux, with Linux 2.6.37.6 (recovery mode)' --class slackware-13.37.0 --class gnu-linux --class gnu --class os {
load_video
insmod gzio
insmod part_gpt
insmod ext2
set root='(hd0,gpt2)'
search --no-floppy --fs-uuid --set=root 61c5fbf6-4a4e-42dd-a6f0-f566e4900fe6
echo 'Loading Linux 2.6.37.6 ...'
linux /boot/vmlinuz-generic-2.6.37.6 root=UUID=61c5fbf6-4a4e-42dd-a6f0-f566e4900fe6 ro single
echo 'Loading initial ramdisk ...'
initrd /boot/initrd-2.6.37.6
}
Did you mean "created an initrd for ext3 instead of ext4"?
As a side note for anyone else needing to install on a GPT/UEFI system I ran a quick test last night and indeed it seems you can use the EFI capable install CD/DVD of another distro to bootstrap the Slackware installer, as I hypothesized earlier. Before I went to bed last night I setup VirtualBox to simulate an EFI system (there is an option to do this) and then did the following:
1. Booted from an openSUSE 12.2 x86_64 install DVD (which I already had because it just came out and I have been meaning to test it )
2. Switched to a virtual terminal
3. Brought up the network
4. Used wget to fetch the initrd.img from the slackware64-current/isolinux directory of a nearby mirror
5. Unpacked this into a newly created directory (using zcat and cpio)
6. Chrooted into that directory (after first using mount to bind /dev, /sys and /proc from the host system and copying over /etc/resolv.conf)
7. Setup the $PATH and other variables needed to run the installer (by sourcing the chooted system's profile, i.e. ". /etc/profile")
8. Partitioned with gdisk
9. Started Slackware's setup script and performed a network install using the nearby mirror
Since it got late I stopped there but so far so good. My intention tonight would be to try finishing this off with the following steps:
10. Exit the install chroot and then chroot into Slackware
11. Fetch, compile and install Grub2 (and dependencies), then configure it
12. Reboot into Slackware 14.0RC4
Whilst I have yet to do steps 10-11, I don't foresee any major obstacles, since I already did the seemingly 'hard' parts. In summary, the two things that complicate install of Slackware on GPT/EFI are the lack of official EFI-capable install media and boot loader. The provided setup tools and kernel support GPT/EFI.
P.S. I tried it this way to see what was possible. However a better/neater way would be to do what rwebber did and make your own EFI-capable Slackware install media (copy the contents of the Slackware install DVD [or USB], create a new "efi/boot" directory and add to this the elilo.efi program and an appropriately configured elilo.conf, pointing at the huge kernel+initrd from the install media).
Last edited by ruario; 09-06-2012 at 03:32 AM.
Reason: Clarified my postscript.
Did you mean "created an initrd for ext3 instead of ext4"?
Yes of course. In all the hassle of re-booting and tweaking I end up writing nonsense.
I will try and summarise what I did in a few days for the list but I will be away from my home PC for a few days. My next problem is very poor and intermittent ethernet connectivity which I suspect is a driver issue (see thread below).
Since it got late I stopped there but so far so good. My intention tonight would be to try finishing this off with the following steps:
10. Exit the install chroot and then chroot into Slackware
11. Fetch, compile and install Grub2 (and dependencies), then configure it
12. Reboot into Slackware 14.0RC4
Ok, it took a few nights before I had the time to finish this off but last night I had a spare moment to give it a go. However rather than setup Grub2, I decided to use Elilo, since it was less work then fetching and compiling Grub2 (also I hadn't tried Elilo yet and wanted to give it a try).
I mounted and switched into the the UEFI System Partition (a FAT32 filesystem you have to create during install, if not already present. You just need to make it big enough to hold your kernel(s) and associated files. Use gdisk to create it with type code EF00 and format with mkdosfs). There I created the directory structure ./EFI/BOOT and placed three files in it. Firstly an elilo.conf that looked like this:
(Note: I have the UEFI System Partition as the first partition on the disk, hence root is on /dev/sda2)
Then I copied over vmlinuz-huge-3.2.28 alongside elilo.conf. Finally I downloaded elilo-3.14-all.tar.gz, extracted elilo-3.14-x86_64.efi and moved it into the UEFI System Partition next to the other two files but renamed to BOOTX64.EFI (./EFI/BOOT/BOOTX64.EFI is the name and path of the "default" bootloader on x86_64 UEFI System Partitions).
Upon reboot, Slackware started up. I then made an appropriate initrd.gz and copied this, along with vmlinuz-generic-3.2.28 over to the UEFI System Partition as well (in the same directory as the other two files). Next I tweaked the elilo.conf to look like this:
The next reboot, brought Slackware up with the Generic kernel instead. Done!
P.S. Anyone else wanting to test all of this can use VirtualBox if you don't have an EFI-based machine. There is an option using EFI for booting rather than BIOS in the guest configuration.
As a further side note, yet another way to install Slackware on EFI hardware would be to do the following:
1. Boot with another distro's EFI-capable install media
2. Do all the partitioning and formatting of your hard disk (including creating the UEFI System Partition if needed)
3. Mount the UEFI System Partition
4. On the UEFI System Partition, under the ./EFI/BOOT/ directory, copy over elilo-3.14-x86_64.efi (renamed to BOOTX64.EFI), bzImage and initrd.img.
5. In the same directory create an elilo.conf that looks like this:
6. Reboot into the Slackware install environment from your hard disk
7. Unless you want to do an network install, insert a Slackware64 install DVD (this will be found later by the setup script)
8. Perform the install with two small alternations: don't format the UEFI System Partition; don't do the automatic lilo configuration.
9. Before rebooting, chroot into the new install, and make an initrd.gz.
10. Copy over vmlinuz-huge-3.2.28, vmlinuz-generic-3.2.28 and the initrd.gz into the ./EFI/BOOT/ directory on the UEFI System Partition.
11. Change the elilo.conf to something like the following (adjusting the root= values to match your own configuration:
The easiest way to make your own Slackware EFI-capable install media would be to create a USB boot disk. Partitioning it with a GPT partitioning scheme and include a UEFI System Partition (FAT32 filesystem, created with gdisk, using type code EF00, at least 50Mb and formatted with mkdosfs). Add a ./EFI/BOOT/ directory structure to this partition, into which place BOOTX64.EFI (extract elilo-3.14-x86_64.efi from elilo-3.14-all.tar.gz and rename it), bzImage, initrd.img and an elilo.conf that looks like this:
@arubin: Since you got this working and there are various options in this thread, you might want to mark the thread as solved. It will help other people searching for a solution to this.
I had originally partitioned the disks using Windows
to
sda1 ready for slackware14
sda2 for slackware 13.37
sda3 data
sdb1 Windows Boot UEFI
sdb2 small Windows hidden partition
sdb3 main Windows installation
sdb4 swap
sdb5 /var
sdb6 /home
sdb7 /shared windows Linux data
I prefered to prepare the original partition scheme with Windows because I believe that Windows positions the partitions correctly for SSDs without any hassle.
I installed Slackware 13.37 to sda2. The first time I attempted the installation I tried LILO. This was a mistake. LILO froze. I did the installation again omitting LILO.
At this stage I could only boot into Slackware by using the installation DVD or USB.
I was advised that I needed a small FAT partition on sda for GRUB2. I found that there were 3MB spare at the end of sda. So sda4 was partitioned and labelled EF00.
I created a Grub2 installation package on my old PC using the slackbuild and installed that by booting with the DVD and chrooting into my new installation.
Quote:
grub-install /dev/sda
Created initrd.gz as advised in the README and named that initrd-2.6.37.6.gz as advised by ruario
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.