LinuxQuestions.org
Download your favorite Linux distribution at LQ ISO.
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 04-14-2005, 04:58 PM   #31
egag
Senior Member
 
Registered: Jul 2004
Location: Netherlands
Distribution: Slackware
Posts: 2,721

Rep: Reputation: 53

quote shilo :-----------
Use the 2.4 series kernel. intermodule.c is not deprecated in that branch. Therefore, no warning.
-----------endquote.

just compiled a 2.6.11.5 kernel, and i saw a lot of those " deprecated" thingys fly over my screen.
well....kernel is running ok here.....

( warning : i might be missing the point here .... )

egag
 
Old 04-14-2005, 05:09 PM   #32
shilo
Senior Member
 
Registered: Nov 2002
Location: Stockton, CA
Distribution: Slackware 11 - kernel 2.6.19.1 - Dropline Gnome 2.16.2
Posts: 1,132

Rep: Reputation: 50
I think you got the point, egag.

The OP doesn't see a bunch of those because they use the fancy ctrl-c method of compiling, where you hit ctrl-c when you see a warning. Sure, you skip all the compiler warnings that way, but I think there are some other issues you run into with it.
 
Old 04-14-2005, 05:26 PM   #33
BenneJezzerette
Member
 
Registered: Mar 2005
Location: In a Box where Slackware Rocks
Distribution: Slackware 11 -current
Posts: 274

Original Poster
Rep: Reputation: 30
OP. Original Poster

Yes Iuse CTRL C to stop it, then open KDE and kill the directory and then start all over again. This is what I have been doing so I can find the errors. Egag got the same thing so I guess that I am going to have to look into the intermodule.c and see what is there that needs to be removed or commented out, will also get the nic disk out and get the tulip.c file and try to find the right directory and linker for it then maybe All will work right. I still have all the Linux 2.6.11.6 and 2.6.11.7 and the 2.4.30. I want to use the 2.6.11.7 so will have to do some serious hacking to make it work.

Yes I am a hacker, Ihave hacked programs to make them work better, not to steal them, so I will have to get my brain up and running again, in full module mode and hack the night away. Jolt Cola anyone??
 
Old 04-14-2005, 05:30 PM   #34
keefaz
LQ Guru
 
Registered: Mar 2004
Distribution: Slackware
Posts: 6,552

Rep: Reputation: 872Reputation: 872Reputation: 872Reputation: 872Reputation: 872Reputation: 872Reputation: 872
You're a directory killer
 
Old 04-14-2005, 05:44 PM   #35
shilo
Senior Member
 
Registered: Nov 2002
Location: Stockton, CA
Distribution: Slackware 11 - kernel 2.6.19.1 - Dropline Gnome 2.16.2
Posts: 1,132

Rep: Reputation: 50
I don't know how plain my english can be.

Quote:
This is what I have been doing so I can find the errors.
You have found a warning. Let it go.

Quote:
Egag got the same thing
And he let the warnings go. Guess what. It works.

Quote:
I guess that I am going to have to look into the intermodule.c and see what is there that needs to be removed
Let me save you the trouble. Just to assure you that I know what I'm talking about, I recieved a B- in my intro to fortran class ten years ago. To get rid of those warnings, remove intermodule.c. It's deprecated. That seems to bother you, so just cut it out like cancer.

You will have some new issues on your hand, you will soon see. When your done sorting those all out, though, make sure to send your patches upstream so the rest of the Linux community can benefit from your discovery.

You are making a mountain out of a molehill.

For your Nic card, have you tried simply adding "/sbin/modprobe tulip" to /etc/rc.d/rc.modules? Do you even have a tulip module?

Last edited by shilo; 04-14-2005 at 05:50 PM.
 
Old 04-14-2005, 06:20 PM   #36
egag
Senior Member
 
Registered: Jul 2004
Location: Netherlands
Distribution: Slackware
Posts: 2,721

Rep: Reputation: 53
quote OP-----------
Egag got the same thing so I guess that I am going to have to look into the intermodule.c and see what is there that needs to be removed or commented out,
-------------endquote

i typed that to tell you that it really doesn't matter what kind of text is flying over the screen while compiling.
if there's an error that is important, the compiler will stop.

those " warnings are not meant for the average user, it's just one of the ways
that the kernel-developers use to communicate ( i guess.... ).

tip for you : as soon as you type " make " then hit enter and shut down your monitor for some 30 min's.
then put it on again and read : " your bzImage is ready ! "

egag
 
Old 04-14-2005, 06:20 PM   #37
BenneJezzerette
Member
 
Registered: Mar 2005
Location: In a Box where Slackware Rocks
Distribution: Slackware 11 -current
Posts: 274

Original Poster
Rep: Reputation: 30
[QUOTE]Originally posted by shilo
I don't know how plain my english can be.



You have found a warning. Let it go.



And he let the warnings go. Guess what. It works.[QUOTE]


All warnings are there because......

Quote:
Let me save you the trouble. Just to assure you that I know what I'm talking about, I recieved a B- in my intro to fortran class ten years ago. To get rid of those warnings, remove intermodule.c. It's deprecated. That seems to bother you, so just cut it out like cancer.


Will seed through it and try to find the errant issues.

Quote:
You will have some new issues on your hand, you will soon see. When your done sorting those all out, though, make sure to send your patches upstream so the rest of the Linux community can benefit from your discovery.


As for that, you know I will, Linux is a nice Open source project, why would I stop there?

Quote:
You are making a mountain out of a molehill.


Large Mountain, small mole hill. Hmm......bugs are bugs, and they don't belong in programs, they are 6 and 8 legged insects, not things in my computer.

Quote:
For your Nic card, have you tried simply adding "/sbin/modprobe tulip" to /etc/rc.d/rc.modules? Do you even have a tulip module?
Well by default the 2.4.29 Kernel has it setup and oddly the KDE Hardware Probe says it's a NetworekEverywhere by Linksys 10/100 NIC, so maybe I will try what you say and see what it says. I am still awaiting the funds for my Linux Bible so I have a lot more to work with.
 
Old 04-14-2005, 06:22 PM   #38
shilo
Senior Member
 
Registered: Nov 2002
Location: Stockton, CA
Distribution: Slackware 11 - kernel 2.6.19.1 - Dropline Gnome 2.16.2
Posts: 1,132

Rep: Reputation: 50
Quote:
bugs are bugs
But warnings are not errors. Get it?
 
Old 04-14-2005, 06:42 PM   #39
egag
Senior Member
 
Registered: Jul 2004
Location: Netherlands
Distribution: Slackware
Posts: 2,721

Rep: Reputation: 53
i don't want to upset anyone, but the kernel is full of bugs .
that's one of the reasons for publishing newer versions. ( with new bugs... )

for the general user just not important.

egag
 
Old 04-14-2005, 11:03 PM   #40
BenneJezzerette
Member
 
Registered: Mar 2005
Location: In a Box where Slackware Rocks
Distribution: Slackware 11 -current
Posts: 274

Original Poster
Rep: Reputation: 30
Quote:
Originally posted by shilo
But warnings are not errors. Get it?
I knew if I looked carefully I would see it. Now for the good news, this is for Modules, Read carefully. Secondly did the full make all, the modules I have are the file systems I do not use by default, and the sound. The only modules that should actually be set. I figured out the NIc and also figured out how to make it work. Enable everything that pertains to the NIC and IPv4 IP IPv6 and akl the filters and everything that is there. Only one NIC enabled. I as of yet have to actually make install and make modules_install, but the only errors I had in the entire compile are with this inforamtion. So if all goes well then I will be using Linux 2.6.11.7 as of the next 45 minutes.
Code:
intermodule.c.cmd

cmd_kernel/intermodule.o := gcc -Wp,-MD,kernel/.intermodule.o.d -nostdinc -isystem /usr/lib/gcc-lib/i486-slackware-linux/3.3.5/include -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -ffreestanding -O2     -fomit-frame-pointer -pipe -msoft-float -mpreferred-stack-boundary=2  -march=k6 -Iinclude/asm-i386/mach-default      -DKBUILD_BASENAME=intermodule -DKBUILD_MODNAME=intermodule -c -o kernel/intermodule.o kernel/intermodule.c

deps_kernel/intermodule.o := \
  kernel/intermodule.c \
  include/linux/module.h \
    $(wildcard include/config/modules.h) \
    $(wildcard include/config/modversions.h) \
    $(wildcard include/config/module/unload.h) \
    $(wildcard include/config/kallsyms.h) \
  include/linux/config.h \
    $(wildcard include/config/h.h) \
  include/linux/sched.h \
    $(wildcard include/config/keys.h) \
    $(wildcard include/config/schedstats.h) \
    $(wildcard include/config/smp.h) \
    $(wildcard include/config/bsd/process/acct.h) \
    $(wildcard include/config/numa.h) \
    $(wildcard include/config/hotplug/cpu.h) \
    $(wildcard include/config/security.h) \
    $(wildcard include/config/preempt.h) \
    $(wildcard include/config/magic/sysrq.h) \
    $(wildcard include/config/pm.h) \
  include/asm/param.h \
  include/linux/capability.h \
  include/linux/types.h \
    $(wildcard include/config/uid16.h) \
  include/linux/posix_types.h \
  include/linux/stddef.h \
  include/linux/compiler.h \
  include/linux/compiler-gcc3.h \
  include/linux/compiler-gcc.h \
  include/asm/posix_types.h \
  include/asm/types.h \
    $(wildcard include/config/highmem64g.h) \
    $(wildcard include/config/lbd.h) \
  include/linux/spinlock.h \
    $(wildcard include/config/debug/spinlock.h) \
    $(wildcard include/config/lockmeter.h) \
  include/linux/preempt.h \
    $(wildcard include/config/debug/preempt.h) \
  include/linux/linkage.h \
  include/asm/linkage.h \
    $(wildcard include/config/regparm.h) \
    $(wildcard include/config/x86/alignment/16.h) \
  include/linux/thread_info.h \
  include/linux/bitops.h \
  include/asm/bitops.h \
  include/asm/thread_info.h \
    $(wildcard include/config/4kstacks.h) \
    $(wildcard include/config/debug/stack/usage.h) \
  include/asm/page.h \
    $(wildcard include/config/x86/use/3dnow.h) \
    $(wildcard include/config/x86/pae.h) \
    $(wildcard include/config/hugetlb/page.h) \
    $(wildcard include/config/highmem4g.h) \
    $(wildcard include/config/discontigmem.h) \
  include/asm/processor.h \
    $(wildcard include/config/x86/ht.h) \
    $(wildcard include/config/mk8.h) \
    $(wildcard include/config/mk7.h) \
  include/asm/vm86.h \
  include/asm/math_emu.h \
  include/asm/sigcontext.h \
  include/asm/segment.h \
  include/asm/cpufeature.h \
  include/asm/msr.h \
  include/asm/system.h \
    $(wildcard include/config/x86/cmpxchg.h) \
    $(wildcard include/config/x86/oostore.h) \
  include/linux/kernel.h \
    $(wildcard include/config/debug/spinlock/sleep.h) \
  /usr/lib/gcc-lib/i486-slackware-linux/3.3.5/include/stdarg.h \
  include/asm/byteorder.h \
    $(wildcard include/config/x86/bswap.h) \
  include/linux/byteorder/little_endian.h \
  include/linux/byteorder/swab.h \
  include/linux/byteorder/generic.h \
  include/asm/bug.h \
    $(wildcard include/config/debug/bugverbose.h) \
  include/asm-generic/bug.h \
  include/linux/cache.h \
  include/asm/cache.h \
    $(wildcard include/config/x86/l1/cache/shift.h) \
  include/linux/threads.h \
    $(wildcard include/config/nr/cpus.h) \
  include/asm/percpu.h \
  include/asm-generic/percpu.h \
  include/linux/stringify.h \
  include/asm/atomic.h \
    $(wildcard include/config/m386.h) \
  include/linux/timex.h \
    $(wildcard include/config/time/interpolation.h) \
  include/linux/time.h \
  include/linux/seqlock.h \
  include/asm/timex.h \
    $(wildcard include/config/x86/elan.h) \
    $(wildcard include/config/x86/tsc.h) \
    $(wildcard include/config/x86/generic.h) \
  include/linux/jiffies.h \
  include/asm/div64.h \
  include/linux/rbtree.h \
  include/linux/cpumask.h \
  include/linux/bitmap.h \
  include/linux/string.h \
  include/asm/string.h \
  include/linux/errno.h \
  include/asm/errno.h \
  include/asm-generic/errno.h \
  include/asm-generic/errno-base.h \
  include/asm/semaphore.h \
  include/linux/wait.h \
  include/linux/list.h \
  include/linux/prefetch.h \
  include/asm/current.h \
  include/linux/rwsem.h \
    $(wildcard include/config/rwsem/generic/spinlock.h) \
  include/asm/rwsem.h \
  include/asm/ptrace.h \
    $(wildcard include/config/frame/pointer.h) \
  include/asm/mmu.h \
  include/asm/cputime.h \
  include/asm-generic/cputime.h \
  include/linux/smp.h \
  include/linux/sem.h \
    $(wildcard include/config/sysvipc.h) \
  include/linux/ipc.h \
  include/asm/ipcbuf.h \
  include/asm/sembuf.h \
  include/linux/signal.h \
  include/asm/signal.h \
  include/asm/siginfo.h \
  include/asm-generic/siginfo.h \
  include/linux/resource.h \
  include/asm/resource.h \
  include/asm-generic/resource.h \
  include/linux/securebits.h \
  include/linux/fs_struct.h \
  include/linux/completion.h \
  include/linux/pid.h \
  include/linux/percpu.h \
  include/linux/slab.h \
    $(wildcard include/config/.h) \
  include/linux/gfp.h \
  include/linux/mmzone.h \
    $(wildcard include/config/force/max/zoneorder.h) \
  include/linux/numa.h \
  include/linux/topology.h \
    $(wildcard include/config/sched/smt.h) \
  include/asm/topology.h \
  include/asm-generic/topology.h \
  include/linux/init.h \
    $(wildcard include/config/hotplug.h) \
  include/linux/kmalloc_sizes.h \
    $(wildcard include/config/mmu.h) \
    $(wildcard include/config/large/allocs.h) \
  include/linux/param.h \
  include/linux/timer.h \
  include/linux/aio.h \
  include/linux/workqueue.h \
  include/linux/aio_abi.h \
  include/linux/stat.h \
  include/asm/stat.h \
  include/linux/kmod.h \
    $(wildcard include/config/kmod.h) \
  include/linux/elf.h \
  include/asm/elf.h \
  include/asm/user.h \
  include/linux/utsname.h \
  include/linux/kobject.h \
  include/linux/sysfs.h \
    $(wildcard include/config/sysfs.h) \
  include/linux/kref.h \
  include/linux/kobject_uevent.h \
    $(wildcard include/config/kobject/uevent.h) \
  include/linux/moduleparam.h \
  include/asm/local.h \
  include/asm/module.h \
    $(wildcard include/config/m486.h) \
    $(wildcard include/config/m586.h) \
    $(wildcard include/config/m586tsc.h) \
    $(wildcard include/config/m586mmx.h) \
    $(wildcard include/config/m686.h) \
    $(wildcard include/config/mpentiumii.h) \
    $(wildcard include/config/mpentiumiii.h) \
    $(wildcard include/config/mpentiumm.h) \
    $(wildcard include/config/mpentium4.h) \
    $(wildcard include/config/mk6.h) \
    $(wildcard include/config/mcrusoe.h) \
    $(wildcard include/config/mefficeon.h) \
    $(wildcard include/config/mwinchipc6.h) \
    $(wildcard include/config/mwinchip2.h) \
    $(wildcard include/config/mwinchip3d.h) \
    $(wildcard include/config/mcyrixiii.h) \
    $(wildcard include/config/mviac3/2.h) \

kernel/intermodule.o: $(deps_kernel/intermodule.o)

$(deps_kernel/intermodule.o):
intermodule.c
Code:
/* Deprecated, do not use.  Moved from module.c to here. --RR */

/* Written by Keith Owens <kaos@ocs.com.au> Oct 2000 */
#include <linux/module.h>
#include <linux/kmod.h>
#include <linux/spinlock.h>
#include <linux/list.h>
#include <linux/slab.h>

/* inter_module functions are always available, even when the kernel is
 * compiled without modules.  Consumers of inter_module_xxx routines
 * will always work, even when both are built into the kernel, this
 * approach removes lots of #ifdefs in mainline code.
 */

static struct list_head ime_list = LIST_HEAD_INIT(ime_list);
static DEFINE_SPINLOCK(ime_lock);
static int kmalloc_failed;

struct inter_module_entry {
	struct list_head list;
	const char *im_name;
	struct module *owner;
	const void *userdata;
};

/**
 * inter_module_register - register a new set of inter module data.
 * @im_name: an arbitrary string to identify the data, must be unique
 * @owner: module that is registering the data, always use THIS_MODULE
 * @userdata: pointer to arbitrary userdata to be registered
 *
 * Description: Check that the im_name has not already been registered,
 * complain if it has.  For new data, add it to the inter_module_entry
 * list.
 */
void inter_module_register(const char *im_name, struct module *owner, const void *userdata)
{
	struct list_head *tmp;
	struct inter_module_entry *ime, *ime_new;

	if (!(ime_new = kmalloc(sizeof(*ime), GFP_KERNEL))) {
		/* Overloaded kernel, not fatal */
		printk(KERN_ERR
			"Aiee, inter_module_register: cannot kmalloc entry for '%s'\n",
			im_name);
		kmalloc_failed = 1;
		return;
	}
	memset(ime_new, 0, sizeof(*ime_new));
	ime_new->im_name = im_name;
	ime_new->owner = owner;
	ime_new->userdata = userdata;

	spin_lock(&ime_lock);
	list_for_each(tmp, &ime_list) {
		ime = list_entry(tmp, struct inter_module_entry, list);
		if (strcmp(ime->im_name, im_name) == 0) {
			spin_unlock(&ime_lock);
			kfree(ime_new);
			/* Program logic error, fatal */
			printk(KERN_ERR "inter_module_register: duplicate im_name '%s'", im_name);
			BUG();
		}
	}
	list_add(&(ime_new->list), &ime_list);
	spin_unlock(&ime_lock);
}

/**
 * inter_module_unregister - unregister a set of inter module data.
 * @im_name: an arbitrary string to identify the data, must be unique
 *
 * Description: Check that the im_name has been registered, complain if
 * it has not.  For existing data, remove it from the
 * inter_module_entry list.
 */
void inter_module_unregister(const char *im_name)
{
	struct list_head *tmp;
	struct inter_module_entry *ime;

	spin_lock(&ime_lock);
	list_for_each(tmp, &ime_list) {
		ime = list_entry(tmp, struct inter_module_entry, list);
		if (strcmp(ime->im_name, im_name) == 0) {
			list_del(&(ime->list));
			spin_unlock(&ime_lock);
			kfree(ime);
			return;
		}
	}
	spin_unlock(&ime_lock);
	if (kmalloc_failed) {
		printk(KERN_ERR
			"inter_module_unregister: no entry for '%s', "
			"probably caused by previous kmalloc failure\n",
			im_name);
		return;
	}
	else {
		/* Program logic error, fatal */
		printk(KERN_ERR "inter_module_unregister: no entry for '%s'", im_name);
		BUG();
	}
}

/**
 * inter_module_get - return arbitrary userdata from another module.
 * @im_name: an arbitrary string to identify the data, must be unique
 *
 * Description: If the im_name has not been registered, return NULL.
 * Try to increment the use count on the owning module, if that fails
 * then return NULL.  Otherwise return the userdata.
 */
const void *inter_module_get(const char *im_name)
{
	struct list_head *tmp;
	struct inter_module_entry *ime;
	const void *result = NULL;

	spin_lock(&ime_lock);
	list_for_each(tmp, &ime_list) {
		ime = list_entry(tmp, struct inter_module_entry, list);
		if (strcmp(ime->im_name, im_name) == 0) {
			if (try_module_get(ime->owner))
				result = ime->userdata;
			break;
		}
	}
	spin_unlock(&ime_lock);
	return(result);
}

/**
 * inter_module_get_request - im get with automatic request_module.
 * @im_name: an arbitrary string to identify the data, must be unique
 * @modname: module that is expected to register im_name
 *
 * Description: If inter_module_get fails, do request_module then retry.
 */
const void *inter_module_get_request(const char *im_name, const char *modname)
{
	const void *result = inter_module_get(im_name);
	if (!result) {
		request_module("%s", modname);
		result = inter_module_get(im_name);
	}
	return(result);
}

/**
 * inter_module_put - release use of data from another module.
 * @im_name: an arbitrary string to identify the data, must be unique
 *
 * Description: If the im_name has not been registered, complain,
 * otherwise decrement the use count on the owning module.
 */
void inter_module_put(const char *im_name)
{
	struct list_head *tmp;
	struct inter_module_entry *ime;

	spin_lock(&ime_lock);
	list_for_each(tmp, &ime_list) {
		ime = list_entry(tmp, struct inter_module_entry, list);
		if (strcmp(ime->im_name, im_name) == 0) {
			if (ime->owner)
				module_put(ime->owner);
			spin_unlock(&ime_lock);
			return;
		}
	}
	spin_unlock(&ime_lock);
	printk(KERN_ERR "inter_module_put: no entry for '%s'", im_name);
	BUG();
}

EXPORT_SYMBOL(inter_module_register);
EXPORT_SYMBOL(inter_module_unregister);
EXPORT_SYMBOL(inter_module_get);
EXPORT_SYMBOL(inter_module_get_request);
EXPORT_SYMBOL(inter_module_put);
 
Old 04-15-2005, 06:01 AM   #41
egag
Senior Member
 
Registered: Jul 2004
Location: Netherlands
Distribution: Slackware
Posts: 2,721

Rep: Reputation: 53
hmmm....why did you post that ?

if you want to be a kernel developer/debugger , better learn first how to compile one.

egag
 
Old 04-15-2005, 08:49 AM   #42
Nobber
Member
 
Registered: Jun 2002
Location: Nova Scotia
Distribution: Debian (home), Kubuntu 7.04 (work)
Posts: 265

Rep: Reputation: 30
Did I really just read my way through this whole thread?

15 minutes of my life I'll never get back!
 
Old 04-15-2005, 12:38 PM   #43
BenneJezzerette
Member
 
Registered: Mar 2005
Location: In a Box where Slackware Rocks
Distribution: Slackware 11 -current
Posts: 274

Original Poster
Rep: Reputation: 30
Quote:
Originally posted by egag
hmmm....why did you post that ?

if you want to be a kernel developer/debugger , better learn first how to compile one.

egag
Actually I was making a note, that file is a problem, me.. I am going to try a Module Free version and see what takes place. Hopes
 
Old 04-15-2005, 12:40 PM   #44
BenneJezzerette
Member
 
Registered: Mar 2005
Location: In a Box where Slackware Rocks
Distribution: Slackware 11 -current
Posts: 274

Original Poster
Rep: Reputation: 30
Quote:
Originally posted by Nobber
Did I really just read my way through this whole thread?

15 minutes of my life I'll never get back!
Lol, heres 5 more to figure where it's going.
 
Old 04-23-2005, 03:43 PM   #45
grimlaur
LQ Newbie
 
Registered: Jan 2005
Location: West Palm Beach, Florida
Distribution: Slackware 11.0 / Suse 10.1
Posts: 20

Rep: Reputation: 0
That had to be the most horrifyingly amusing thing i have ever read. Yet I could not stop

For some strange reason the best thing i could offer right now would be bad poetry.

I have a kernel problem but after reading all of that i will figure it out myself on principle.

thanks again for the lesson.

grim
 
  


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
compile errors. DrunkenDisciple Linux - Software 3 11-29-2005 12:11 AM
c++ compile errors using g++ ttumelty Programming 5 09-08-2005 01:58 PM
compile errors davidleroux1 Programming 4 05-10-2005 10:03 PM
C++ compile errors Palamides Programming 1 03-09-2005 06:28 AM
Compile Errors userini Linux - Software 6 07-16-2003 08:22 AM

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

All times are GMT -5. The time now is 08:02 AM.

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