LinuxQuestions.org
Visit Jeremy's Blog.
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Distributions > Slackware
User Name
Password
Slackware This Forum is for the discussion of Slackware Linux.

Notices


Reply
  Search this Thread
Old 12-05-2016, 06:43 PM   #1
linuxbird
Member
 
Registered: Feb 2006
Distribution: Slackware
Posts: 542

Rep: Reputation: 36
Drive Assignments


Adding additional controllers to a disk farm, I am faced with a change in what drive is /dev/sda, etc. It appears at boot the drive is sda but afterwards it is reassigned, and a drive from a new controller is the new /dev/sda.

I know that I can put UUID in fstab, but I would really like to have a deterministic assignment of sda, sdb, sdc, etc.

Is there a way to accomplish that?

FWIW, I am using Slackware 14.0 but will upgrade this machine to 14.2 early next year.

Thanks.

Addendum: It looks like one way to do this is by writing udev rules. Since 14.2 uses eudev, perhaps they would have to be rewritten again. Is there a different way?

Last edited by linuxbird; 12-05-2016 at 07:18 PM. Reason: udev discussion
 
Old 12-05-2016, 07:42 PM   #2
USUARIONUEVO
Senior Member
 
Registered: Apr 2015
Posts: 2,295

Rep: Reputation: 916Reputation: 916Reputation: 916Reputation: 916Reputation: 916Reputation: 916Reputation: 916Reputation: 916
I see that problem ,some time a go , and i open a thread , or sugest in the current sugest ,im not sure.


The problem is caused because kernel have

CONFIG_FDDI=y

need to recompile kernel with

CONFIG_FDDI=m


I see same problem in asrock motherboards , altering order on HDD , when plug a USB STICK , and when unplugged , ..order of partitions are altered.

I not understand why , FDD support is compiled as YES (forced) in 2016 , as module are ok , for very very very very very old machines , but as YES ..i think NO.
 
3 members found this post helpful.
Old 12-05-2016, 09:14 PM   #3
linuxbird
Member
 
Registered: Feb 2006
Distribution: Slackware
Posts: 542

Original Poster
Rep: Reputation: 36
Quote:
Originally Posted by USUARIONUEVO View Post
I see that problem ,some time a go , and i open a thread , or sugest in the current sugest ,im not sure.


The problem is caused because kernel have

CONFIG_FDDI=y

need to recompile kernel with

CONFIG_FDDI=m


I see same problem in asrock motherboards , altering order on HDD , when plug a USB STICK , and when unplugged , ..order of partitions are altered.
Well this is certainly helpful, because as it turns out, the MB is an ASRock.

However, I am confused, because I thought CONFIG_FDDI was for fiber. Perhaps you meant something else?
 
Old 12-06-2016, 09:51 AM   #4
linuxbird
Member
 
Registered: Feb 2006
Distribution: Slackware
Posts: 542

Original Poster
Rep: Reputation: 36
I think I need the help of a boot time expert.

OK, so here is what is happening:

drive 1 = ide, also my boot drive, a mere 60 gb and probably a third as many years old
drive 2 = DVDRW, not quite as old, but getting there, and is IDE
drive 3-6 = WD 4TB red

So when I boot,

drive 1 = /dev/sda
drive 2 = /dev/sr0
drive 3 = /dev/sdb
drive 4 = /dev/sdc
drive 5 = /dev/sdd
drive 6 = /dev/sde

Then I add a Syba SATA adapter, SI-PEX40108, with one drive, and the following drive assignments seem to happen:

Adapter drive is drive 7, for this discussion. It becomes the first drive, and the boot dies when it can't find the partition with the kernel on it (because the drive doesn't have a kernel, or anything else on it). I can tell that it is the adapter drive from the messages.

So what is happening, with this motherboard, ASRock G41M-S3, is that the adapter drives become mapped to the new first drive of the system, which is where lilo is configured to go. The MBR still resides on drive 1, but while booting the system tried to open the thrid partition of drive 7, which has effectively become the new /dev/sda.

USUARIONEUVO says that he thinks this is a problem on ASRock motherboards. I searched on that and found a few instances where this may have happened, but they were a while ago (I am repurposing an older MB), and not exactly the same situation.

I did an experiment, booting the system with the SATA adapter in a PCIe slot, but without a hard drive data cable attached. The system boots normal, and when I plug in the SATA drive, it becomes /dev/sdf. What I want is for the SATA adapter card drives to become /dev/sdf-i. I would consider that "normal." Not happening here, at least with any of my attempts.

So let's talk about possible solutions.
a.) I see no way to tell BIOS to change drive assignments for adapter interfaced SATA drives
b.) Changing fstab so that it uses UUID will not work, because the run kernel is on /dev/sda3, and the disk sequence gets messed up bringing up the run kernel, before fstab is mounted.
c.) udev may not work (trying it appears to be a bit of work) because udev may run after the run kernel is loaded (perhaps someone knows for sure-I would love to hear non-speculation on that point).

There has to be a better way, or even a way which works! All I all I am trying to do is have the drives from a SATA adapter be added AFTER the drives from the motherboard based adapters.
 
Old 12-06-2016, 11:00 AM   #5
bassmadrigal
LQ Guru
 
Registered: Nov 2003
Location: West Jordan, UT, USA
Distribution: Slackware
Posts: 8,792

Rep: Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656
Quote:
Originally Posted by linuxbird View Post
b.) Changing fstab so that it uses UUID will not work, because the run kernel is on /dev/sda3, and the disk sequence gets messed up bringing up the run kernel, before fstab is mounted.
It is true that changing the fstab to UUID won't fix your boot problems, but you can also change lilo to UUID, which will fix your problem. I wrote up an article on the SlackWiki on that subject, and Slackware includes a lilo-uuid-diskid utility that can convert your lilo automatically, but I've never used it and always done mine manually.

Both your lilo.conf and fstab will need to be using UUIDs (or some other form of persistent naming) for this to function properly.

Quote:
Originally Posted by linuxbird View Post
There has to be a better way, or even a way which works! All I all I am trying to do is have the drives from a SATA adapter be added AFTER the drives from the motherboard based adapters.
There is also a possibility that if you switch to the generic kernel and an initrd, if the initrd and kernel don't contain the module for your sata addon card, it would likely prevent the drive names from getting mixed up. But I've never tested this, and it would only possibly work if the sata addon card's driver isn't built into the kernel.
 
2 members found this post helpful.
Old 12-07-2016, 07:51 AM   #6
linuxbird
Member
 
Registered: Feb 2006
Distribution: Slackware
Posts: 542

Original Poster
Rep: Reputation: 36
This is perfect. Great info. I will try to implement, based upon your article, and see if that resolves my issues. THANKS!
 
Old 12-08-2016, 01:30 AM   #7
SCerovec
Senior Member
 
Registered: Oct 2006
Location: Cp6uja
Distribution: Slackware on x86 and arm
Posts: 2,470
Blog Entries: 2

Rep: Reputation: 979Reputation: 979Reputation: 979Reputation: 979Reputation: 979Reputation: 979Reputation: 979Reputation: 979
there is one more option if the last one fails:

while booting generic;
have the add-on controller module blacklisted:

it won't auto-load until rc.M "plays"

So You can control it from rc.modules or rc.local

Other than that,
Code:
#modinfo <said module>
to check if it supports order of registering devices (seek for a delay?)
 
1 members found this post helpful.
Old 12-08-2016, 04:32 AM   #8
elcore
Senior Member
 
Registered: Sep 2014
Distribution: Slackware
Posts: 1,747

Rep: Reputation: Disabled
Quote:
Originally Posted by linuxbird View Post
So what is happening, with this motherboard, ASRock G41M-S3, is that the adapter drives become mapped to the new first drive of the system, which is where lilo is configured to go. The MBR still resides on drive 1, but while booting the system tried to open the thrid partition of drive 7, which has effectively become the new /dev/sda.

USUARIONEUVO says that he thinks this is a problem on ASRock motherboards. I searched on that and found a few instances where this may have happened, but they were a while ago (I am repurposing an older MB), and not exactly the same situation.

I did an experiment, booting the system with the SATA adapter in a PCIe slot, but without a hard drive data cable attached. The system boots normal, and when I plug in the SATA drive, it becomes /dev/sdf. What I want is for the SATA adapter card drives to become /dev/sdf-i. I would consider that "normal." Not happening here, at least with any of my attempts.

So let's talk about possible solutions.
a.) I see no way to tell BIOS to change drive assignments for adapter interfaced SATA drives
b.) Changing fstab so that it uses UUID will not work, because the run kernel is on /dev/sda3, and the disk sequence gets messed up bringing up the run kernel, before fstab is mounted.
c.) udev may not work (trying it appears to be a bit of work) because udev may run after the run kernel is loaded (perhaps someone knows for sure-I would love to hear non-speculation on that point).

There has to be a better way, or even a way which works! All I all I am trying to do is have the drives from a SATA adapter be added AFTER the drives from the motherboard based adapters.
My opinion is the board's bios only supports ordering of integrated SATA/IDE/Floppy controllers, and doesn't support ordering of USB and PCI-SATA controllers.
This is where the kernel steps in and implements some sort of ordering which may not work on all boards, and which may or may not match what was specified in bios and/or boot loader.
Blacklisting the offending kernel modules should work, as should disabling a 'secondary boot device' in bios as I suspect the kernel has some logic to decide which is primary regardless of what bios does.
 
Old 12-08-2016, 12:54 PM   #9
linuxbird
Member
 
Registered: Feb 2006
Distribution: Slackware
Posts: 542

Original Poster
Rep: Reputation: 36
Quote:
Originally Posted by elcore View Post
My opinion is the board's bios only supports ordering of integrated SATA/IDE/Floppy controllers, and doesn't support ordering of USB and PCI-SATA controllers.
This is where the kernel steps in and implements some sort of ordering which may not work on all boards, and which may or may not match what was specified in bios and/or boot loader.
I'll accept that as opinion, but I can't ignore several data points. First, this is only happening with my ASRock motherboards. It doesn't happen with any of the others. I have probably 14 or more others, and admittedly, I have only tested 8 others. But the ordering issue doesn't happen with those.

What is so frustrating about the ASRock behavior is that it substitutes the third party adapter linked drives in as the first drive in the sequence, which is the drive the root partition is normally associated with. The "normal" behavior is to have the third party attached drives appended to the end of the disk list, which is more consistent with the manner that additional drives would normally be used. Think large disk farm, raid arrays, etc. Normally it is not the first choice to have the raid host the root partition. Sure it can be done, but it is not the most common architecture.

Last edited by linuxbird; 12-08-2016 at 12:55 PM. Reason: repair quote
 
Old 12-08-2016, 04:36 PM   #10
SCerovec
Senior Member
 
Registered: Oct 2006
Location: Cp6uja
Distribution: Slackware on x86 and arm
Posts: 2,470
Blog Entries: 2

Rep: Reputation: 979Reputation: 979Reputation: 979Reputation: 979Reputation: 979Reputation: 979Reputation: 979Reputation: 979
Yes, particular vendors are particularly broken

But we, the slackers, manage to "twist the hand" and get our systems straight each time.
 
Old 12-10-2016, 01:07 PM   #11
linuxbird
Member
 
Registered: Feb 2006
Distribution: Slackware
Posts: 542

Original Poster
Rep: Reputation: 36
I followed bassmadrigal's nice writeup, and while my hacks booted up nicely without the third-party SATA adapter being used, as soon as I plugged a drive into it, and rebooted, things went south.

Unable to exactly reproduce it here, here is the gist of what I get at boot time:
VFS: Cannot open root device :803" or unknown-block(8,3)
Please append a correct "root'" boot option; here are the available partitions:

then for the sd drivers, it lists them with an apparent UUID of 00000000-0000-0000-0000-000000000000

SCerovec's idea is a no-go because the module used for the third-party SATA drives is the same module used for existing motherboard adapted drives.

So it looks like I am again out of ideas.
 
Old 12-10-2016, 02:29 PM   #12
bassmadrigal
LQ Guru
 
Registered: Nov 2003
Location: West Jordan, UT, USA
Distribution: Slackware
Posts: 8,792

Rep: Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656
Can you post your /etc/lilo.conf, your /etc/fstab, and the output of blkid?
 
Old 12-10-2016, 03:26 PM   #13
SCerovec
Senior Member
 
Registered: Oct 2006
Location: Cp6uja
Distribution: Slackware on x86 and arm
Posts: 2,470
Blog Entries: 2

Rep: Reputation: 979Reputation: 979Reputation: 979Reputation: 979Reputation: 979Reputation: 979Reputation: 979Reputation: 979
Lightbulb

Quote:
Originally Posted by linuxbird View Post
I followed bassmadrigal's nice writeup, and while my hacks booted up nicely without the third-party SATA adapter being used, as soon as I plugged a drive into it, and rebooted, things went south.

Unable to exactly reproduce it here, here is the gist of what I get at boot time:
VFS: Cannot open root device :803" or unknown-block(8,3)
Please append a correct "root'" boot option; here are the available partitions:

then for the sd drivers, it lists them with an apparent UUID of 00000000-0000-0000-0000-000000000000

SCerovec's idea is a no-go because the module used for the third-party SATA drives is the same module used for existing motherboard adapted drives.

So it looks like I am again out of ideas.
This underlined is the culprit IMO.

How would You' as a kernel, distinguish among to apparently identical drivers which is to be counted first?

eudev persistent rules come to mind:

try to fix the device rules for the MoBo controller somehow?

please provide output of following:
Code:
# ls /etc/udev/ -lahR
and:
Code:
# lsmod
and:
Code:
# lspci
please?
 
Old 12-10-2016, 06:42 PM   #14
linuxbird
Member
 
Registered: Feb 2006
Distribution: Slackware
Posts: 542

Original Poster
Rep: Reputation: 36
Quote:
Originally Posted by bassmadrigal View Post
Can you post your /etc/lilo.conf, your /etc/fstab, and the output of blkid?
Here you are:

Code:
# LILO configuration file
# generated by 'liloconfig'
#
# Start LILO global section
# MBR is /dev/hda, partition is /dev/hda1
#boot = /dev/sda
boot = /dev/disk/by-id/ata-MAXTOR_6L060J3_663217953398

#compact        # faster, but won't work on all systems.
# Boot BMP Image.
# Bitmap in BMP format: 640x480x8
  bitmap = /boot/slack.bmp
# Menu colors (foreground, background, shadow, highlighted
# foreground, highlighted background, highlighted shadow):
  bmp-colors = 255,0,255,0,255,0
# Location of the option table: location x, location y, number of
# columns, lines per column (max 15), "spill" (this is how many
# entries must be in the first column before the next begins to
# be used.  We don't specify it here, as there's just one column.
  bmp-table = 60,6,1,16
# Timer location x, timer location y, foreground color,
# background color, shadow color.
  bmp-timer = 65,27,0,255
# Standard menu.
# Or, you can comment out the bitmap menu above and
# use a boot message with the standard menu:
#message = /boot/boot_message.txt

# Append any additional kernel parameters:
append="noparmset vt.default_utf8=0"
prompt
timeout = 150
# VESA framebuffer console @ 1024x768x256
vga = 773
# Normal VGA console
# vga = normal
# VESA framebuffer console @ 1024x768x64k
# vga=791
# VESA framebuffer console @ 1024x768x32k
# vga=790
# VESA framebuffer console @ 1024x768x256
# vga=773

# ramdisk = 0     # paranoia setting
# explicit to avoid LBA32 warning
LBA32
# End LILO global section

# Boot by UUID, which was required because Syba SATA adapter drives
# are sometimes loaded before ASRock G41M-S3 motherboard drives
#
image = /boot/vmlinuz
#  root = /dev/sda3
  root = /dev/disk/by-id/ata-MAXTOR_6L060J3_663217953398-part3
#  root = UUID:"aa2c0ed6-aa0f-429e-9b95-f429712c2aef"
  label = LinuxSCANuuid
  read-only
#
# Linux bootable partition config begins
# tried for Syba Marvell controller using:   append = "ahci.marvell_enable=1 "
# tried per Syba:  append = "ata.generic=all_generic_ide=1 "
image = /boot/vmlinuz
  root = /dev/sda3
  label = LinuxSCAN
  read-only
#
image = /boot/vmlinuz
  root = /dev/sda1
  label = LinuxBASE
  read-only  # Partitions should be mounted read-only for checking
# Linux bootable partition config ends
And this is the fstab that didn't get used.

Code:
#fstab modified for UUID  1161210

#/dev/sda2        swap             swap        defaults         0   0

UUID=586e07ce-378e-42ba-9156-109f59808325	swap		swap	defaults	0	0

#/dev/sda3        /                ext4        defaults         1   1

UUID=aa2c0ed6-aa0f-429e-9b95-f429712c2aef	/		ext4	defaults	1	1


#/dev/sda1        /u1              ext3        defaults         1   2
####/dev/cdrom      /mnt/cdrom       auto        noauto,owner,ro,comment=x-gvfs-show 0   0
#/dev/fd0         /mnt/floppy      auto        noauto,owner     0   0
devpts           /dev/pts         devpts      gid=5,mode=620   0   0
proc             /proc            proc        defaults         0   0
tmpfs            /dev/shm         tmpfs       defaults         0   0
Code:
#blkid
/dev/sda1: UUID="db8bdd36-5c35-4141-a84f-fbd3c614a7c8" SEC_TYPE="ext2" TYPE="ext3" 
/dev/sda2: UUID="586e07ce-378e-42ba-9156-109f59808325" TYPE="swap" 
/dev/sda3: UUID="aa2c0ed6-aa0f-429e-9b95-f429712c2aef" TYPE="ext4" 
/dev/sdc1: UUID="1177ff13-7a61-43d0-a167-fa15678c0450" TYPE="ext4" 
/dev/sdb1: UUID="4967dd17-6e51-413f-a02d-fbfe8652b764" TYPE="ext4" 
/dev/sde1: UUID="c1207f97-7f86-4bfb-a03d-067cab1f3451" TYPE="ext4" 
/dev/sdd1: UUID="08abb303-addf-48af-a97a-bb24703dd5d1" TYPE="ext4" 
#
 
Old 12-10-2016, 06:48 PM   #15
linuxbird
Member
 
Registered: Feb 2006
Distribution: Slackware
Posts: 542

Original Poster
Rep: Reputation: 36
Quote:
Originally Posted by SCerovec View Post

try to fix the device rules for the MoBo controller somehow?

please provide output of following:
...
please?
Sure, glad to.

Code:
# ls /dev/udev/ -lahR
/etc/udev/:
total 24K
drwxr-xr-x  3 root root 4.0K Sep 10  2012 .
drwxr-xr-x 90 root root  12K Dec 10 14:21 ..
drwxr-xr-x  2 root root 4.0K Dec 10  2012 rules.d
-rw-r--r--  1 root root  489 Nov  5  2010 udev.conf

/etc/udev/rules.d:
total 16K
drwxr-xr-x 2 root root 4.0K Dec 10  2012 .
drwxr-xr-x 3 root root 4.0K Sep 10  2012 ..
-rw-r--r-- 1 root root 1.9K Dec 10  2012 70-persistent-cd.rules
-rw-r--r-- 1 root root  229 Dec 10  2012 70-persistent-net.rules
#
Code:
#lsmod
Module                  Size  Used by
snd_seq_dummy           1119  0 
snd_seq_oss            24956  0 
snd_seq_midi_event      4568  1 snd_seq_oss
snd_seq                41599  5 snd_seq_midi_event,snd_seq_oss,snd_seq_dummy
snd_seq_device          4276  3 snd_seq,snd_seq_oss,snd_seq_dummy
snd_pcm_oss            33254  0 
snd_mixer_oss          12984  1 snd_pcm_oss
ipv6                  238549  16 
lp                      7119  0 
fuse                   58282  1 
snd_hda_codec_realtek   150654  1 
i915                  372988  1 
snd_hda_intel          19503  0 
video                   9938  1 i915
drm_kms_helper         22825  1 i915
drm                   151850  2 drm_kms_helper,i915
processor              23020  0 
snd_hda_codec          70505  2 snd_hda_intel,snd_hda_codec_realtek
snd_hwdep               4802  1 snd_hda_codec
snd_pcm                59013  3 snd_hda_codec,snd_hda_intel,snd_pcm_oss
snd_page_alloc          5925  2 snd_pcm,snd_hda_intel
snd_timer              14798  2 snd_pcm,snd_seq
ppdev                   4710  0 
snd                    43657  11 snd_timer,snd_pcm,snd_hwdep,snd_hda_codec,snd_hda_intel,snd_hda_codec_realtek,snd_mixer_oss,snd_pcm_oss,snd_seq_device,snd_seq,snd_seq_oss
i2c_i801                6952  0 
i2c_algo_bit            4543  1 i915
r8169                  42347  0 
thermal_sys            12122  2 processor,video
i2c_core               16454  5 i2c_algo_bit,i2c_i801,drm,drm_kms_helper,i915
hwmon                   1033  1 thermal_sys
parport_pc             16755  1 
intel_agp               8712  1 i915
psmouse                54408  0 
intel_gtt              11571  3 intel_agp,i915
soundcore               4570  1 snd
mii                     3335  1 r8169
serio_raw               3349  0 
evdev                   7314  0 
parport                26159  3 parport_pc,ppdev,lp
agpgart                22087  3 intel_gtt,intel_agp,drm
button                  3665  1 i915
loop                   14650  0 
#
Code:
#lspci
00:00.0 Host bridge: Intel Corporation 4 Series Chipset DRAM Controller (rev 03)
00:02.0 VGA compatible controller: Intel Corporation 4 Series Chipset Integrated Graphics Controller (rev 03)
00:1b.0 Audio device: Intel Corporation N10/ICH 7 Family High Definition Audio Controller (rev 01)
00:1c.0 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 1 (rev 01)
00:1c.1 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 2 (rev 01)
00:1d.0 USB controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #1 (rev 01)
00:1d.1 USB controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #2 (rev 01)
00:1d.2 USB controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #3 (rev 01)
00:1d.3 USB controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #4 (rev 01)
00:1d.7 USB controller: Intel Corporation N10/ICH 7 Family USB2 EHCI Controller (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev e1)
00:1f.0 ISA bridge: Intel Corporation 82801GB/GR (ICH7 Family) LPC Interface Bridge (rev 01)
00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 01)
00:1f.2 IDE interface: Intel Corporation N10/ICH7 Family SATA Controller [IDE mode] (rev 01)
00:1f.3 SMBus: Intel Corporation N10/ICH 7 Family SMBus Controller (rev 01)
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller (rev 02)
02:00.0 SATA controller: Marvell Technology Group Ltd. Device 9215 (rev 11)
#
 
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
Keytouch Assignments not Taking Cheemag Linux - Software 2 05-04-2010 03:55 AM
C++ Tutorial With Assignments Ace Blackwell Programming 4 10-11-2009 11:02 AM
Drive assignments change, RAID5 gets messed up jdavidow Linux - General 4 01-07-2008 05:53 PM
Device assignments Linear_z Linux - Hardware 1 12-18-2006 12:08 AM
Key Assignments orlenok Linux - General 1 10-04-2003 01:37 PM

LinuxQuestions.org > Forums > Linux Forums > Linux - Distributions > Slackware

All times are GMT -5. The time now is 10:05 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration