/[gentoo]/xml/htdocs/doc/en/migration-to-2.6.xml
Gentoo

Contents of /xml/htdocs/doc/en/migration-to-2.6.xml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.9 - (hide annotations) (download) (as text)
Sun Jan 16 15:27:30 2005 UTC (9 years, 9 months ago) by swift
Branch: MAIN
Changes since 1.8: +101 -8 lines
File MIME type: application/xml
#72026 - Migration to LVM2 added

1 neysx 1.1 <?xml version='1.0' encoding="UTF-8"?>
2     <!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
3    
4 swift 1.9 <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/migration-to-2.6.xml,v 1.8 2005/01/09 10:44:44 swift Exp $ -->
5 neysx 1.1
6     <guide link="/doc/en/migration-to-2.6.xml">
7    
8     <title>The complete Gentoo Linux 2.6 migration guide</title>
9    
10     <author title="Author">
11     <mail link="dsd@gentoo.org">Daniel Drake</mail>
12     </author>
13     <author title="Contributor">
14     <mail link="sergey_zlodey@mail.ru">Sergey Galkin</mail>
15     </author>
16     <author title="Contributor">
17     <mail link="svyatogor@gentoo.org">Sergey Kuleshov</mail>
18     </author>
19     <author title="Editor">
20     <mail link="neysx@gentoo.org">Xavier Neys</mail>
21     </author>
22 bennyc 1.3 <author title="Editor">
23     <mail link="bennyc@gentoo.org">Benny Chuang</mail>
24     </author>
25 neysx 1.1
26     <abstract>
27     This document will aid you in the process of migrating from Linux 2.4 to Linux
28 swift 1.9 2.6, devfs to udev, OSS to ALSA, and LVM to LVM2.
29 neysx 1.1 </abstract>
30    
31 swift 1.9 <version>0.2.1</version>
32     <date>2005-01-11</date>
33 neysx 1.1
34     <chapter>
35     <title>Introduction</title>
36    
37     <section>
38     <title>Status of this document</title>
39     <body>
40    
41     <p>
42     The migration processes described in this document are not minor changes. This
43     document is in early stages and may be missing some details but hopefully the
44     main things have been covered. If you do try a migration, please <uri
45     link="http://bugs.gentoo.org">report</uri> any problem you might encounter so
46     that we can refine this guide.
47     </p>
48    
49     <p>
50     We are planning on making Linux 2.6 the default kernel for when 2005.0 is
51     released (for some arch's). At the same time, we will encourage all existing
52     users of those arch's to upgrade to Linux 2.6, as many will still be running
53     2.4. Your feedback on this document is much appreciated, so that when this
54     time comes, the document can be in good shape for the mass-migration.
55     </p>
56    
57     </body>
58     </section>
59    
60     <section>
61     <title>Whats new in Linux 2.6?</title>
62     <body>
63    
64     <p>
65     That is no easy question to answer. Linux 2.6 is the result of over 2 years
66     of rapid development and stabilisation of new features, and is architectually
67     quite different from its 2.4 counterpart. Some of the more major changes are
68     listed below:
69     </p>
70    
71     <ul>
72     <li>
73     Scheduler/Interactivity improvements: Linux feels very smooth on desktop
74     systems and copes much better than 2.4 while under load
75     </li>
76     <li>
77     Scalability: Linux now scales much better at both ends - on small embedded
78     devices and also systems with many processors
79     </li>
80     <li>Performance: Throughput from common applications is much improved</li>
81     <li>
82     Hardware support: Linux now supports many more architectures and hardware
83     devices out-of-the-box than any other operating system.
84     </li>
85     </ul>
86    
87     <p>
88     Joseph Pranevich has written a very detailed document, <uri
89     link="http://www.kniggit.net/wwol26.html">The Wonderful World Of Linux
90     2.6</uri> which you may be interested to glance over. If you are interested in
91     the more technical details, you can refer to <uri
92     link="http://www.linux.org.uk/~davej/docs/post-halloween-2.6.txt">The
93     post-halloween document</uri> - but bear in mind that this is somewhat outdated
94     now.
95     </p>
96    
97     </body>
98     </section>
99     <section>
100     <title>What is udev?</title>
101     <body>
102    
103     <p>
104     In the past, Gentoo has instructed users to use <e>devfs</e> for managing the
105     /dev directory, which contains a series of device interfaces to allow system
106     applications to communicate with hardware (through the kernel).
107     </p>
108    
109     <p>
110     <e>devfs</e>, whilst a good concept, has some internal problems, and has been
111     marked obselete in Linux 2.6.
112     </p>
113    
114     <p>
115     <e>udev</e> is the new way of managing device nodes. It addresses issues with
116     previous device managers, and also attempts to solve some other problems.
117     </p>
118    
119     <p>
120     The above may not mean much to you, but fear not, the hard working Gentoo
121     developers have put effort into making the migration from devfs very easy.
122     </p>
123    
124     </body>
125     </section>
126     <section>
127     <title>What is ALSA?</title>
128     <body>
129    
130     <p>
131     With Linux 2.4, chances are that you used OSS (open sound system) drivers to
132     power your sound card. OSS has been replaced by a newer and better set of sound
133     drivers: ALSA.
134     </p>
135    
136     <p>
137     ALSA, the Advanced Linux Sound Architecture, is a new set of sound drivers with
138     a new and improved API, present in the Linux 2.6 kernel. It is backwards
139     compatible with OSS applications, provided that you select the right kernel
140     configuration options!
141     </p>
142    
143     <note>
144     If you do not have any sound/audio hardware, you can safely skip over any
145     ALSA-related instructions in this document.
146     </note>
147    
148     </body>
149     </section>
150 swift 1.9 <section>
151     <title>What is LVM?</title>
152     <body>
153    
154     <p>
155     <e>Logical Volume Management</e> (LVM) exists as set of tools allowing you to
156     manage your disk storage in a very flexible manner. Amongst other things, it
157     allows powerful control over partitions (e.g. resizing without reboot), and
158     makes operations like device changes relatively simple. LVM acts as an
159     alternative to standard partition-based disk management.
160     </p>
161    
162     <p>
163     LVM support has historically been implemented in Linux 2.4. Linux 2.6 features
164     a new version of LVM, named <e>LVM2</e>. The migration process requires you to
165     install new versions of the user-level tools (covered later in this document)
166     but will leave your data intact!
167     </p>
168    
169     <p>
170     <e>If you do not currently use LVM for data-storage management, then LVM2
171     migration does not apply to you.</e> If this is the case, you can safely ignore
172     any parts of this document referencing LVM/LVM2. Upgrading to Linux 2.6 does
173     <e>not</e> require you to store your data on LVM partitions - you can keep
174     your data in the standard partition-format as it always has been.
175     </p>
176    
177     <p>
178     If you are not a LVM user, but you think LVM2 sounds useful for you, you can
179     convert your disks to this format at a later date, by following the
180     <uri link="http://www.gentoo.org/doc/en/lvm2.xml">Gentoo LVM2 Installation
181     Guide</uri>. For now, lets just concentrate on getting a smooth 2.6 migration
182     underway.
183     </p>
184    
185     </body>
186     </section>
187 neysx 1.1 </chapter>
188    
189     <chapter>
190     <title>Preparation</title>
191     <section>
192     <title>Get your system up-to-date</title>
193     <body>
194    
195     <p>
196     Some of the changes brought in with Linux 2.6 also required some changes in the
197     base system applications. Before continuing, you should ensure that your system
198     is relatively up-to-date, and to be perfectly sure, you should update all world
199     and system packages where updates are available.
200     </p>
201    
202     <p>
203     In particular, make sure you have the latest stable versions of the following
204     packages:
205     </p>
206    
207     <ul>
208     <li><c>sys-apps/baselayout</c></li>
209     <li><c>sys-apps/util-linux</c></li>
210     <li>
211     <c>sys-kernel/genkernel</c> (only if you wish to use genkernel as opposed
212     to manual configuration)
213     </li>
214     </ul>
215    
216     <pre caption="Updating all world packages">
217     # <i>emerge sync</i>
218     # <i>emerge -ua world</i>
219     </pre>
220    
221     </body>
222     </section>
223     <section>
224     <title>modutils vs module-init-tools</title>
225     <body>
226    
227     <p>
228     <c>sys-apps/modutils</c> is the package that provides tools such as
229     <c>modprobe</c>, <c>rmmod</c> and <c>insmod</c> for Linux 2.4.
230     </p>
231    
232     <p>
233     Linux 2.6 introduces a new module format, and therefore requires new tools for
234     handling modules. These are bundled up into the
235     <c>sys-apps/module-init-tools</c> package. </p>
236    
237     <p>
238     You should now remove modutils and install module-init-tools:
239     </p>
240    
241     <pre caption="Switching from modutils to module-init-tools">
242 swift 1.5 # <i>emerge unmerge sys-apps/modutils</i>
243 neysx 1.1 # <i>emerge module-init-tools</i>
244     </pre>
245    
246     <note>
247     Don't worry - even though you have just unmerged modutils, module-init-tools
248 bennyc 1.3 provides backwards compatibility for Linux 2.4, so you will still be
249 neysx 1.1 able to boot into Linux 2.4 and handle modules for that kernel.
250     </note>
251    
252     <note>
253     For the above reason, module-init-tools might already be installed and working
254     with your existing Linux 2.4 kernel. In this case, you don't need to worry
255     about this stage - your system is already ready to deal with Linux 2.6 modules.
256     </note>
257    
258     </body>
259     </section>
260     <section>
261     <title>Installing udev</title>
262     <body>
263    
264     <p>
265     There is no configuration involved here. Simply use <c>emerge</c> to install
266     udev:
267     </p>
268    
269     <pre caption="Installing udev">
270     # <i>emerge -a udev</i>
271     </pre>
272    
273 swift 1.7 <p>
274     You should now read the
275     <uri link="http://www.gentoo.org/doc/en/udev-guide.xml">Gentoo udev
276     Guide</uri> to get a more complete idea about the differences between udev
277     and devfs.
278     </p>
279    
280 neysx 1.1 </body>
281     </section>
282     <section>
283 swift 1.5 <title>Checking for essential device nodes</title>
284     <body>
285    
286     <p>
287     When the system boots up, the system requires some essential device nodes. As
288     udev is not included in the kernel, it is not activated immediately. To work
289     around this, you must ensure that you have some essential device nodes on your
290     disk.
291     </p>
292    
293     <p>
294     Our installation stage files will have created the required devices during the
295     initial installation. However, some users have reported that this is not the
296     case. We will use this opportunity to check that the device files exist, and
297     create them if they do not.
298     </p>
299    
300     <p>
301     As your existing device manager will be mounted at /dev, we cannot access it
302     directly. So we will bind-mount your root partition to another location and
303     access the /dev directory from there.
304     </p>
305    
306     <pre caption="Bind-mounting your root partition and listing static devices">
307     # <i>mkdir -p /mnt/temp</i>
308     # <i>mount -o bind / /mnt/temp</i>
309     # <i>cd /mnt/temp/dev</i>
310     # <i>ls -l console null</i>
311     </pre>
312    
313     <p>
314     If the above <e>ls</e> command reported that either <c>console</c> or
315     <c>null</c> do not exist, then you must create them yourself, as shown below.
316     </p>
317    
318     <pre caption="Creating the missing console and null nodes">
319     # <i>mknod -m 660 console c 5 1</i>
320     # <i>mknod -m 660 null c 1 3</i>
321     </pre>
322    
323     <p>
324     You should now unmount your bind-mounted root partition, even if you did not
325     have to create those devices:
326     </p>
327    
328     <pre caption="Unmounting the bind-mounted root">
329 swift 1.7 # <i>cd</i>
330 swift 1.5 # <i>umount /mnt/temp</i>
331 swift 1.6 # <i>rmdir /mnt/temp</i>
332 swift 1.5 </pre>
333    
334     </body>
335     </section>
336     <section>
337 neysx 1.1 <title>Installing ALSA utilities</title>
338     <body>
339    
340     <p>
341     ALSA requires you to have some packages installed, so that applications can use
342     the ALSA API. These packages will also allow you to control the mixer and
343     volume levels. Install the required utilities as follows:
344     </p>
345    
346     <pre caption="Installing ALSA utilities and libraries">
347     # <i>emerge -a alsa-lib alsa-utils alsa-tools alsa-headers alsa-oss</i>
348     </pre>
349    
350     </body>
351     </section>
352     </chapter>
353    
354     <chapter>
355     <title>Installing the Linux 2.6 sources</title>
356    
357     <section>
358     <title>Choosing and installing a kernel</title>
359     <body>
360    
361     <p>
362     The first thing you need to do is install sources of a 2.6 kernel of your
363     choice. The two Gentoo-supported 2.6 kernels are currently
364     <e>gentoo-dev-sources</e> (for desktops) and <e>hardened-dev-sources</e> (for
365     servers). There are others available, see the <uri
366     link="/doc/en/gentoo-kernel.xml">Gentoo Linux Kernel Guide</uri> for more
367     choices.
368     </p>
369    
370     <p>
371     In this guide, we'll use <c>gentoo-dev-sources</c> as an example. Install your
372     chosen set of kernel sources using the <c>emerge</c> utility:
373     </p>
374    
375     <pre caption="Installing gentoo-dev-sources">
376     # <i>emerge -a gentoo-dev-sources</i>
377     These are the packages that I would merge, in order:
378     Calculating dependencies ...done!
379     [ebuild N ] sys-kernel/gentoo-dev-sources-2.6.9-r2
380    
381     Do you want me to merge these packages? [Yes/No] <i>y</i>
382     </pre>
383    
384     </body>
385     </section>
386     <section>
387     <title>Updating the /usr/src/linux symbolic link</title>
388     <body>
389    
390     <p>
391     Various components of the Gentoo utilities rely on /usr/src/linux being a
392     symbolic link to the kernel sources that you are running (or wish to compile
393     against).
394     </p>
395    
396     <p>
397     We will now update our /usr/src/linux link to point at the kernel sources we
398     just installed. Continuing our example:
399     </p>
400    
401     <pre caption="Updating the /usr/src/linux softlink">
402     # <i>cd /usr/src</i>
403 neysx 1.4 # <i>ln -sfn linux-2.6.9-gentoo-r2 linux</i>
404 neysx 1.1 </pre>
405    
406     </body>
407     </section>
408     </chapter>
409    
410 swift 1.7 <chapter id="pitfalls">
411 neysx 1.1 <title>Known pitfalls with Linux 2.6 migration</title>
412     <section>
413     <body>
414    
415     <p>
416     Before we get stuck into configuring the kernel, I'll attempt to detail the
417     most common errors that people make when migrating to Linux 2.6, as some of
418     these points will influence the way you configure the new kernel.
419     </p>
420    
421     <note>
422     Not all of these points are relevant at this stage, but I will detail them all
423     here in one place, and you can refer back at your leisure.
424     </note>
425    
426     </body>
427     </section>
428     <section>
429     <title>Don't use "make oldconfig" with a 2.4 .config</title>
430     <body>
431    
432     <note>
433     If you don't understand what this means, don't worry, you won't make this
434     mistake if you follow the rest of this guide correctly.
435     </note>
436    
437     <p>
438     You'll be asked many many questions, since there have been a large amount of
439     changes. Many people who do try a <c>make oldconfig</c> from a 2.4 config end
440     up creating an unworkable kernel (e.g. no output on-screen, no input from
441     keyboard, etc). Please save yourself the trouble, and use the traditional
442     <c>menuconfig</c> configuration method just this once.
443     </p>
444    
445     </body>
446     </section>
447     <section>
448     <title>Don't use ide-scsi for CD/DVD writing</title>
449     <body>
450    
451     <p>
452     In Linux 2.4, the only way to achieve good CD/DVD writing results was to enable
453     the (rather ugly) <c>ide-scsi</c> emulation. Thankfully, the IDE layer in Linux
454     2.6 has been extended to support CD/DVD writers much better.
455     </p>
456    
457     <p>
458     You don't need to enable any extra options to support CD writing. Just be sure
459     <e>not</e> to enable <c>ide-scsi</c> as you used to.
460     </p>
461    
462     </body>
463     </section>
464     <section>
465     <title>PC Speaker is now a configurable option</title>
466     <body>
467    
468     <p>
469     You won't get your normal console beeps (or any response from the PC speaker at
470     all) unless you specifically enable the new PC speaker option
471     (<c>CONFIG_INPUT_PCSPKR</c>):
472     </p>
473    
474     <pre caption="Location of PC speaker option">
475     Device Drivers ---&gt;
476     Input device support ---&gt;
477     [*] Misc
478     &lt;*&gt; PC Speaker support
479     </pre>
480    
481     <note>
482     By "PC speaker", I am referring to the analogue speaker that beeps once when
483     your system is powering up, I am not referring to normal sound hardware used
484     for playing music, etc.
485     </note>
486    
487     </body>
488     </section>
489     <section>
490     <title>New USB Storage block device driver sometimes problematic</title>
491     <body>
492    
493     <p>
494     Very recently, a new USB storage device driver has been added to the kernel.
495     At the time of writing, this driver ("ub") is still in its early stages and
496     some users find it to be unreliable. If you have problems accessing your USB
497     hard disk, USB flash disk, USB card reader, or USB digital camera, then you
498     could try reverting to the older SCSI-style driver:
499     </p>
500    
501     <pre caption="Disabling ub">
502     Device Drivers ---&gt;
503     Block devices ---&gt;
504     &lt; &gt; Low Performance USB Block driver
505     </pre>
506    
507     <note>
508     The older SCSI-style driver (USB Mass Storage support) is enabled by default.
509     It can be found under "Device Drivers --&gt; USB support", but will generally
510     not come into effect while ub is also present.
511     </note>
512    
513     </body>
514     </section>
515     <section>
516     <title>usbdevfs renamed to usbfs</title>
517     <body>
518    
519     <p>
520     If you have edited your <path>/etc/fstab</path> file to customise the way that
521     the USB device filesystem gets mounted, you may have to modify the filesystem
522     type from <e>usbdevfs</e> to <e>usbfs</e>.
523     </p>
524    
525     <note>
526     Recent 2.4 kernels will also allow you to use "usbfs" as well as "usbdevfs", so
527     you aren't breaking any backwards compatibility by doing this.
528     </note>
529    
530     </body>
531     </section>
532     <section>
533     <title>Don't renice X</title>
534     <body>
535    
536     <p>
537     If you are a desktop 2.4 user, you may have hacked your system into running X
538     at a higher priority, as in some cases it seems to provide better desktop
539     performance.
540     </p>
541    
542     <p>
543     There have been many scheduler changes in 2.6 which change this behaviour. If
544     you continue to run X at a higher priority, it will do exactly what it is
545     supposed to (run the <e>display server</e> at a very high priority) and you
546     will notice consequences such as sound stuttering and slow application load
547     times because your CPU is spending too long serving X and only X.
548     </p>
549    
550     <p>
551     In Linux 2.6, you no longer need to renice desktop applications to get good
552     interactivity. Please remove your "niceness" hacks!
553     </p>
554    
555     </body>
556     </section>
557     <section>
558 swift 1.8 <title>X11 config file should now use /dev/input/mice for PS/2 and USB
559     mice</title>
560 neysx 1.1 <body>
561    
562     <p>
563     One of the changes that a default udev configuration introduces is different
564     organisation of the mouse device nodes. Previously, you would have had nodes
565     such as <path>/dev/psaux</path> and <path>/dev/mouse</path>. You will now have
566     nodes such as <path>/dev/input/mouse0</path>, <path>/dev/input/mouse1</path>,
567     and a collective <path>/dev/input/mice</path> node which combines movements
568     from all mice.
569     </p>
570    
571     <p>
572     Since the old X configurations typically reference <path>/dev/mouse</path> or
573     <path>/dev/psaux</path> then you may get an error similar to the one shown
574     below when you attempt to start X11:
575     </p>
576    
577     <pre caption="Common error when starting X on a udev system for the first time">
578     (EE) xf86OpenSerial: Cannot open device /dev/mouse
579     No such file or directory.
580     (EE) Mouse0: cannot open input device
581     (EE) PreInit failed for input device "Mouse0"
582     No core pointer
583     </pre>
584    
585     <p>
586     To correct this, open your X11 config in a text editor, and update the mouse
587     <e>InputDevice</e> section to use the <path>/dev/input/mice</path> device. An
588     example is shown below:
589     </p>
590    
591     <pre caption="Opening your X11 config file">
592     # <i>nano -w /etc/X11/xorg.conf</i>
593     </pre>
594    
595     <note>
596     If you are still using XFree86, your config file will be
597     <path>/etc/X11/XF86Config</path>
598     </note>
599    
600     <pre caption="Sample mouse InputDevice section">
601     Section "InputDevice"
602     Identifier "Mouse0"
603     Driver "mouse"
604     Option "Protocol" "auto"
605     Option "Device" "/dev/input/mice"
606     EndSection
607     </pre>
608    
609     </body>
610     </section>
611 swift 1.8 <section>
612     <title>New Serial-ATA (SATA) drivers name the devices differently</title>
613     <body>
614    
615     <p>
616     If you used the original Serial ATA drivers under Linux 2.4, you probably
617     observed your SATA devices having names such as <c>/dev/hde</c>.
618     </p>
619    
620     <p>
621     Linux 2.6 introduces some new SATA drivers (libata) which are based on the
622     SCSI subsystem. As these drivers are based on SCSI, your SATA disks will now
623     show up as SCSI devices. Your first SATA disk will be named <c>/dev/sda</c>.
624     You will need to update your <c>/etc/fstab</c> file to reflect this, and you
625     will need to bear this in mind when choosing the root/real_root kernel boot
626     parameter later on.
627     </p>
628    
629     <note>
630     libata has been backported into recent versions of Linux 2.4, so you may
631     already be familiar with the new device naming.
632     </note>
633    
634     </body>
635     </section>
636     <section>
637     <title>bootsplash no longer maintained</title>
638     <body>
639    
640     <p>
641     If you used the <c>gentoo-sources-2.4</c> kernel, you may have used the
642     <e>bootsplash</e> functionality in order to provide yourself with a colourful
643     framebuffer console.
644     </p>
645    
646     <p>
647     The developer of bootsplash appears to have lost interest in his project, given
648     some design problems. However, Gentoo developer <e>Michal Januszewski</e> is
649     developing a successor, <c>gensplash</c>, which in included in the
650     gentoo-dev-sources kernel. You can follow Michals
651     <uri link="http://dev.gentoo.org/~spock/projects/gensplash/archive/gensplash-in-5-easy-steps.txt">
652     Gensplash in 5 easy steps</uri> document in order to familiarize yourself with
653     how gensplash is operated.
654     </p>
655    
656     </body>
657     </section>
658     <section>
659     <title>I2C drivers now included in the kernel</title>
660     <body>
661    
662     <p>
663     If you use <c>lm-sensors</c> to monitor system temperatures and power levels,
664     you previously needed to install the <c>i2c</c> package in order to provide
665     hardware support.
666     </p>
667    
668     <p>
669     The I2C hardware drivers are now included in the Linux 2.6 kernel, no external
670     i2c package is required. Remember to compile support for your specific I2C
671     devices into the kernel configuration. You will then be able to use
672     <c>lm-sensors</c> as usual.
673     </p>
674    
675     </body>
676     </section>
677    
678    
679 neysx 1.1 </chapter>
680    
681     <chapter id="conf">
682     <title>Configuring, building, and installing the kernel</title>
683     <section>
684     <body>
685    
686     <p>
687     As with Linux 2.4, you have two options for managing your new kernel build.
688     </p>
689    
690     <ol>
691     <li>
692     The default method is to configure your kernel manually. This may seem
693     daunting but is the preferred way as long as you know your system. If you
694     wish to configure your new kernel manually, please continue on to the <uri
695     link="#manual">next chapter</uri>.
696     </li>
697     <li>
698     The alternative option is to use our <c>genkernel</c> utility to
699     automatically configure, compile, and install a kernel for you. If you wish
700     to use <c>genkernel</c> then skip over the next chapter and proceed with
701     <uri link="#genkernel">using genkernel</uri>.
702     </li>
703     </ol>
704    
705     </body>
706     </section>
707     </chapter>
708    
709     <chapter id="manual">
710     <title>Default: Manual configuration</title>
711     <section>
712     <title>Configuring the kernel</title>
713     <body>
714    
715     <p>
716     We'll now get on with configuring the kernel. Open menuconfig in the usual way:
717     </p>
718    
719     <pre caption="Invoking menuconfig">
720     # <i>cd /usr/src/linux</i>
721     # <i>make menuconfig</i>
722     </pre>
723    
724     <p>
725     You will probably be familiar with using menuconfig from configuring 2.4
726     kernels. Fortunately, the front end has barely changed at all, but you will
727     observe much better organisation of kernel options, plus <e>many</e> new
728     options that weren't present in 2.4.
729     </p>
730    
731     <p>
732     Be sure to enable the following important kernel options:
733     </p>
734    
735     <pre caption="Required kernel options">
736     File systems ---&gt;
737     Pseudo Filesystems ---&gt;
738     [*] /proc file system support
739     [*] Virtual memory file system support (former shm fs)
740    
741     <comment>(the following are required for udev):</comment>
742     General setup ---&gt;
743     [*] Support for hot-pluggable devices
744    
745     Device Drivers ---&gt;
746     Block devices ---&gt;
747     &lt;*&gt; RAM disk support
748    
749     <comment>(the following are required for ALSA):</comment>
750     Device Drivers ---&gt;
751     Sound ---&gt;
752     &lt;*&gt; Sound card support
753     Advanced Linux Sound Architecture ---&gt;
754     &lt;M&gt; Advanced Linux Sound Architecture
755     &lt;M&gt; Sequencer support
756     &lt;M&gt; OSS Mixer API
757     [*] OSS Sequencer API
758     <comment> (and dont forget to select your soundcard from the submenus!)</comment>
759 swift 1.9
760     <comment>(the following are required if you use LVM for disk management):</comment>
761     Device Drivers ---&gt;
762     Multi-device support (RAID and LVM) ---&gt;
763     [*] Multiple devices driver support (RAID and LVM)
764     &lt;*&gt; Device mapper support
765 neysx 1.1 </pre>
766    
767     <warn>
768     Previously you may have included support for the <path>/dev</path> file system
769     (now marked OBSOLETE). Do not enable devfs support. We have installed udev,
770     which we will be using instead of devfs from now on.
771     </warn>
772    
773     <p>
774     Also, remember to enable support for the filesystems that you use, and the
775     hardware present in your system. Be sure to enable support for the IDE
776     controller on your motherboard if you wish to benefit from fast DMA disk
777     access. Refer to the <uri
778     link="/doc/en/handbook/handbook-x86.xml?part=1&amp;chap=7">Configuring the
779     Kernel</uri> section of the <uri link="/doc/en/handbook/index.xml">Gentoo
780     Handbook</uri> for additional guidance here.
781     </p>
782    
783     </body>
784     </section>
785     <section>
786     <title>Building the kernel</title>
787     <body>
788    
789     <p>
790     Now that we have configured the kernel, we can start the compilation process:
791     </p>
792    
793     <pre caption="Compiling the kernel source">
794     # <i>make &amp;&amp; make modules_install</i>
795     </pre>
796    
797     <note>
798     You may recall having to run <c>make dep</c> with Linux 2.4 sources. This is no
799     longer required.
800     </note>
801    
802     <p>
803     Wait for the kernel compilation to complete (and observe the much more readable
804     compilation output).
805     </p>
806    
807     </body>
808     </section>
809     <section>
810     <title>Installing the kernel</title>
811     <body>
812    
813     <p>
814     The next step is mounting your <path>/boot</path> partition and copying the
815     kernel image over. You must then update your bootloader config manually.
816     </p>
817    
818     <pre caption="Installing the kernel">
819     # <i>mount /boot</i>
820     # <i>cp arch/i386/boot/bzImage /boot/bzImage-2.6.9-gentoo-r2</i>
821     # <i>cp System.map /boot/System.map-2.6.9-gentoo-r2</i>
822     </pre>
823    
824     <p>
825     Note that the above instructions are examples only, you should follow your
826     usual procedure of updating kernels by following the instructions in the <uri
827     link="/doc/en/handbook/index.xml">Gentoo Handbook</uri> (see the <uri
828     link="/doc/en/handbook/handbook-x86.xml?part=1&amp;chap=7">Configuring the
829     Kernel</uri> chapter).
830     </p>
831    
832     <p>
833     When updating your bootloader config, do not remove the old entry pointing at
834     your 2.4 kernel. This way, you will easily be able to switch between the two if
835     something is not working.
836     </p>
837    
838     <p>
839     Now continue onto the <uri link="#modules">Module Configuration</uri> section.
840     </p>
841    
842     </body>
843     </section>
844     </chapter>
845    
846     <chapter id="genkernel">
847     <title>Alternative: Using genkernel</title>
848     <section>
849     <body>
850    
851     <p>
852     If you prefer to use genkernel instead of manually configuring your kernel, you
853     will be happy to hear that using genkernel to produce 2.6 kernels is very
854     similar to the process you performed when producing your previous 2.4 kernel.
855     </p>
856    
857     <p>
858     You should invoke genkernel as shown below:
859     </p>
860    
861     <pre caption="Invoking genkernel with some common arguments">
862     # <i>genkernel --udev --menuconfig --bootloader=grub all</i>
863     </pre>
864    
865     <p>
866     In the above example, we also take advantage of genkernel features to open
867     menuconfig to allow you to customise the kernel configuration (if you wish),
868     and to update the grub bootloader configuration after compilation.
869     </p>
870    
871     <p>
872     You should choose genkernel arguments that suit you, but do not forget to
873     include the <c>--udev</c> argument! Refer to the <uri
874     link="/doc/en/genkernel.xml">Gentoo Linux Genkernel Guide</uri> and the <uri
875     link="/doc/en/handbook/handbook-x86.xml?part=1&amp;chap=7">Configuring the
876     Kernel</uri> chapter of the <uri link="/doc/en/handbook/index.xml">Gentoo
877     Handbook</uri> for additional information.
878     </p>
879    
880 swift 1.7 <p>
881     If you choose to update your bootloader config yourself, then you must
882     remember to include the <c>udev</c> kernel parameter. A sample <e>grub</e>
883     config section is shown below, but remember to adjust the <e>real_root</e>
884     parameter for your system.
885     </p>
886    
887     <pre caption="Sample GRUB config for genkernel + udev">
888     title=Gentoo Linux (2.6 kernel)
889     root (hd0,0)
890     kernel /kernel-2.6.9-gentoo-r2 <i>udev</i> root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/hda3
891     initrd /initrd-2.6.9-gentoo-r2
892     </pre>
893    
894 neysx 1.1 </body>
895     </section>
896     </chapter>
897    
898     <chapter id="modules">
899     <title>Module Configuration</title>
900    
901     <section>
902     <title>Installing external modules</title>
903     <body>
904    
905     <p>
906     Many users will additionally rely on kernel modules that are built outside of
907     the kernel tree. Common examples are the binary ATI and Nvidia graphics
908     drivers. You now need to install those modules, which will compile against the
909     2.6 sources found at <path>/usr/src/linux</path>. This is the usual case of
910     <c>emerge packagename</c> for all the external modules you are used to using
911     with 2.4.
912     </p>
913    
914     <p>
915     Refer again to the <uri
916     link="/doc/en/handbook/handbook-x86.xml?part=1&amp;chap=7">Configuring the
917     Kernel</uri> chapter of the <uri link="/doc/en/handbook/index.xml">Gentoo
918     Handbook</uri> for more info.
919     </p>
920    
921     </body>
922     </section>
923     <section>
924     <title>Autoloading modules</title>
925     <body>
926    
927     <p>
928     You may have decided to compile some kernel components as modules (as opposed
929     to compiled directly into the kernel) and would like to have them autoloaded on
930     bootup like you did with 2.4. Also, if you installed any external modules from
931     the portage tree (as described above) you will probably want to autoload them
932     too.
933     </p>
934    
935     <p>
936     You can achieve this similarly as to how you did with 2.4. Simply open up the
937     file <path>/etc/modules.autoload.d/kernel-2.6</path> in a text editor and list
938     the names of the modules you would like autoloaded.
939     </p>
940    
941     <pre caption="Opening the module autoload list in nano">
942     # <i>nano -w /etc/modules.autoload.d/kernel-2.6</i>
943     </pre>
944    
945     <pre caption="Sample autoload list to load the 3c59x and nvidia modules">
946     # /etc/modules.autoload.d/kernel-2.6: kernel modules to load when system boots.
947     #
948     # Note that this file is for 2.6 kernels.
949     #
950     # Add the names of modules that you'd like to load when the system
951     # starts into this file, one per line. Comments begin with # and
952     # are ignored. Read man modules.autoload for additional details.
953    
954     3c59x
955     nvidia
956     </pre>
957    
958     </body>
959     </section>
960     </chapter>
961    
962     <chapter>
963 swift 1.9 <title>LVM to LVM2 migration</title>
964     <section>
965     <title>Upgrading to LVM2 tools</title>
966     <body>
967    
968     <note>
969     If you do not use LVM to manage your disk storage, you can safely skip
970     this chapter and skip onto the next.
971     </note>
972    
973     <p>
974     Fortunately, upgrading from the LVM1 user tools to the LVM2 versions is very
975     simple:
976     </p>
977    
978     <pre caption="Upgrading user-tools from LVM1 to LVM2">
979     # <i>emerge unmerge lvm-user</i>
980     # <i>emerge lvm2</i>
981     </pre>
982    
983     <note>
984     The LVM2 tools are fully backwards-compatible with LVM1. Your disk data will
985     not be touched. You are not breaking any backwards-compatibility by doing
986     this, you will continue to be able to boot 2.4 as usual.
987     </note>
988    
989     </body>
990     </section>
991     </chapter>
992    
993     <chapter>
994 neysx 1.1 <title>Booting into Linux 2.6</title>
995     <section>
996     <body>
997    
998     <p>
999     It's now time to boot into Linux 2.6. Close all applications and reboot:
1000     </p>
1001    
1002     <pre caption="Rebooting">
1003     # <i>umount /boot</i>
1004     # <i>reboot</i>
1005     </pre>
1006    
1007     <p>
1008     When you reboot, if you followed this document correctly so far, you will have
1009     the option of either loading Linux 2.4 or Linux 2.6 from your bootloader.
1010     Choose Linux 2.6.
1011     </p>
1012    
1013     <p>
1014     Once the system has booted, check that things are working. If you made a
1015     mistake in the kernel configuration, don't worry, you can skip back to the
1016     <uri link="#conf">Configuring, building, and installing the kernel</uri>
1017     section, make your change, recompile and install new kernel image, reboot, and
1018     try again!
1019     </p>
1020    
1021     </body>
1022     </section>
1023     <section>
1024 swift 1.8 <title>Configuring and unmuting ALSA</title>
1025 neysx 1.1 <body>
1026    
1027     <p>
1028 swift 1.8 We will now complete the ALSA configuration and unmute the audio channels. The
1029     ALSA packages provide a useful utility to make this process relatively simple:
1030     </p>
1031    
1032     <pre caption="Invoking the automatic ALSA configuration utility">
1033     # <i>alsaconf</i>
1034     </pre>
1035    
1036     <p>
1037     The process is straightforward: allow the <e>/etc/modules.d/alsa</e> file to
1038     be automatically updated, and then allow ALSA to be reloaded. alsaconf will
1039     then terminate, however you will need to run it multiple times if you have
1040     multiple sound devices installed in your system.
1041     </p>
1042    
1043     <p>
1044     You should now add <c>alsasound</c> to your boot runlevel, so that volumes
1045     will be saved on shutdown and restored on bootup:
1046 neysx 1.1 </p>
1047    
1048 swift 1.8 <pre caption="Adding alsasound to the boot runlevel">
1049     # <i>rc-update add alsasound boot</i>
1050     </pre>
1051    
1052 neysx 1.1 <note>
1053 swift 1.8 The <c>alsaconf</c> utility chooses initial volume levels for your sound
1054     devices. If these are inappropriate, you can modify them at any time with the
1055     <c>alsamixer</c> utility.
1056 neysx 1.1 </note>
1057    
1058     </body>
1059     </section>
1060 swift 1.7 <section>
1061     <title>Any immediate problems?</title>
1062     <body>
1063    
1064     <p>
1065     At this stage you should refer back to the <uri link="#pitfalls">Known
1066     pitfalls with Linux 2.6 migration</uri> section which may be helpful with any
1067     issues you encounter immediately.
1068     </p>
1069    
1070     </body>
1071     </section>
1072 neysx 1.1 </chapter>
1073    
1074     <chapter>
1075     <title>Header files and NPTL</title>
1076     <section>
1077     <body>
1078    
1079     <p>
1080     By now you are running Linux 2.6 and hopefully have all issues ironed out. You
1081     should now update your Linux kernel header files and re-merge glibc so that
1082     userspace applications can take advantage of new Linux 2.6 features.
1083     </p>
1084    
1085     <pre caption="Updating to linux26-headers">
1086 swift 1.2 # <i>emerge unmerge linux-headers</i>
1087 neysx 1.1 # <i>emerge linux26-headers</i>
1088     </pre>
1089    
1090     <p>
1091     After updating your headers package, you should generally re-merge glibc.
1092     There is a new feature here that you may be interested in - NPTL. NPTL is a new
1093     threading model present in Linux 2.6, which features much quicker thread create
1094     and destroy times. This won't make much of a difference to most systems, but
1095     you may wish to enable it during this migration process! To enable NPTL, edit
1096     <path>/etc/make.conf</path>, adding <e>nptl</e> to your USE variable.
1097     </p>
1098    
1099     <warn>
1100     With the current stable glibc ebuilds, you will be unable to boot a 2.4 kernel
1101     after compiling glibc with USE="nptl". Be warned, be careful!
1102     </warn>
1103    
1104     <p>
1105     Now re-merge glibc (you should do this even if you did not choose to enable
1106     NPTL).
1107     </p>
1108    
1109     <pre caption="Reinstalling glibc against the new kernel headers">
1110     # <i>emerge -a glibc</i>
1111     </pre>
1112    
1113     <p>
1114     If you enabled NPTL, existing binaries will not use it until they are
1115     recompiled. However, any binaries compiled from this point onwards <e>will</e>
1116     use NPTL. You may wish to recompile all binaries now, e.g.:
1117     </p>
1118    
1119     <pre caption="Recompiling all packages on the system">
1120     # <i>emerge -e world</i>
1121     </pre>
1122    
1123     <p>
1124     Alternatively, you can just let your system "naturally" convert itself to NPTL
1125     as you update to newer versions of packages when they are released.
1126     </p>
1127    
1128     </body>
1129     </section>
1130     </chapter>
1131    
1132     <chapter>
1133     <title>Closing remarks</title>
1134     <section>
1135     <title>Problems?</title>
1136     <body>
1137    
1138     <p>
1139     With the incredible amount of work that went into Linux 2.6, it is sometimes
1140     inevitable that things which used to work fine, no longer function as expected.
1141     </p>
1142    
1143     <p>
1144     If you have any problems with your 2.6 kernel, and you can confirm that this
1145     problem does not exist with Linux 2.4, then please open a bug with us on our
1146     <uri link="http://bugs.gentoo.org">Bugzilla</uri>. We will investigate the
1147     issue, and if we find that it is a problem in the mainline kernel, we may then
1148     ask you to file a report at the central kernel bugzilla.
1149     </p>
1150    
1151     </body>
1152     </section>
1153     <section>
1154     <title>Conclusion</title>
1155     <body>
1156    
1157     <p>
1158     Hopefully you have just completed a smooth migration and you are enjoying the
1159     benefits which Linux 2.6 brings over 2.4. As I mentioned at the start, we are
1160     looking for feedback on this document - even if your migration went perfectly
1161     smoothly. Please <mail link="dsd@gentoo.org">mail me</mail> your feedback so
1162     that we can get this document in perfect shape for when 2005.0 comes around.
1163     Thanks!
1164     </p>
1165    
1166     </body>
1167     </section>
1168 swift 1.8 <section>
1169     <title>Removing Linux 2.4 from your system</title>
1170     <body>
1171    
1172     <p>
1173     After you have been running 2.6 for a while, you may decide that you no longer
1174     have any requirement to be able to use Linux 2.4. The steps you can take to
1175 swift 1.9 clean up your system are detailed below. <e>Only follow the procedure in this
1176     section if you are sure that you don't want/need to use 2.4 again!</e>
1177 swift 1.8 </p>
1178    
1179     <p>
1180     The 2.4 kernel source code can be removed, using the emerge utility as usual.
1181     For example, assuming you have 2.4 versions of vanilla-sources and
1182     gentoo-sources installed, you could use the following command to remove them
1183     while keeping the 2.6 versions intact:
1184     </p>
1185    
1186     <pre caption="Example: Removing Linux 2.4 sources">
1187     # <i>emerge unmerge =vanilla-sources-2.4.* =gentoo-sources-2.4.*</i>
1188     </pre>
1189    
1190     <p>
1191     Portage will not completely clean out your 2.4 kernel source installations,
1192     because some temporary files are created during compilation. It is safe to
1193     remove these remnants with the following command:
1194     </p>
1195    
1196     <pre caption="Removing remaining temporary files">
1197     # <i>rm -rf /usr/src/linux-2.4.*</i>
1198     </pre>
1199    
1200     <p>
1201     You can additionally remove modules and information files relating to your
1202     old 2.4 kernel installations, as these are no longer needed.
1203     </p>
1204    
1205     <pre caption="Removing previously-installed 2.4 modules">
1206     # <i>rm -rf /lib/modules/2.4.*</i>
1207     </pre>
1208    
1209     <p>
1210     The 2.4 kernel binaries you used to boot from can also be safely removed.
1211     You should mount your <c>/boot</c> partition, and remove those images. You
1212     should also update your bootloader configuration so that it no longer
1213     references these deleted kernel images.
1214     </p>
1215    
1216     <p>
1217     Some Linux 2.4 users will have previously installed the <c>alsa-drivers</c>
1218     package to benefit from the new audio capabilities included in Linux 2.6. If
1219     you were one of these users, and you followed the advice given earlier in this
1220     document about building ALSA with the 2.6 kernel sources (as opposed to using
1221     the <c>alsa-driver</c> package), then you can safely remove this to prevent
1222     future conflicts.
1223     </p>
1224    
1225     <p>
1226     Additionally, <c>lm-sensors</c> users will have previously used the <c>i2c</c>
1227     package to provide the hardware drivers. As already mentioned, I2C drivers are
1228     now included in the kernel, so this package can also be removed in order to
1229     prevent future conflicts.
1230     </p>
1231    
1232 swift 1.9 <p>
1233     The devfs management daemon, <c>devfsd</c>, can also safely be removed, now
1234     that we are using <c>udev</c> for device management.
1235     </p>
1236    
1237     <pre caption="Removing alsa-driver, i2c, and devfsd">
1238     # <i>emerge unmerge alsa-driver i2c devfsd</i>
1239     </pre>
1240    
1241     <p>
1242     If you are LVM2 user, you may wish to convert your data into the LVM2 data
1243     format in order to benefit from the advantages which LVM2 provides.
1244     However, this operation will prevent you from ever accessing your LVM data
1245     from a 2.4 kernel. If you want to continue with the conversion (this is totally
1246     optional!), then you should examine the <c>vgconvert</c> man page for
1247     instructions on how to carry this out. An example is shown below, where
1248     <c>main</c> is the volume group name.
1249     </p>
1250    
1251     <pre caption="Converting a LVM1 volume to LVM2 format">
1252     # <i>vgconvert -M2 main</i>
1253 swift 1.8 </pre>
1254    
1255     </body>
1256     </section>
1257 neysx 1.1 </chapter>
1258     </guide>

  ViewVC Help
Powered by ViewVC 1.1.20