[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
howtos:slackware_admin:how_to_configure_fstab_and_lilo.conf_with_persistent_naming [2016/08/10 19:47 (UTC)] – created -- not finished yet bassmadrigalhowtos:slackware_admin:how_to_configure_fstab_and_lilo.conf_with_persistent_naming [2018/01/11 15:32 (UTC)] (current) – [LABEL and UUID] Update to mention root entry in lilo is not needed when -r is used in the initrd bassmadrigal
Line 1: Line 1:
 <!-- Add your text below. We strongly advise to start with a Headline (see button bar above). --> <!-- Add your text below. We strongly advise to start with a Headline (see button bar above). -->
  
-FIXME This is a work in progress. It is not complete and may screw up your system if you follow it. I will not be blamed for any nuclear wars started because of this. It should be finished in the next day or two. FIXME +====== How to configure fstab and lilo.conf with persistent naming ======
- +
-====== How to configure lilo.conf and fstab with persistent naming ======+
  
 Have you ever had your /dev/sda and /dev/sdb drives switch order? Has plugging in a USB device before booting your computer caused a kernel panic? Do you frequently unplug or plug in new devices into your computer, thus changing the order of the device names? If you said yes to any of those, you might be a good candidate to use persistent naming within your bootloader and fstab. Have you ever had your /dev/sda and /dev/sdb drives switch order? Has plugging in a USB device before booting your computer caused a kernel panic? Do you frequently unplug or plug in new devices into your computer, thus changing the order of the device names? If you said yes to any of those, you might be a good candidate to use persistent naming within your bootloader and fstab.
Line 17: Line 15:
 ''/dev/disk/by-id/'' is a dynamically generated folder under the ''/dev/'' filesystem. This will change depending on the devices that are plugged into the computer. The IDs are generally comprised of the harddrive's model number, serial number, and specific partitions. ''ls -la /dev/disk/by-id/'' will show all the IDs and the device it points to under the ''/dev/'' filesystem (e.g. ''/dev/sda'', ''/dev/sdc3'', etc). ''/dev/disk/by-id/'' is a dynamically generated folder under the ''/dev/'' filesystem. This will change depending on the devices that are plugged into the computer. The IDs are generally comprised of the harddrive's model number, serial number, and specific partitions. ''ls -la /dev/disk/by-id/'' will show all the IDs and the device it points to under the ''/dev/'' filesystem (e.g. ''/dev/sda'', ''/dev/sdc3'', etc).
  
-<code bash>slackware@darkstar:~$ ls -la /dev/disk/by-*+<code>slackware@darkstar:~$ ls -la /dev/disk/by-*
 /dev/disk/by-id: /dev/disk/by-id:
 total 0 total 0
Line 38: Line 36:
 Labels are an optional, user configured name for the drive. Most filesystems support this, but they aren't always created automatically. All labels can be found under ''/dev/disk/by-label/'' and can be easily viewed using ''ls -la /dev/disk/by-label/''. Labels are an optional, user configured name for the drive. Most filesystems support this, but they aren't always created automatically. All labels can be found under ''/dev/disk/by-label/'' and can be easily viewed using ''ls -la /dev/disk/by-label/''.
  
-<code bash>/dev/disk/by-label:+<code>/dev/disk/by-label:
 total 0 total 0
 drwxr-xr-x 2 root root 80 Jul 31 13:17 ./ drwxr-xr-x 2 root root 80 Jul 31 13:17 ./
Line 53: Line 51:
 [[https://en.wikipedia.org/wiki/Universally_unique_identifier | UUIDs]] (**U**niversally **U**nique **ID**entifiers) are a unique identifier generated for a partition. All Linux filesystems will generate UUIDs when they're formatted. FAT and NTFS filesystems do not support UUIDs, however, a short UID is used in place of a regular UUID. All UUIDs can be found under ''/dev/disk/by-uuid/'' and can be viewed using ''ls -la /dev/disk/by-uuid/'' [[https://en.wikipedia.org/wiki/Universally_unique_identifier | UUIDs]] (**U**niversally **U**nique **ID**entifiers) are a unique identifier generated for a partition. All Linux filesystems will generate UUIDs when they're formatted. FAT and NTFS filesystems do not support UUIDs, however, a short UID is used in place of a regular UUID. All UUIDs can be found under ''/dev/disk/by-uuid/'' and can be viewed using ''ls -la /dev/disk/by-uuid/''
  
-<code bash>/dev/disk/by-uuid:+<code>/dev/disk/by-uuid:
 total 0 total 0
 drwxr-xr-x 2 root root 200 Jul 31 13:17 ./ drwxr-xr-x 2 root root 200 Jul 31 13:17 ./
Line 70: Line 68:
 The [[https://en.wikipedia.org/wiki/Master_boot_record|MBR]] (Master Boot Record) has been the primary partition table for harddrives for the past few decades (it was introduced in 1983). However, it is unable to be used on disks larger than 2TBs. That is where [[https://en.wikipedia.org/wiki/GUID_Partition_Table|GPT]] (GUID Partition Table) comes in. This was developed as part of the [[https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface|UEFI]] spec but can be used without using UEFI. The [[https://en.wikipedia.org/wiki/Master_boot_record|MBR]] (Master Boot Record) has been the primary partition table for harddrives for the past few decades (it was introduced in 1983). However, it is unable to be used on disks larger than 2TBs. That is where [[https://en.wikipedia.org/wiki/GUID_Partition_Table|GPT]] (GUID Partition Table) comes in. This was developed as part of the [[https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface|UEFI]] spec but can be used without using UEFI.
  
-In addition to the limitations of the MBR, there are also limitations of using UUIDs and Labels, mainly being that if you use those in your bootloader, you are required to use an [[howtos:slackware_admin:kernelbuilding#creating_an_initrd|initrd]]. While it is recommended by Pat to use an initrd, many users prefer using a kernel that doesn't require one (either using the huge kernel or building a custom kernel with the required hardware support compiled in). The GPT spec added PartLabel and PARTUUID to solve this (the "part" stands for partition). It stores that information directly in the partition tableThis means that you don't need any initrd to be able to read this data. Initially, MBR-based devices did not support this, however, basic support for PartUUID was added starting with the 3.8 Linux kernel (as of Aug 2016 no support for PartLabel seems to exist for MBR systems).+In addition to the limitations of the MBR, there are also limitations of using UUIDs and Labels, mainly being that if you use those in your bootloader, you are required to use an [[howtos:slackware_admin:kernelbuilding#creating_an_initrd|initrd]]. While it is recommended by Pat to use an initrd, many users prefer using a kernel that doesn't require one (either using the huge kernel or building a custom kernel with the required hardware support compiled in). The GPT spec added PartLabel and PARTUUID as a way to save that information directly to the partition table (the "part" stands for partition). While both PartLabel and PartUUID are included in the GPT spec, the kernel only supports booting PARTUUIDs, so you can't use PartLabel in your bootloadersIf you want to use PartUUID, you don't need any initrd to be able to read this data, which makes it much easier to use on systems that aren't already using an initrd. Initially, since PARTUUID was introduced as part of the GPT spec, MBR-based devices could not be referenced using PARTUUID; however, basic support for PartUUID on MBR partitions was added starting with the 3.8 Linux kernel, so now any drive can be referenced by its "PARTUUID".
  
 === PartLabel === === PartLabel ===
  
-This is almost identical to the regular Label option. It is located under ''/dev/disk/by-partlabel/'' and can be viewed with ''ls -la /dev/disk/by-partlabel''.+This is almost identical to the regular Label option. It is located under ''/dev/disk/by-partlabel/'' and can be viewed with ''ls -la /dev/disk/by-partlabel''PARTLABEL can only be used in the fstab. Due to lack of support in the kernel, you will need to use one of the other persistent naming conventions in your lilo.conf
  
-<code bash>/dev/disk/by-partlabel:+<code>/dev/disk/by-partlabel:
 total 0 total 0
 drwxr-xr-x 2 root root 60 Jul 31 17:18 ./ drwxr-xr-x 2 root root 60 Jul 31 17:18 ./
Line 82: Line 80:
 lrwxrwxrwx 1 root root 10 Jul 31 17:18 Linux\\x20filesystem -> ../../sdc1</code> lrwxrwxrwx 1 root root 10 Jul 31 17:18 Linux\\x20filesystem -> ../../sdc1</code>
  
-Due to the newness of GPT support, lilo does not have direct support of calling it, rather you need to use an addappend option (see the lilo.conf section below for further information). Also, this will only show official PARTLABELs. It will not show any labels from disks using MBR. If you need to view those, you can use ''blkid''.+Also, this will only show official PARTLABELs. It will not show any labels from disks using MBR. If you need to view those, you can use ''blkid''.
  
-<code bash>slackware@darkstar:~$ su -+<code>slackware@darkstar:~$ su -
 Password: Password:
 root@darkstar:~# blkid root@darkstar:~# blkid
Line 101: Line 99:
 This is similar to PartLabel in that it is almost identical to it's not-"Part" counterpart (regular UUID). This UUID is generated automatically whenever you create/resize/move a partition. This will be a different UUID than the one provided by the filesystem. All PartUUIDs can be found under ''/dev/disk/by-partuuid/'' and can be viewed using ''ls -la /dev/disk/by-partuuid/''. This is similar to PartLabel in that it is almost identical to it's not-"Part" counterpart (regular UUID). This UUID is generated automatically whenever you create/resize/move a partition. This will be a different UUID than the one provided by the filesystem. All PartUUIDs can be found under ''/dev/disk/by-partuuid/'' and can be viewed using ''ls -la /dev/disk/by-partuuid/''.
  
-<code bash>/dev/disk/by-partuuid:+<code>/dev/disk/by-partuuid:
 total 0 total 0
 drwxr-xr-x 2 root root 120 Jul 31 13:17 ./ drwxr-xr-x 2 root root 120 Jul 31 13:17 ./
Line 109: Line 107:
 As you can see, this is just like PartLabel in that it only shows official PartUUIDs on GPT disks. If you need to view the system generated PartUUID for MBR partitions, you need to use blkid. As you can see, this is just like PartLabel in that it only shows official PartUUIDs on GPT disks. If you need to view the system generated PartUUID for MBR partitions, you need to use blkid.
  
-<code bash>slackware@darkstar:~$ su -+<code>slackware@darkstar:~$ su -
 Password: Password:
 root@darkstar:~# blkid root@darkstar:~# blkid
Line 120: Line 118:
 For non-GPT filesystems, the PARTUUID is generated from the Disk Identifier, followed by the partition number. You can view your Disk Identifier using fdisk. For non-GPT filesystems, the PARTUUID is generated from the Disk Identifier, followed by the partition number. You can view your Disk Identifier using fdisk.
  
-<code bash>root@darkstar:~# fdisk -l /dev/sda | grep identifier+<code>root@darkstar:~# fdisk -l /dev/sda | grep identifier
 Disk identifier: 0x6f47c81b</code> Disk identifier: 0x6f47c81b</code>
  
-For PartUUIDs on MBR disks, the only time they'll change is if additional partitions are created. Keep that in mind if you're using them in your fstab/lilo.conf.+<note tip>Due to the newness of GPT support, lilo does not have direct support of calling it, rather you need to use an addappend option (see the lilo.conf section below for further information). For PartUUIDs on MBR disks, the only time they'll change is if additional partitions are created. Keep that in mind if you're using them in your fstab and/or lilo.conf.</note>
  
 ===== fstab ===== ===== fstab =====
Line 129: Line 127:
 Your ''/etc/fstab'' is the easiest file to change. You simply replace any entries that pointed to your device names with TYPE=value (TYPE can be LABEL, UUID, PARTLABEL, PARTUUID). The original device names are listed as comments for your reference, they don't need to be in the final file. (Personally, since I like it to look nice and neat, I will make everything spaced out evenly.) Your ''/etc/fstab'' is the easiest file to change. You simply replace any entries that pointed to your device names with TYPE=value (TYPE can be LABEL, UUID, PARTLABEL, PARTUUID). The original device names are listed as comments for your reference, they don't need to be in the final file. (Personally, since I like it to look nice and neat, I will make everything spaced out evenly.)
  
-<code bash>slackware@darkstar:~$ cat /etc/fstab+<code>slackware@darkstar:~$ cat /etc/fstab
 # /dev/sda1 # /dev/sda1
 UUID=bc4538e5-9387-4e5c-877b-d15744acb6ce      swap            swap    defaults,discard                     0 0 UUID=bc4538e5-9387-4e5c-877b-d15744acb6ce      swap            swap    defaults,discard                     0 0
Line 139: Line 137:
 LABEL=Data                                     /share/Data     ext4    defaults                             0 2 LABEL=Data                                     /share/Data     ext4    defaults                             0 2
 # /dev/sdc1 # /dev/sdc1
-PARTUUID=62c372af-e868-4571-8ab4-db612c0fb38f  /share/Backup   ext4    defaults                             0 2+PARTLABEL="Linux filesystem"                   /share/Backup   ext4    defaults                             0 2
  
 #/dev/cdrom                                    /mnt/cdrom      auto    noauto,owner,ro,comment=x-gvfs-show  0 0 #/dev/cdrom                                    /mnt/cdrom      auto    noauto,owner,ro,comment=x-gvfs-show  0 0
Line 145: Line 143:
 proc                                           /proc           proc    defaults                             0 0 proc                                           /proc           proc    defaults                             0 0
 tmpfs                                          /dev/shm        tmpfs   defaults                             0 0</code> tmpfs                                          /dev/shm        tmpfs   defaults                             0 0</code>
- 
  
 ===== lilo.conf ===== ===== lilo.conf =====
Line 155: Line 152:
 To do this, we would need to replace ''/dev/sda'' (or whatever your default boot drive is) with a reference that doesn't change. Since we need to reference the drive itself, and not any specific partitions, we need to use the ID method. Once you find the disk ID for your main drive, replace your boot with the full path to the ID. (NOTE: the original /dev/sda is commented out and only there for reference, you don't need to keep it.) To do this, we would need to replace ''/dev/sda'' (or whatever your default boot drive is) with a reference that doesn't change. Since we need to reference the drive itself, and not any specific partitions, we need to use the ID method. Once you find the disk ID for your main drive, replace your boot with the full path to the ID. (NOTE: the original /dev/sda is commented out and only there for reference, you don't need to keep it.)
  
-<code bash>#boot = /dev/sda+<code>#boot = /dev/sda
 boot = /dev/disk/by-id/ata-Crucial_CT480M500SSD1_13440956798B</code> boot = /dev/disk/by-id/ata-Crucial_CT480M500SSD1_13440956798B</code>
  
Line 162: Line 159:
 ==== LABEL and UUID ==== ==== LABEL and UUID ====
  
-To use Labels and UUIDs, you need to use an [[howtos:slackware_admin:kernelbuilding#creating_an_initrd|initrd]]. It won't work without it. Since PARTLABEL isn'available on MBR drives, if you want to use a label, you have to use this method.+To use Labels and UUIDs, you need to use an [[howtos:slackware_admin:kernelbuilding#creating_an_initrd|initrd]]. It won't work without it. Since PARTLABEL in your lilo.conf isn'supported, if you want to use a label there, you will have to use this method. When building your initrd, you need to make sure you pass the -r option to specify your root partition, and set it to either your label or UUID. You can use the ''/usr/share/mkinitrd/mkinitrd_command_generator.sh'' script, although, if you're building it for a kernel version that you're not currently running (but have installed), make sure you pass the kernel version you intend to use to the script using the -k option. It will then spit out a mkinitrd command you can use, which you would just need to adjust the -r option. 
 + 
 +<code>root@darkstar:~# /usr/share/mkinitrd/mkinitrd_command_generator.sh -k 4.4.14 
 +
 +# mkinitrd_command_generator.sh revision 1.45 
 +
 +# This script will now make a recommendation about the command to use 
 +# in case you require an initrd image to boot a kernel that does not 
 +# have support for your storage or root filesystem built in 
 +# (such as the Slackware 'generic' kernels'). 
 +# A suitable 'mkinitrd' command will be: 
 + 
 +mkinitrd -c -k 4.4.14 -f ext4 -r /dev/sda2 -m jbd2:mbcache:ext4 -u -o /boot/initrd.gz 
 + 
 +root@darkstar:~# blkid 
 +/dev/sda2: UUID="25a4dafe-bbf2-413f-a60c-8c38efc0a122" TYPE="ext4" PARTUUID="1ae0ebfe-02" 
 +/dev/sda1: UUID="d21b5f69-6d0c-48fb-b67c-912ebb0fd18e" TYPE="swap" PARTUUID="1ae0ebfe-01" 
 + 
 +root@darkstar:~# mkinitrd -c -k 4.4.14 -f ext4 -r "UUID=25a4dafe-bbf2-413f-a60c-8c38efc0a122" -m jbd2:mbcache:ext4 -u -o /boot/initrd-4.4.14.gz 
 +OK: /lib/modules/4.4.14/kernel/fs/jbd2/jbd2.ko added. 
 +OK: /lib/modules/4.4.14/kernel/fs/mbcache.ko added. 
 +OK: /lib/modules/4.4.14/kernel/fs/jbd2/jbd2.ko added. 
 +OK: /lib/modules/4.4.14/kernel/fs/mbcache.ko added. 
 +OK: /lib/modules/4.4.14/kernel/fs/ext4/ext4.ko added. 
 +35942 blocks 
 +/boot/initrd-4.4.14.gz created. 
 +Be sure to run lilo again if you use it. 
 +root@darkstar:~#</code> 
 + 
 +As you'll notice, the command provided by mkinitrd uses ''/dev/sda2'' as the root drive, so we need to change that to match the UUID of the drive before running the mkinitrd command. By default, it will output the ''/boot/initrd.gz'' file, but I prefer to call mine based on the kernel version (which is helpful to ensure you don't overwrite a known-good initrd). When including the root partition in your initrd, it can be removed from lilo, since it won't use it (however, I've left it in but commented it out for visual reference).
  
 Once you generate an initrd, you need to reference it in your stanza. I don't have any labels set for my primary drive, so I added an example that is commented out. You can use one or the other. As before, I commented out the original device, but it doesn't have to remain in the conf file. Once you generate an initrd, you need to reference it in your stanza. I don't have any labels set for my primary drive, so I added an example that is commented out. You can use one or the other. As before, I commented out the original device, but it doesn't have to remain in the conf file.
  
-Instead of changing your original stanza, it might be beneficial to keep it there in case you accidentally screw something up and your system doesn't boot, then you can just select your original config and go and fix things and try it again. Once you have verified your system boots properly with your new stanza, if desired, you can remove the old one.+<note tip>Instead of changing your original stanza, it might be beneficial to keep it there in case you accidentally screw something up and your system doesn't boot, then you can just select your original config and go and fix things and try it again. Once you have verified your system boots properly with your new stanza, if desired, you can remove the old one.</note>
  
-<code bash>image = /boot/vmlinuz-generic-3.10.17+<code>image = /boot/vmlinuz-generic-3.10.17
 initrd = /boot/initrd-3.10.17.gz initrd = /boot/initrd-3.10.17.gz
 #root = /dev/sda2 #root = /dev/sda2
-root = "UUID=23bce2c2-996d-449e-89cc-0e5029cc6d8d"+#root = "UUID=23bce2c2-996d-449e-89cc-0e5029cc6d8d"
 #root = "LABEL=Mylabelhere" #root = "LABEL=Mylabelhere"
 label = Slack-generic label = Slack-generic
Line 182: Line 208:
 </code> </code>
  
-==== PARTLABEL PARTUUID ====+==== PARTUUID ====
  
-Now, as mentioned above, PARTLABEL and PARTUUID do not require an initrd (although, they work fine if you do use one). However, lilo is old enough that it doesn't have proper support for them, so there is a workaround to get it working. Instead of referencing root like we did above, we need to replace the root option within an "addappend". This will add anything extra to the initial append line at the top of lilo.conf. Keep in mind your spaces, as it will be placed directly afterwards, so it might be wise to include an extra space at the beginning of the line to ensure it doesn't accidentally combine words (which would likely cause a kernel panic and prevent you from booting). You can use either PARTLABEL or PARTUUID. For me, since my root partition is on a drive with an MBR, I'll have the shortened PARTUUID.+Now, as mentioned above, PARTUUID does not require an initrd (although, it works fine if you do use one). However, lilo is old enough that it doesn't have proper support for it, so there is a workaround to get it working. Instead of referencing root like we did above, we need to replace the root option within an "addappend". This will add anything extra to the initial append line at the top of lilo.conf. Keep in mind your spaces, as it will be placed directly afterwards, so it might be wise to include an extra space at the beginning of the line to ensure it doesn't accidentally combine words (which would likely cause a kernel panic and prevent you from booting). For me, since my root partition is on a drive with an MBR, I'll have the shortened PARTUUID instead of the regular 32 character length of a proper PARTUUID.
  
-<code bash>image = /boot/vmlinuz+<code>image = /boot/vmlinuz-generic
 addappend = " root=PARTUUID=6f47c81b-02" addappend = " root=PARTUUID=6f47c81b-02"
-#addappend = " root=PARTLABEL=Mylabelhere" +label = Slack-partuuid
-label = Slack-new+
 read-only read-only
  
-image = /boot/vmlinuz +image = /boot/vmlinuz-generic 
-initrd = /boot/initrd.gz+initrd = /boot/initrd-4.4.14.gz 
 +root = "UUID=25a4dafe-bbf2-413f-a60c-8c38efc0a122" 
 +label = Slack-UUID 
 +read-only 
 + 
 +image = /boot/vmlinuz-huge
 root = /dev/sda2 root = /dev/sda2
 label = Slack-default label = Slack-default
 read-only</code> read-only</code>
 +
 +As noted above, PARTLABEL is not supported with lilo.
  
 ==== Finishing Up ==== ==== Finishing Up ====
 +
 +Once you have your ''/etc/lilo.conf'' file updated, we should test it to make sure there aren't any glaring errors. Lilo has the ability to test a config using the -t option.
 +
 +<code>root@darkstar:~# lilo -t
 +Warning: LBA32 addressing assumed
 +Added Slack-partuuid  +  *
 +Added Slack-UUID  +
 +Added Slack-default  +
 +The boot sector and the map file have *NOT* been altered.
 +One warning was issued.</code>
 +
 +The LBA32 warning is normal with Slackware's ''lilo.conf'' and can be ignored (however, you can get rid of it by added ''LBA32'' in the Global section of your ''lilo.conf''). The main thing we're looking for is that all of our stanzas were added and no errors were issued. If that worked, then we can run lilo by itself to finish the process.
 +
 +<code>root@darkstar:~# lilo
 +Warning: LBA32 addressing assumed
 +Added Slack-partuuid  +  *
 +Added Slack-UUID  +
 +Added Slack-default  +
 +One warning was issued.</code>
 +
 +If you got this far, go ahead and reboot. Your system should now no longer rely on device names that can easily change.
 +
 +<note important>Final thing to remember, is your device names can change at any time. As should always be the case, whether or not you're using persistent names, before you do anything that may wipe a drive (e.g. ''dd'', ''fdisk'', etc), ensure you are using the correct drive name. You don't want to assume your thumbdrive is ''/dev/sdc'' (because that's what it's always been) before using dd to write that shiny new Slackware64-current iso on there. If your device names have changed, you could be writing that iso to your root partition and take out your whole OS. Use the tools provided above (the various folders under ''/dev/disk/'', ''blkid'', and/or ''dmesg'') to verify what device name you want to use before running the command.</note>
  
 ====== Sources ====== ====== Sources ======
Line 204: Line 259:
 <!-- * Original source: [[http://some.website.org/some/page.html]] --> <!-- * Original source: [[http://some.website.org/some/page.html]] -->
 <!-- Authors are allowed to give credit to themselves! --> <!-- Authors are allowed to give credit to themselves! -->
-* Originally written by Jeremy Hansen aka [[wiki:user:bassmadrigal | bassmadrigal]]+  * Originally written by Jeremy Hansen aka [[wiki:user:bassmadrigal | bassmadrigal]]
 <!-- * Contributions by [[wiki:user:yyy | User Y]] --> <!-- * Contributions by [[wiki:user:yyy | User Y]] -->
  
 <!-- Please do not modify anything below, except adding new tags.--> <!-- Please do not modify anything below, except adding new tags.-->
 <!-- You must remove the tag-word "template" below before saving your new page --> <!-- You must remove the tag-word "template" below before saving your new page -->
-{{tag>howtos template}}+{{tag>howtos author_bassmadrigal}}
 howtos:slackware_admin:how_to_configure_fstab_and_lilo.conf_with_persistent_naming ()