by lunarg on October 1st 2007, at 22:06
6 pages

Configuring hardware (and kernel)

To know how to manually configure the kernel, refer to the Gentoo Handbook (Configuring the Kernel). For my specific hardware, read on below...

Configuring the kernel

If you ever have configured a kernel for the target system, you should copy its kernel config to /usr/src/linux/.config. That way, you won't have to go through all the options again to configure it, and you only have to set up the bit about video4linux.
Alternatively, you can download my kernel configuration, and adapt the various kernel options to match your hardware and suit your needs.

To start configuring the kernel:

# cd /usr/src/linux
# make menuconfig

This will start up the semi-graphical menu, which will allow you to set up the various kernel components and options.

General stuff

Aside of enabling the options mentioned in the Gentoo Handbook (Configuring the Kernel), be sure to have the following:

Under Loadable module support:

[*] Enable loadable module support
[*]   Module unloading
[*]     Forced module unloading
[*]   Module versioning support
[*]   Source checksum for all modules
[*]   Automatic kernel module loading
Notice
Be sure to have Automatic kernel module loading enabled as it's important for the IVTV driver.

Under Processor type and features:

    Subarchitecture Type (PC-compatible)  --->
    Processor family (AMD-Opteron/Athlon64)  --->
[*] MTRR (Memory Type Range Register) support
[*] Symmetric multi-processing support
[ ]   SMT (Hyperthreading) scheduler support
[*]   Multi-core scheduler support
    Preemption Model (Voluntary Kernel Preemption (Desktop))  --->
[*] Preempt The Big Kernel Lock
    Memory model (Flat Memory)  --->
(2) Maximum number of CPUs (2-255)
[*] Provide RTC interrupt
    Timer frequency (1000 HZ)  --->

Under Power management options, CPU Frequency scaling:

[*] CPU Frequency scaling
[*]   Enable CPUfreq debugging
<*>   CPU frequency translation statistics
[ ]     CPU frequency translation statistics details
      Default CPUFreq governor (performance)  --->
---   'performance' governor
<*>   'powersave' governor
<*>   'userspace' governor for userspace frequency scaling
<*>   'ondemand' cpufreq policy governor
<*>   'conservative' cpufreq governor
---   CPUFreq processor drivers
<*>   AMD Opteron/Athlon64 PowerNow!
Notice
Note that we keep performance as the default CPUFreq governor, because we will be using cpufrequtils, along with Gentoo facilities to set the governor to something else.
See below (on this page) for information on the installation and configuration of these utils.

Also, we keep the options in ACPI to their defaults, because they're okay that way (correct me if I'm wrong, though...)

Under Bus options (PCI etc.), enable PCI Express support, or you won't have proper video support.

If you're running 64bit, under Executable file formats / Emulations, be sure to have IA32 Emulation enabled to be able to run 32bit apps.


Device drivers

Next up are the Device Drivers.

Under Generic Driver Options, have these enabled:

[*] Select only drivers that don't need compile-time external firmware
[*] Prevent firmware from being built
<*> Userspace firmware loading support

Under ATA/ATAPI/MFM/RLL support, it's very important to have these settings like so:

[ ]     Support for SATA (deprecated; conflicts with libata SATA driver)

For my system, I also enabled ATI IXP chipset IDE support.

SCSI support is required for external HDs, CD/DVD writing, etc. Even if you don't have all of this in your system (huh?), it generally still is a good idea.

< > RAID Transport Class
--- SCSI device support
< >   SCSI target support
[ ] legacy /proc/scsi/ support
--- SCSI support type (disk, tape, CD-ROM)
<*> SCSI disk support
< > SCSI tape support
< > SCSI OnStream SC-x0 tape support
<*> SCSI CDROM support
[ ]   Enable vendor-specific extensions (for SCSI CDROM)
<*> SCSI generic support
< > SCSI media changer support
--- Some SCSI devices (e.g. CD jukebox) support multiple LUNs
[ ] Probe all LUNs on each SCSI device
[ ] Verbose SCSI error reporting (kernel size +=12K)
[ ] SCSI logging facility
[ ] Asynchronous SCSI scanning

If you do not have specific SCSI, IDE-RAID/SATA-RAID (like 3ware/AMCC) hardware, you don't have to enable any of the SCSI low-level drivers.

Next in line is Serial ATA (prod) and Parallel ATA (experimental) drivers. Like the title says, we won't be using these drivers for PATA, but we will use them for SATA. In my case, I've enabled AHCI SATA support, which covers a whole lot of SATA chipsets.

For LVM, we also need to enable some options in Multi-device support (RAID and LVM):

[*] Multiple devices driver support (RAID and LVM)
<*>   Device mapper support

If you need Firewire support (e.g. for video cams or external HDs), enable these options in IEEE 1394 (FireWire) support for proper support:

<M> IEEE 1394 (FireWire) support
---   Controllers
<M>   OHCI-1394 support
---   Protocols
<M>   OHCI-1394 Video support
<M>   SBP-2 support (Harddisks etc.)
<M>   IP over 1394
<M>   Raw IEEE1394 I/O support

I've built Firewire support as modules, because I don't use Firewire that much, and only load it when needed.
Alternatively, you could enable the alternative stack, though that's entirely up to you.

For now, we'll be skipping I2C support, because it's a requirement of V4L. More about that later.

Optionally is the Graphics support, which handles the frame buffer. For more information about its purpose and configuring it, visit http://gentoo-wiki.com/HOWTO_fbsplash.

Since we truly need Sound, we have to configure some things there. First of, enable Sound card support, then enter Advanced Linux Sound Architecture to configure some more stuff.

<M> Advanced Linux Sound Architecture
<M>   OSS Mixer API
<M>   OSS PCM (digital audio) API
[*]     OSS PCM (digital audio) API - Include plugin system
< >   RTC Timer support
[*]   Support old ALSA API

Additionally, select your sound card (or cards), from the sub menus. In my case, I've enabled Emu10k1 (SB Live!, Audigy, E-mu APS) and Intel HD Audio under PCI devices.

Notice
We don't use Open Sound System anymore, because it's majorly deprecated. If an application does use OSS, it will do so through the OSS API of ALSA.

For USB input devices, we need to enable HID support in HID Devices:

--- Generic HID support
--- USB Input Devices
<*> USB Human Interface Device (full HID) support
[*]   /dev/hiddev raw HID device support

Naturally, we'll be needing USB support:

<*> Support for Host-side USB
---   Miscellaneous USB options
[*]   USB device filesystem
---   USB Host Controller Drivers
<*>   EHCI HCD (USB 2.0) support
<*>   OHCI HCD support
<*>   UHCI HCD (most Intel and VIA) support

With the above enabled, you should have full USB support (regardless of chipset). If you want to access external HDs across USB, enable USB Mass Storage support, along with SCSI support.

File systems

Enable file systems support in the File systems sub section. Of course, you're free to choose whatever you want, but (and again: of course), you have to have support for the file systems you're going to use. In my case I need at least reiser4, ext2 and xfs, aside of the various file systems for networking (smbfs, cifs, ...) and removable media (vfat, iso9660, udf, ...). Note that most of the modules are compiled as modules, which is perfectly possible. Just make sure the root partition file system module is built-in, because otherwise the partition would fail to mount and the system will not boot.

I've enabled these from the base table:

<*> Second extended fs support
[*]   Ext2 extended attributes
[*]     Ext2 POSIX Access Control Lists
<M> Ext3 journalling file system support
[*]   Ext3 extended attributes
[*]     Ext3 POSIX Access Control Lists
<M> Ext4dev/ext4 extended fs support development (EXPERIMENTAL)
[*]   Ext4dev extended attributes
<*> Reiser4 (EXPERIMENTAL)
<*> Reiserfs support
[*]   ReiserFS extended attributes
[*]     ReiserFS POSIX Access Control Lists
<M> JFS filesystem support
<M> XFS filesystem support
<M> Minix fs support
<M> ROM file system support
[*] Inotify file change notification support
[*]   Inotify support for userspace
<*> Kernel automounter version 4 support (also supports v3)

Additionally, for removable media and networking systems, I added these:

In CD-ROM/DVD Filesystems:

<M> ISO 9660 CDROM file system support
[*]   Microsoft Joliet CDROM extensions
[*]   Transparent decompression extension
<M> UDF file system support

In DOS/FAT/NT Filesystems:

<M> MSDOS fs support
<M> VFAT (Windows-95) fs support
(437) Default codepage for FAT
(iso8859-15) Default iocharset for FAT
<M> NTFS file system support

In Network File Systems:

<M> NFS file system support
[*]   Provide NFSv3 client support
<M> NFS server support
[*]   Provide NFSv3 server support
[*]   Provide NFS server over TCP support
<M> SMB file system support (to mount Windows shares etc.)
<M> CIFS support (advanced network filesystem for Samba, Window and other CIFS compl
[*]   Support legacy servers which use weaker LANMAN security
[*]   CIFS extended attributes

If you're running a dualboot Windows, enable the following in Partition Types:

[*] Advanced partition selection
[*]   PC BIOS (MSDOS partition tables) support
[*]   Windows Logical Disk Manager (Dynamic Disk) support

Don't forget to correct the NLS as well (in Native Language Support):

<*> Base native language support
(iso8859-15) Default NLS Option
<*>   Codepage 437 (United States, Canada)
<*>   ASCII (United States)
<*>   NLS ISO 8859-1  (Latin 1; Western European Languages)
<*>   NLS ISO 8859-15 (Latin 9; Western European Languages with Euro)

V4L hardware and dependencies

Most of the V4L stuff, along with its dependencies, can be found in the Device Drivers sub section.

Dependencies

As said before, V4L requires I2C support, which has to be enabled at Device Drivers:

<M> I2C support  --->

Notice the M. V4L, and moreover IVTV, requires I2C to be compiled as modules.

Inside I2C support, set these to

<M>   I2C device interface

And under Miscellaneous I2C Chip support:

<M> EEPROM reader
Video For Linux

IVTV driver

This is set up at Device Drivers, Multimedia devices:

<M> Video For Linux
[*]   Enable Video For Linux API 1 (DEPRECATED)
---   Enable Video For Linux API 1 compatible Layer
[*]   Video capture adapters  --->

Under Video capture adapters:

--- Video capture adapters
[ ]   Enable advanced debug functionality
[ ]   Autoselect pertinent encoders/decoders and other helper chips
        Encoders/decoders and other helper chips  --->
<M>   Virtual Video Driver
<M>   Conexant 2388x (bt878 successor) support
<M>     Conexant 2388x DMA audio support
<M>     Blackbird MPEG encoder support (cx2388x + cx23416)
<M>   Conexant cx23416/cx23415 MPEG encoder/decoder support
< >   Marvell 88ALP01 (Cafe) CMOS Camera Controller support

When enabling Conexant cx23416/cx23415 MPEG encoder/decoder support, various dependencies will be set under Encoders/decoders and other helper chips. Check to see whether they are like so:

--- Audio decoders
--- Simple audio decoder chips
< > Philips TDA7432 audio processor
< > Philips TDA9840 audio processor
< > Philips TDA9875 audio processor
< > Philips TEA6415C audio processor
< > Philips TEA6420 audio processor
--- Micronas MSP34xx audio decoders
--- Cirrus Logic CS53L32A audio ADC
< > Texas Instruments TLV320AIC23B audio codec
--- Wolfson Microelectronics WM8775 audio ADC with input mixer
--- Wolfson Microelectronics WM8739 stereo audio ADC
--- Video decoders
< > BT819A VideoStream decoder
< > BT856 VideoStream decoder
< > BT866 VideoStream decoder
< > KS0127 video decoder
< > OmniVision OV7670 sensor support
< > Philips SAA7110 video decoder
< > Philips SAA7111 video decoder
< > Philips SAA7114 video decoder
--- Philips SAA7113/4/5 video decoders
< > Philips SAA7191 video decoder
< > Texas Instruments TVP5150 video decoder
< > vpx3220a, vpx3216b & vpx3214c video decoders
--- Video and audio decoders
--- Conexant CX2584x audio/video decoders
--- MPEG video encoders
--- Conexant CX2341x MPEG encoders
--- Video encoders
--- Philips SAA7127/9 digital video encoders
< > Philips SAA7185 video encoder
< > Analog Devices ADV7170 video encoder
< > Analog Devices ADV7175 video encoder
--- Video improvement chips
--- NEC Electronics uPD64031A Ghost Reduction
--- NEC Electronics uPD64083 3-Dimensional Y/C separation

Other cards

Notice
If you happen to have instructions for other cards, please let me know so I can add them here.

Compiling the kernel

Once completed, exit the menu, choosing to save changes, then start the compilation:

# make && make modules_install

Configuring ALSA (Gentoo-specific)

To configure ALSA for Gentoo: read Gentoo Linux ALSA Guide.

 
 
« December 2024»
SunMonTueWedThuFriSat
1234567
891011121314
15161718192021
22232425262728
293031    
 
Links
 
Quote
« When a bird does poo poo in your eye, be happy elephants don't fly. »