/[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.34 - (show annotations) (download) (as text)
Mon Dec 9 13:40:30 2013 UTC (9 months, 1 week ago) by swift
Branch: MAIN
CVS Tags: HEAD
Changes since 1.33: +2 -2 lines
File MIME type: application/xml
Moved to https://wiki.gentoo.org/wiki/Kernel/Migrate_2.4_to_2.6

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

  ViewVC Help
Powered by ViewVC 1.1.20