Roads to Linux - 2.0.31カーネルへのバージョンアップ

目次ページへ 前のページへ 次のページへ


■カーネルのバージョンアップ

カーネルバージョン2.0.31が公開されました。2.0.9付近から、何故かバージョンアップを行うたびにSCSIカードで問題が起こるようになってしまいましたが、前回2.0.30にした際にその原因も掴めた気がするので、今回はまず素直にパッチを当ててバージョンアップを行い、もしもまた問題が発生したら前回と同じ指針で対処し、前回の推測が正しかったのかを確認する事にします。

patch-2.0.31.gzを入手し、/usr/srcディレクトリでパッチを当てます。

gzip -dc patch-2.0.31.gz | patch -p0

これで/usr/src/linuxにパッチが当たります。

次に/usr/src/linuxへ移動し、make configでカーネル設定を行います。前回makeからの変更はありません。新規に追加された項目はすべて(恐いので)デフォルトのままです。

cd linux
make config

設定変更後、makeを行います。

make dep ; make clean
make zlilo

■またも問題発生

ここでまたも問題が発生しました。今回は、パッチがうまく当たらなかったのか、makeファイルに問題があるのか、makeの過程で自動作成されるはずのファイルaic7xxx_seq.hがめちゃめちゃなため、SCSIドライバaic7xxx.cのコンパイルの段階でエラーが出てしまいます。

何かの間違いかも知れないので、make configからやり直してみましたが、状況は変わりませんでした。

/usr/src/linux/drivers/scsiのaic7xxx関連のファイルをいくつか覗いてみましたが、aic7xxx_asm.cは中身が空になっていたり、どうも全般的におかしいようです。そのため、もともと割とマイナーなカードである事もあり、このドライバの作者のパッチの作り方がおかしいため、前回や今回のような問題が起きるのであろうと想定し、このドライバを使っている限りはパッチによるバージョンアップは行うべきではないと判断しました。

仕方がないので、夜になるのを待って、カーネルバージョン2.0.31のフルセットソースを入手し、前回同様ゼロからコンパイルを行う事にしました。

■再度カーネルのバージョンアップ

無事、入手したフルセットのソースを入手したところで、今回も前回と同様、ゼロからのコンパイルを行う事にします。但し今回は、aic7xxx関連のmake/patchに問題があると想定したので、/lib/modulesの2.0.30用モジュールはそのまま残しておいてみます。これなら、万が一2.0.31のコンパイルに失敗した場合でも、2.0.0まで戻る事なく今まで通りの2.0.30で運用する事もできますし。

cd /usr/src/linux
rm -r *
rm .*
cd ..
tar zxvf linux-2.0.31.tar.gz
cd linux
make config

設定内容は以下の通り。IPマスカレード関係で2個所(ipautofwはなんとなく選択しておいたほうが幸せかもと思ったから、ICMPはせっかく通るようになったので)変更を加えています。また新規に追加された項目はすべてデフォルトのままです。

Code maturity level options

[y] Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL)

Loadable module support

[Y] Enable loadable module support (CONFIG_MODULES)
[N] Set version information on all symbols for modules (CONFIG_MODVERSIONS)
[y] Kernel daemon support (e.g. autoload of modules) (CONFIG_KERNELD)

General setup

[N] Kernel math emulation (CONFIG_MATH_EMULATION)
[Y] Networking support (CONFIG_NET)
[N] Limit memory to low 16MB (CONFIG_MAX_16M)
[n] PCI bios support (CONFIG_PCI)
[Y] System V IPC (CONFIG_SYSVIPC)
[Y] Kernel support for a.out binaries (CONFIG_BINFMT_AOUT)
[Y] Kernel support for ELF binaries (CONFIG_BINFMT_ELF)
[y] Kernel support for JAVA binaries (CONFIG_BINFMT_JAVA) (NEW)
[Y] Compile kernel as ELF - if your GCC is ELF-GCC (CONFIG_KERNEL_ELF)
[486] Processor type (386, 486, Pentium, PPro)

Floppy, IDE, and other block devices

[Y] Normal floppy disk support (CONFIG_BLK_DEV_FD)
[Y] Enhanced IDE/MFM/RLL disk/cdrom/tape support (CONFIG_BLK_DEV_IDE)
[y] Use old disk-only driver on primary interface (CONFIG_BLK_DEV_HD_IDE)
[n] Include IDE/ATAPI CDROM support (CONFIG_BLK_DEV_IDECD)
[N] Include IDE/ATAPI TAPE support (CONFIG_BLK_DEV_IDETAPE)
[N] Include IDE/ATAPI FLOPPY support (new) (CONFIG_BLK_DEV_IDETAPE)
[N] SCSI emulation support (CONFIG_BLK_DEV_IDESCSI)
[N] Support removable IDE interfaces (PCMCIA) (CONFIG_BLK_DEV_IDE_PCMCIA)
[n] CMD640 chipset bugfix/support (CONFIG_BLK_DEV_CMD640)
[N] Other IDE chipset support (CONFIG_IDE_CHIPSETS)
[N] Loopback device support (CONFIG_BLK_DEV_LOOP)
[N] Multiple devices driver support (CONFIG_BLK_DEV_MD)
[N] RAM disk support (CONFIG_BLK_DEV_RAM)
[N] XT harddisk support (CONFIG_BLK_DEV_XD)

Networking options

[y] Network firewalls (CONFIG_FIREWALL)
[N] Network aliasing (CONFIG_NET_ALIAS)
[Y] TCP/IP networking (CONFIG_INET)
[y] IP: forwarding/gatewaying (CONFIG_IP_FORWARD)
[N] IP: multicasting (CONFIG_IP_MULTICAST)
[N] IP: syn cookies (CONFIG_SYN_COOKIES)
[N] IP: rst cookies (CONFIG_RST_COOKIES) (NEW)
[y] IP: firewalling (CONFIG_IP_FIREWALL) (NEW)
[N] IP: firewall packet logging (CONFIG_IP_FIREWALL_VERBOSE) (NEW)
[y] IP: masquerading (CONFIG_IP_MASQUERADE) (NEW)
[y] IP: ipautofw masq support (CONFIG_IP_MASQUERADE_IPAUTOFW) (NEW)
[y] IP: ICMP masquerading (CONFIG_IP_MASQUERADE_ICMP) (NEW)
[N] IP: transparent proxy support (EXPERIMENTAL) (CONFIG_IP_TRANSPARENT_PROXY) (NEW)
[y] IP: always defragment (CONFIG_IP_ALWAYS_DEFRAG) (NEW)
[y] IP: accounting (CONFIG_IP_ACCT)
[N] IP: optimize as router not host (CONFIG_IP_ROUTER)
[N] IP: tunneling (CONFIG_NET_IPIP)
[N] IP: PC/TCP compatibility mode (CONFIG_INET_PCTCP)
[N] IP: Reverse ARP (CONFIG_INET_RARP)
[N] IP: Disable Path MTU Discovery (normally enabled) (CONFIG_NO_PATH_MTU_DISCOVERY)
[Y] IP: Drop source routed frames (CONFIG_IP_NOSR)
[Y] IP: Allow large windows (not recommended if <16Mb of memory) (CONFIG_SKB_LARGE)
[N] The IPX protocol (CONFIG_IPX)
[N] Appletalk DDP (CONFIG_ATALK)
[N] Amateur Radio AX.25 Level 2 (CONFIG_AX25)
[N] Bridging (EXPERIMENTAL) (CONFIG_BRIDGE) (NEW)
[N] Kernel/User network link driver (CONFIG_NETLINK)

SCSI support

[y] SCSI support (CONFIG_SCSI)
[y] SCSI disk support (CONFIG_BLK_DEV_SD) (NEW)
[N] SCSI tape support (CONFIG_CHR_DEV_ST) (NEW)
[y] SCSI CD-ROM support (CONFIG_BLK_DEV_SR) (NEW)
[N] SCSI generic support (CONFIG_CHR_DEV_SG) (NEW)
[N] Probe all LUNs on each SCSI device (CONFIG_SCSI_MULTI_LUN) (NEW)
[N] Verbose SCSI error reporting (kernel size +=12K) (CONFIG_SCSI_CONSTANTS) (NEW)
[N] 7000FASST SCSI support (CONFIG_SCSI_7000FASST) (NEW)
[N] Adaptec AHA152X/2825 support (CONFIG_SCSI_AHA152X) (NEW)
[N] Adaptec AHA1542 support (CONFIG_SCSI_AHA1542) (NEW)
[N] Adaptec AHA1740 support (CONFIG_SCSI_AHA1740) (NEW)
[y] Adaptec AIC7xxx support (CONFIG_SCSI_AIC7XXX) (NEW)
[N] Enable tagged command queueing (CONFIG_AIC7XXX_TAGGED_QUEUEING) (NEW)
[N] Override driver defaults for commands per LUN (CONFIG_OVERRIDE_CMDS) (NEW)
[N] Enable SCB paging (CONFIG_AIC7XXX_PAGE_ENABLE) (NEW)
[N] Collect statistics to report in /proc (CONFIG_AIC7XXX_PROC_STATS) (NEW)
[15] Delay in seconds after SCSI bus reset (CONFIG_AIC7XXX_RESET_DELAY) (NEW)
[N] AdvanSys SCSI support (CONFIG_SCSI_ADVANSYS) (NEW)
[N] Always IN2000 SCSI support (CONFIG_SCSI_IN2000) (NEW)
[N] AM53/79C974 PCI SCSI support (CONFIG_SCSI_AM53C974) (NEW)
[N] BusLogic SCSI support (CONFIG_SCSI_BUSLOGIC) (NEW)
[N] DTC3180/3280 SCSI support (CONFIG_SCSI_DTC3280) (NEW)
[N] EATA-DMA (DPT, NEC, AT&T, SNI, AST, Olivetti, Alphatronix) support (CONFIG_SCSI_EATA_DMA) (NEW)
[N] EATA-PIO (old DPT PM2001, PM2012A) support (CONFIG_SCSI_EATA_PIO) (NEW)
[N] EATA ISA/EISA/PCI (DPT and generic EATA/DMA-compliant boards) support (CONFIG_SCSI_EATA) (NEW)
[N] Future Domain 16xx SCSI support (CONFIG_SCSI_FUTURE_DOMAIN) (NEW)
[N] Generic NCR5380/53c400 SCSI support (CONFIG_SCSI_GENERIC_NCR5380) (NEW)
[N] NCR53c406a SCSI support (CONFIG_SCSI_NCR53C406A) (NEW)
[N] IOMEGA Parallel Port ZIP drive SCSI support (CONFIG_SCSI_PPA) (NEW)
[N] PAS16 SCSI support (CONFIG_SCSI_PAS16) (NEW)
[N] Qlogic FAS SCSI support (CONFIG_SCSI_QLOGIC_FAS) (NEW)
[N] Seagate ST-02 and Future Domain TMC-8xx SCSI support (CONFIG_SCSI_SEAGATE) (NEW)
[N] Trantor T128/T128F/T228 SCSI support (CONFIG_SCSI_T128) (NEW)
[N] UltraStor 14F/34F support (CONFIG_SCSI_U14_34F) (NEW)
[N] UltraStor SCSI support (CONFIG_SCSI_ULTRASTOR) (NEW)
[N] GDT SCSI Disk Array Controller support (CONFIG_SCSI_GDTH) (NEW)

Network device support

[Y] Network device support (CONFIG_NETDEVICES)
[y] Dummy net driver support (CONFIG_DUMMY)
[N] EQL (serial line load balancing) support (CONFIG_EQUALIZER)
[N] Frame relay DLCI support (EXPERIMENTAL) (CONFIG_DLCI) (NEW)
[N] PLIP (parallel port) support (CONFIG_PLIP)
[y] PPP (point-to-point) support (CONFIG_PPP)
[N] SLIP (serial line) support (CONFIG_SLIP)
[N] Radio network interfaces (CONFIG_NET_RADIO)
[Y] Ethernet (10 or 100Mbit) (CONFIG_NET_ETHERNET)
[n] 3COM cards (CONFIG_NET_VENDOR_3COM)
[N] AMD LANCE and PCnet (AT1500 and NE2100) support (CONFIG_LANCE)
[N] Western Digital/SMC cards (CONFIG_NET_VENDOR_SMC)
[y] Other ISA cards (CONFIG_NET_ISA)
[N] AT1700 support (EXPERIMENTAL) (CONFIG_AT1700) (NEW)
[N] Cabletron E21xx support (CONFIG_E2100) (NEW)
[N] DEPCA, DE10x, DE200, DE201, DE202, DE422 support (CONFIG_DEPCA) (NEW)
[N] EtherWORKS 3 (DE203, DE204, DE205) support (CONFIG_EWRK3) (NEW)
[N] EtherExpress 16 support (CONFIG_EEXPRESS) (NEW)
[N] EtherExpressPro support (CONFIG_EEXPRESS_PRO) (NEW)
[N] FMV-181/182/183/184 support (CONFIG_FMV18X) (NEW)
[N] HP PCLAN+ (27247B and 27252A) support (CONFIG_HPLAN_PLUS) (NEW)
[N] HP PCLAN (27245 and other 27xxx series) support (CONFIG_HPLAN) (NEW)
[N] HP 10/100VG PCLAN (ISA, EISA, PCI) support (CONFIG_HP100) (NEW)
[N] ICL EtherTeam 16i/32 support (CONFIG_ETH16I) (NEW)
[y] NE2000/NE1000 support (CONFIG_NE2000) (NEW)
[N] NI5210 support (CONFIG_NI52) (NEW)
[N] NI6510 support (CONFIG_NI65) (NEW)
[N] SEEQ8005 support (EXPERIMENTAL) (CONFIG_SEEQ8005) (NEW)
[N] SK_G16 support (CONFIG_SK_G16) (NEW)
[N] EISA, VLB, PCI and on board controllers (CONFIG_NET_EISA)
[N] Pocket and portable adaptors (CONFIG_NET_POCKET)
[N] Token Ring driver support (CONFIG_TR)
[N] FDDI driver support (CONFIG_FDDI)
[N] ARCnet support (CONFIG_ARCNET)

ISDN subsystem

[N] ISDN support (CONFIG_ISDN)

CD-ROM drivers (not for SCSI or IDE/ATAPI drives)

[N] Support non-SCSI/IDE/ATAPI CDROM drives (CONFIG_CD_NO_IDESCSI)

Filesystems

[N] Quota support (CONFIG_QUOTA)
[Y] Minix fs support (CONFIG_MINIX_FS)
[N] Extended fs support (CONFIG_EXT_FS)
[Y] Second extended fs support (CONFIG_EXT2_FS)
[N] xiafs filesystem support (CONFIG_XIA_FS)
[Y] DOS FAT fs support (CONFIG_FAT_FS)
[Y] MSDOS fs support (CONFIG_MSDOS_FS)
[y] VFAT (Windows-95) fs support (CONFIG_VFAT_FS)
[N] umsdos: Unix like fs on top of std MSDOS FAT fs (CONFIG_UMSDOS_FS)
[Y] /proc filesystem support (CONFIG_PROC_FS)
[Y] NFS filesystem support (CONFIG_NFS_FS)
[N] Root file system on NFS (CONFIG_ROOT_NFS)
[N] SMB filesystem support (to mount WfW shares etc..) (CONFIG_SMB_FS)
[Y] ISO9660 cdrom filesystem support (CONFIG_ISO9660_FS)
[N] OS/2 HPFS filesystem support (read only) (CONFIG_HPFS_FS)
[N] System V and Coherent filesystem support (CONFIG_SYSV_FS)
[N] Kernel automounter support (experimental) (CONFIG_AUTOFS_FS) (NEW)
[N] Amiga FFS filesystem support (EXPERIMENTAL) (CONFIG_AFFS_FS) (NEW)
[N] UFS filesystem support (read only) (CONFIG_UFS_FS)

Character devices

[Y] Standard/generic serial support (CONFIG_SERIAL)
[N] Digiboard PC/Xx Support (CONFIG_DIGI)
[N] Cyclades async mux support (CONFIG_CYCLADES)
[N] Stallion multiport serial support (CONFIG_STALDRV)
[N] SDL RISCom/8 card support (CONFIG_RISCOM8)
[N] Parallel printer support (CONFIG_PRINTER)
[N] Specialix IO8+ card support (CONFIG_SPECIALIX)
[y] Mouse Support (not serial mice) (CONFIG_MOUSE)
[N] ATIXL busmouse support (CONFIG_ATIXL_BUSMOUSE) (NEW)
[N] Logitech busmouse support (CONFIG_BUSMOUSE) (NEW)
[N] Microsoft busmouse support (CONFIG_MS_BUSMOUSE) (NEW)
[y] PS/2 mouse (aka "auxiliary device") support (CONFIG_PSMOUSE) (NEW)
[N] C&T 82C710 mouse port support (as on TI Travelmate) (CONFIG_82C710_MOUSE) (NEW)
[N] Support for user misc device modules (CONFIG_UMISC)
[N] QIC-02 tape support (CONFIG_QIC02_TAPE)
[N] Ftape (QIC-80/Travan) support (CONFIG_FTAPE)
[N] Advanced Power Management BIOS support (CONFIG_APM)
[N] Watchdog Timer Support (CONFIG_WATCHDOG)
[N] Enhanced Real Time Clock Support (CONFIG_RTC)

Sound

[N] Sound card support (CONFIG_SOUND)

Kernel hacking

[N] Kernel profiling support (CONFIG_PROFILE)

設定が終わったらmake。

make dep ; make clean
make zlilo
make modules ; make modules_install

問題のaic7xxx.cのコンパイルで、変数未使用の警告が出ましたが(パッチでコンパイルした時も出ていた)、きっと大丈夫でしょう。いや、大丈夫だと信じたい。make/patchで問題が出るくらいだから、そういう点には無頓着な人が書いたんだ、きっと。

再起動してみます。どうやら問題なく起動できました。まずは一安心です。

今回も、立ち上がったカーネル/vmlinuzを/vmlinuz.2.0.31にコピーし、/etc/lilo.confに2.0.31用エントリを追加してliloを実行しておきます。

結局、問題はaic7xxx.cである事がほぼはっきりしたと思います。今後のカーネルバージョンアップ時にも、パッチを試してうまくいかなければフルセットから構築すれば問題は起きないでしょう。

そうそう、次回コンパイル時には、問題を絞り込むためにモジュールにしていなかった各種機能もモジュールにしてしまうのを忘れないようにしなければ。


目次ページへ 前のページへ 次のページへ