静态编译碰到这个问题,安装 glibc-static 可以解决。
Month: September 2011
GoDaddy 不能用支付宝支付的解决方法
GoDaddy 付款时,只有国家选中中国才会有支付宝支付的选项哦。这个问题困扰了一个早上。
单独编译 kernel 中某些 ko 的方法
更改 Linux kernel 驱动每次重编 kernel 引导非常费力。为了便于调试,可以通过已经有的 Makefile 使用 gcc 来对特定 module 进行编译。这样只需要将 module 以模块方式加载。可以在 linux 环境下进行简单的调试。
命令:
make -C $src_path M=$(pwd) modules
例如:
make -C /home/edwin/rpmbuild/BUILD/kernel-2.6.40.fc15/ M=$(pwd) modules
[root@localhost ata]# ls
acard-ahci.c libahci.mod.c pata_artop.c pata_it821x.c pata_piccolo.c sata_inic162x.c
ahci.c libahci.mod.o pata_at32.c pata_ixp4xx_cf.c pata_platform.c sata_mv.c
ahci.h libahci.o pata_at91.c pata_jmicron.c pata_pxa.c sata_mv.ko
ahci.ko libata-acpi.c pata_atiixp.c pata_legacy.c pata_qdi.c sata_mv.mod.c
ahci.mod.c libata-core.c pata_atp867x.c pata_macio.c pata_radisys.c sata_mv.mod.o
ahci.mod.o libata-eh.c pata_bf54x.c pata_marvell.c pata_rb532_cf.c sata_mv.o
ahci.o libata.h pata_cmd640.c pata_mpc52xx.c pata_rdc.c sata_nv.c
ahci_platform.c libata-pmp.c pata_cmd64x.c pata_mpiix.c pata_rz1000.c sata_promise.c
ahci_platform.ko libata-pmp.c.mod pata_cs5520.c pata_netcell.c pata_samsung_cf.c sata_promise.h
ahci_platform.mod.c libata-scsi.c pata_cs5530.c pata_ninja32.c pata_sc1200.c sata_qstor.c
ahci_platform.mod.o libata-sff.c pata_cs5535.c pata_ns87410.c pata_scc.c sata_sil24.c
ahci_platform.o libata-transport.c pata_cs5536.c pata_ns87415.c pata_sch.c sata_sil.c
ata_generic.c libata-transport.h pata_cypress.c pata_octeon_cf.c pata_serverworks.c sata_sis.c
ata_generic.ko Makefile pata_efar.c pata_of_platform.c pata_sil680.c sata_svw.c
ata_generic.mod.c modules.builtin pata_hpt366.c pata_oldpiix.c pata_sis.c sata_sx4.c
ata_generic.mod.o modules.order pata_hpt37x.c pata_opti.c pata_sl82c105.c sata_uli.c
ata_generic.o Module.symvers pata_hpt3x2n.c pata_optidma.c pata_triflex.c sata_via.c
ata_piix.c pata_acpi.c pata_hpt3x3.c pata_palmld.c pata_via.c sata_vsc.c
Kconfig pata_ali.c pata_icside.c pata_pcmcia.c pdc_adma.c sis.h
libahci.c pata_amd.c pata_isapnp.c pata_pdc2027x.c sata_dwc_460ex.c
libahci.ko pata_arasan_cf.c pata_it8213.c pata_pdc202xx_old.c sata_fsl.c
[root@localhost ata]# rm *.ko *.o -f
[root@localhost ata]# ls
acard-ahci.c libata-sff.c pata_cs5520.c pata_mpc52xx.c pata_radisys.c sata_mv.mod.c
ahci.c libata-transport.c pata_cs5530.c pata_mpiix.c pata_rb532_cf.c sata_nv.c
ahci.h libata-transport.h pata_cs5535.c pata_netcell.c pata_rdc.c sata_promise.c
ahci.mod.c Makefile pata_cs5536.c pata_ninja32.c pata_rz1000.c sata_promise.h
ahci_platform.c modules.builtin pata_cypress.c pata_ns87410.c pata_samsung_cf.c sata_qstor.c
ahci_platform.mod.c modules.order pata_efar.c pata_ns87415.c pata_sc1200.c sata_sil24.c
ata_generic.c Module.symvers pata_hpt366.c pata_octeon_cf.c pata_scc.c sata_sil.c
ata_generic.mod.c pata_acpi.c pata_hpt37x.c pata_of_platform.c pata_sch.c sata_sis.c
ata_piix.c pata_ali.c pata_hpt3x2n.c pata_oldpiix.c pata_serverworks.c sata_svw.c
Kconfig pata_amd.c pata_hpt3x3.c pata_opti.c pata_sil680.c sata_sx4.c
libahci.c pata_arasan_cf.c pata_icside.c pata_optidma.c pata_sis.c sata_uli.c
libahci.mod.c pata_artop.c pata_isapnp.c pata_palmld.c pata_sl82c105.c sata_via.c
libata-acpi.c pata_at32.c pata_it8213.c pata_pcmcia.c pata_triflex.c sata_vsc.c
libata-core.c pata_at91.c pata_it821x.c pata_pdc2027x.c pata_via.c sis.h
libata-eh.c pata_atiixp.c pata_ixp4xx_cf.c pata_pdc202xx_old.c pdc_adma.c
libata.h pata_atp867x.c pata_jmicron.c pata_piccolo.c sata_dwc_460ex.c
libata-pmp.c pata_bf54x.c pata_legacy.c pata_platform.c sata_fsl.c
libata-pmp.c.mod pata_cmd640.c pata_macio.c pata_pxa.c sata_inic162x.c
libata-scsi.c pata_cmd64x.c pata_marvell.c pata_qdi.c sata_mv.c
[root@localhost ata]# make -C /home/edwin/rpmbuild/BUILD/kernel-2.6.40.fc15/ M=$(pwd) modules
make: Entering directory `/home/edwin/rpmbuild/BUILD/kernel-2.6.40.fc15'
CC [M] /home/edwin/rpmbuild/BUILD/kernel-2.6.40.fc15/drivers/ata/ahci.o
/home/edwin/rpmbuild/BUILD/kernel-2.6.40.fc15/drivers/ata/ahci.c: In function ‘ahci_init_one’:
/home/edwin/rpmbuild/BUILD/kernel-2.6.40.fc15/drivers/ata/ahci.c:1226:67: warning: initialization from incompatible pointer type [enabled by default]
CC [M] /home/edwin/rpmbuild/BUILD/kernel-2.6.40.fc15/drivers/ata/libahci.o
CC [M] /home/edwin/rpmbuild/BUILD/kernel-2.6.40.fc15/drivers/ata/ahci_platform.o
CC [M] /home/edwin/rpmbuild/BUILD/kernel-2.6.40.fc15/drivers/ata/sata_mv.o
CC [M] /home/edwin/rpmbuild/BUILD/kernel-2.6.40.fc15/drivers/ata/ata_generic.o
Building modules, stage 2.
MODPOST 5 modules
CC /home/edwin/rpmbuild/BUILD/kernel-2.6.40.fc15/drivers/ata/ahci.mod.o
LD [M] /home/edwin/rpmbuild/BUILD/kernel-2.6.40.fc15/drivers/ata/ahci.ko
CC /home/edwin/rpmbuild/BUILD/kernel-2.6.40.fc15/drivers/ata/ahci_platform.mod.o
LD [M] /home/edwin/rpmbuild/BUILD/kernel-2.6.40.fc15/drivers/ata/ahci_platform.ko
CC /home/edwin/rpmbuild/BUILD/kernel-2.6.40.fc15/drivers/ata/ata_generic.mod.o
LD [M] /home/edwin/rpmbuild/BUILD/kernel-2.6.40.fc15/drivers/ata/ata_generic.ko
CC /home/edwin/rpmbuild/BUILD/kernel-2.6.40.fc15/drivers/ata/libahci.mod.o
LD [M] /home/edwin/rpmbuild/BUILD/kernel-2.6.40.fc15/drivers/ata/libahci.ko
CC /home/edwin/rpmbuild/BUILD/kernel-2.6.40.fc15/drivers/ata/sata_mv.mod.o
LD [M] /home/edwin/rpmbuild/BUILD/kernel-2.6.40.fc15/drivers/ata/sata_mv.ko
make: Leaving directory `/home/edwin/rpmbuild/BUILD/kernel-2.6.40.fc15'
[root@localhost ata]# ls
acard-ahci.c libahci.mod.c pata_artop.c pata_it821x.c pata_piccolo.c sata_inic162x.c
ahci.c libahci.mod.o pata_at32.c pata_ixp4xx_cf.c pata_platform.c sata_mv.c
ahci.h libahci.o pata_at91.c pata_jmicron.c pata_pxa.c sata_mv.ko
ahci.ko libata-acpi.c pata_atiixp.c pata_legacy.c pata_qdi.c sata_mv.mod.c
ahci.mod.c libata-core.c pata_atp867x.c pata_macio.c pata_radisys.c sata_mv.mod.o
ahci.mod.o libata-eh.c pata_bf54x.c pata_marvell.c pata_rb532_cf.c sata_mv.o
ahci.o libata.h pata_cmd640.c pata_mpc52xx.c pata_rdc.c sata_nv.c
ahci_platform.c libata-pmp.c pata_cmd64x.c pata_mpiix.c pata_rz1000.c sata_promise.c
ahci_platform.ko libata-pmp.c.mod pata_cs5520.c pata_netcell.c pata_samsung_cf.c sata_promise.h
ahci_platform.mod.c libata-scsi.c pata_cs5530.c pata_ninja32.c pata_sc1200.c sata_qstor.c
ahci_platform.mod.o libata-sff.c pata_cs5535.c pata_ns87410.c pata_scc.c sata_sil24.c
ahci_platform.o libata-transport.c pata_cs5536.c pata_ns87415.c pata_sch.c sata_sil.c
ata_generic.c libata-transport.h pata_cypress.c pata_octeon_cf.c pata_serverworks.c sata_sis.c
ata_generic.ko Makefile pata_efar.c pata_of_platform.c pata_sil680.c sata_svw.c
ata_generic.mod.c modules.builtin pata_hpt366.c pata_oldpiix.c pata_sis.c sata_sx4.c
ata_generic.mod.o modules.order pata_hpt37x.c pata_opti.c pata_sl82c105.c sata_uli.c
ata_generic.o Module.symvers pata_hpt3x2n.c pata_optidma.c pata_triflex.c sata_via.c
ata_piix.c pata_acpi.c pata_hpt3x3.c pata_palmld.c pata_via.c sata_vsc.c
Kconfig pata_ali.c pata_icside.c pata_pcmcia.c pdc_adma.c sis.h
libahci.c pata_amd.c pata_isapnp.c pata_pdc2027x.c sata_dwc_460ex.c
libahci.ko pata_arasan_cf.c pata_it8213.c pata_pdc202xx_old.c sata_fsl.c
最近碰到个 PM 连接的硬盘在 Fedora 15 (FC15)中无法识别的问题,但是在 Fedora 13 中却是可以侦测到的。对比 fc13 使用的是 2.6.34,fc15 则是 2.6.40(3.0.4)。决定逐一将 kernel 降级来判断到底是从那一版的 kernel 开始出现这个问题的。那在使用 fc15 的 gcc 编译 2.6.36.2 以下 kernel 时,一直报错。
错误提示:
gcc: error: elf_x86_64: No such file or directory
解决方法:
这个问题是由于 gcc 4.6 不再支持 linker-style 架构。讲 arch/x86/vdso/Makefile 中,
将以 VDSO_LDFLAGS_vdso.lds 开头所在行的 "-m elf_x86_64" 替换为 "-m64"。 将以 VDSO_LDFLAGS_vdso32.lds 开头所在行的 "-m elf_x86" 替换为 "-m32"。
可以解决这个问题。
【转】Linux Kernel 内核编译安装
一、获取内核源码文件。
从http://www.kernel.org下载内核源码包(linux-2.6.26.tar.gz)。
# cp linux-2.6.26.tar.gz /usr/src
# tar -xvzf linux-2.6.26.tar.gz
# ln -s linux-2.6.26 linux-2.6
二、配置内核。
1. 进入内核文件所在目录。
# cd /usr/src/linux-2.6
2. 编辑 /usr/src/linux-2.6/Makefile 文件的EXTRAVERSION的值。
EXTRAVERSION = No_Power_Management_Support # 以此标识内核
3. 运行命令make mrproper,以确保源文件处于一致、干净的状态。这个命令会删除内核配置文件.config(如果有的话)。
4. 保存默认的配置文件(/usr/src/linux-2.6/arch/x86/i386_defconfig)到安全位置,比如软盘,以便必要时恢复默认配置。
5. 使用配置工具设置内核选项。
#make config(基于文本的最为传统的配置界面,由于有几百个问题要回答,一般使用其它的配置工具。)
#make menuconfig(基于文本选单的配置界面)
#make xconfig(基于图形窗口模式的配置界面)
#make oldconfig(使用已有的内核配置文件,仅提示一些新的特性。)
选择相应的配置时,有三种选择:
“Y”- 将该功能编译进内核
“N”- 不将该功能编译进内核
“M”- 将该功能编译成可以在需要时动态插入到内核中的模块。
参考:Linux 2.6.19.x 内核编译配置选项简介
设置完选项后,保存更改。上述配置工具会生成配置文件 /usr/src/linux-2.6.26/.config。
如果要使用现有的配置文件(比如默认的配置文件),首先将该配置文件拷贝为/usr/src/linux-2.6/.config,然后执行命令 make oldconfig。
三、编译内核。
1.make clean
清除前面过程中make后遗留下的文件。
2.make dep
读取配置过程生成的配置文件,来创建对应于配置的依赖关系树,从而决定哪些需要编译而那些不需要。2.6内核不需要执行此步骤。
3.make zImage
make bzImage
这两个命令会在/usr/src/linux-2.6下创建文件vmlinux,这是未压缩的内核。
make zImage 和 make bzImage 会各自在/usr/src/linux/arch/i386/boot/下创建文件zImage和bzImage,这是已经压缩的内核。zImage是用gzip压缩的,适合存储在软盘上的内核。bzImage是更大的超过软盘空间限制的压缩内核。
4.make modules 编译生成相应的模块。
5.make modules_install
一旦模块被编译,它们须被拷贝到相应的子目录/lib/modules下,make modules_install 命令执行这一任务。
模块在系统中的标准目录位于/lib/modules/x.y.z,后面的x.y.z是版本号,为安全起见,在运行make modules_install之前最好对/lib/modules进行备份。
6.make install 通过执行以下步骤完成安装。
(1)把压缩内核映象拷贝到/boot目录下, 并创建相应的System.map符号链接;
(2)修改bootloader的配置文件;
(3)调用mkinitrd程序创建内核的initrd映象. 对于GRUB而言, 将在/boot/grub/grub.conf配置文件增加如下类似的配置行:
title Red Hat Linux (2.***)
root(hd0, 1)
kernel /boot/vmlinuz-2.*** ro root=LABEL=/
initrd /boot/initrd-2.***.img
Linux 下使用 Crontab 命令实现定时操作重启(计划任务)
crond 服务是一个定时执行的服务,可以通过 crontab 命令添加或者编辑需要定时执行的任务:
- crontab -u //设定某个用户的 crond 服务,一般 root 用户在执行这个命令的时候需要此参数
- crontab -l //列出某个用户的 crond 服务的详细内容
- crontab -r //删除没个用户的 crond 服务
- crontab -e //编辑某个用户的 crond 服务
编辑中的内容格式:
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND
比如:
- #每天早上6点10分
10 6 * * * date
- #每两个小时
0 */2 * * * date (solaris 5.8似乎不支持此种写法)
- #晚上11点到早上8点之间每两个小时,早上8点
0 23-7/2,8 * * * date
- #每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * mon-wed date
- #1月份日早上4点
0 4 1 jan * date