A. Ubuntu虚拟机里怎么编译内核
步骤/方法
一、下载源代码和编译软件的准备
注意,点击2.6.25内核的F版,即完整版。
如果你懒得去网站点联接,运行下列命令:
代码:$cd ~$ wget
安装有关编译程序。安装make ,gcc, make-kpkg,运行menuconfig等等和编译内核相关的工具。安装不了,请检查/etc/apt/sources.list 文件。有关命令:代码:$sudo apt-get install build-essential kernel-package libncurses5-dev
二、解压源代码注意,网上很多教程上说应该解压到 /usr/src,纯属以讹传讹,linux掌门人linus说解压到任何目录上都可以。当然,linus的说法是正确的。我放在自己的主目录下的src目录。如果你下载源代码是放到自己的主目录下或者运行上面的wget下载的,那么运行下列命令:代码:$ cd ~$ mkdir src && tar jfx linux-2.6.25.10.tar.bz2 -C src/现在,源代码就在 ~/src/linux-2.6.25.10进入源代码的目录,准备下一步的工作。后面都在这个目录里面进行。代码:$ cd ~/src/linux-2.6.25.10
三、开始编译前的准备工作。首先,清理以前编译时留下的临时文件。如果是刚刚解开的包,不需要执行这步。如果是第二次或者是第n次编译,那么一定要执行。相关命令如下:代码:$ sudo make mrproper网上很多教程上说把现在使用的内核的config拷贝过来参考,据实验,是不需要的,ubuntu还有debian会自动做这步。不过这条命令倒是可以学习一下。当然你可以将以前的配置拷贝过来。命令:代码:cp /boot/config-`uname -r` ./.config
四、开始配置内核选项。相关命令:代码:$sudo make menuconfig配置用到的键只有几个,esc退出菜单;空格改变选项状态;光标键上下左右移动,回车选定。选项意义:M是编译成可以随时加入的模块,*是编译进入内核,空就是不要。配置选项非常多,具体配置可以参考金步国先生翻译的资料:Linux 2.6.19.x 内核编译配置选项。参考网址:http://lamp.linux.gov.cn/Linux/kernel_options.html为了一次成功,请大家遵循一个原则,如果你自己使用的内核已经选用了某个选项,如果你没用充分的理由,不要随便改动。这样虽然内核不那么精简,但是不容易出现问题。我们可以精简的部分是硬件模块部分,对于自己没有的硬件要毫不犹豫的清除。如果你很执着,或者你有洁癖,你也可以一项项对过去,按照金步国先生的资料描述去选择基本上没有问题。
五、必须强调的几个选项:1、
在“General setup”里面的“Prompt for development and/or incomplete
code/drivers”金步国认为是不需要。但是如果你的硬件比较新,那几乎是必须选的,这样,我们才可以找到4965无线网卡,alsa声音驱动等
等。Kernel log buffer size 我选15,双核。如果你用ia64,要选16。Control Group support 集群支持?可以不要Choose SLAB allocator (SLUB (Unqueued Allocator)) 内存管理模式slab和slub选择slub。
2、在“Block layer”里,假如没有2TB的硬盘,就去掉:Support for Large Block Devices 。Support for Large Single Files 也不需要,谁有2TB的文件?
3、Processor type and features中是关于cpu的,要认真选。Symmetric multi-processing support是打开多核的开关,我的cpu是双核的,选中。Processor family (Core 2/newer Xeon) 我的是Core 2/newer Xeon。找到自己的cpu后,把Generic x86 support选项取消。Subarchitecture Type 选(PC-compatible)Maximum number of CPUs 输入自己的核心数目,我输入2。SMT (Hyperthreading) scheler support说的是超线程技术,P4有支持的,我的t8100不支持,目前大部分市场上的家用cpu都不支持。High Memory Support (4GB) 1G以下选1G;我是3G,选4G;4G以上的选16G在“ Timer frequency ”里,默认是250Hz,较新的cpu都可以选择了1000Hz,性能更好。
4、Power management options中把APM (Advanced Power Management) BIOS support关闭。现在的电脑都用acpi了。CPU Frequency scaling 是笔记本cpu节电技术Default CPUFreq governor (conservative) cpu节电模式有四个,笔记本默认选conservative比较好。ACPI Processor P-States driver 必须选,不然CPU Frequency就不能用。后面的可选自己硬件相关的,我选的是Intel Enhanced SpeedStep和 Intel Speedstep on ICH-M chipsets,其他的统统消灭。
5、Bus options的选择:Bus options (PCI, PCMCIA, EISA, MCA, ISA)PCI support PCI Express support 现在新买的机器基本上都是PCI Express了ISA support 较新的新机器没有ISA设备,可以去掉MCA support 去掉NatSemi SCx200 support 去掉PCI Hotplug Support Support for PCI Hotplug (EXPERIMENTAL) 如果没有PCI热插拔设备,去掉这里的选项可以考虑全部编译进内核,而不是以模块形式存在。
6、Device Drivers是重点,由于linux不但面向个人工作站,更多的是面向服务器的应用,所以可以把自己机器上没有的硬件全部去掉,而不用面面俱到。但是通用型的选项要慎重。比如在网卡的部分,除了我的千兆网卡 Broadcom Tigon3 support和4965无线网卡Intel Wireless WiFi 4965AGN,其余的硬件支持统统去掉。再比如声卡部分,我的是hd声卡,我只是在PCI devices中,选intel hd 声卡,再选Build IDT/Sigmatel HD-audio codec support,除此之外的硬件支持全部去掉。
声卡还有一个细节,在ubuntu7.10里面, 需要在/etc/modprobe.d/alsa-base后面添加options
snd-hda-intel probe_mask=1
model=3stack,这样我的笔记本喇叭才可以发声,不然只有外接耳机或者音箱。这次编译以后,这个动作就不必了,但是两个耳机插口只有一个可以用
了。再比如我的电脑中没有agp,就可以直接把agp相关的选项全部取消。要注意的:ATA/ATAPI/MFM/RLL support Include IDE/ATA-2 DISK support 如果你的/boot是放在IDE硬盘上,那么这里一定要选*,选M都不行。否则启动时会出现“waiting for root file system”的提示而停滞不前。 SCSI emulation support 要用刻录机,必须选。SCSI device support 现在都是SATA硬盘,一定要选* SCSI disk support 如果你的/boot放在SATA硬盘上,一定要选*。
SCSI CDROM support 虽然康宝刻录机是ide接口的,但是必须把它当成scsi接口的,这是老问题了。用刻录机,必须选。
Graphics supportSupport for frame buffer devices 选中,进入选择 VESA VGA graphics support 选上,不然字符界面启动会有问题,后面的显卡选择:由于我的显卡是nvidia 8400gs,要自己安装nvidia公司的驱动,所以一个都没有选。这样导致ubuntu开机动画会出问题,我索性在grub中的splash字符全部删除,把开机动画关闭。字符界面很正常。 Console display driver support 有人开机后字符控制台错误,就是这部分选项没有选,出问题了。 Framebuffer Console support 需要打开。
Bootup logo 开机图标,会在自检的画面上加上个性图标。需要在grub上添加“vga=”的选项,可以参考http://dotimes.com/articles /t23-slackware-framebuffer.html7、File systemsFilesystem in Userspace support 简称fuse。是必选的,如果你要用windows分区。
CD-ROM/DVD Filesystems ISO 9660 CDROM file system support 一般选*DOS/FAT/NT Filesystems VFAT (Windows-95) fs support 有FAT32分区就选*吧 NTFS file system support 有NTFS分区就选*吧 NTFS write support 如果想对 NTFS分区进行写操作,选*必须将启动盘的文件系统编译进内核,默认是编译成模块,这样无法启动系统。ubuntu采用的文件系统是ext3,请把ext2,ext3相关的必要选项都编译进入内核。
8、Virtualization这个大类是我多花几百元买t8100的主要原因,因为t8100支持intel vt技术使linux上的虚拟机的性能大幅度提高。这里的选项我除了amd的,其他都编译成模块。
9、全部设置完成,最后一项是保存设置。按照我的习惯,先在上一层目录保存一个备份,文件名类似 ../config20080630然后再保存到当起目录,文件名 .config退出设置程序。
六、开始编译内核。ubuntu的工具是make-kpkg,和其他的发行版相比,步骤相对简单。相关命令:代码:$sudo make-kpkg clean 这条命令好像不要超级权限,很多资料上说要,不过这不是原则问题。
$ sudo make-kpkg -initrd --initrd --append-to-version=dell1400 kernel_image kernel-headers上述命令中的dell1400可以用自己喜欢的字符代替,最后的字符一定是数字.输完上述命令回车之前,建议大家把浏览器还有别的运用程序都关掉,机器开始的工作比较艰苦。
我的机器大概十几分钟。
七、安装内核编译完成就是安装工作。编译好的内核在上一层目录。包括linux-headers-...-_i386.deb和linux-image-...-i386.deb两个文件,如果你不搞开发的话,只要安装内核就可以,头文件以后要用的时候再说。安装相关命令:
代码:$ cd ..$ sudo dpkg -i linux-image-(按tab键)文件名很长,如果不用tab自动补足是不可能的,tab键万岁。安装完成后和老内核比较一下大小代码:
$ ls -l /boot/
八、重新启动验证新内核。代码:$ sudo reboot
九、显卡驱动如果你的显卡和我一样是nvidia显卡,启动之后往往无法正常进入x-window。即使能看到gdm登录界面,效果也是很差的。那么就要安装nvidia驱动。用ctrl+alt+f1 进入字符命令行,输入用户名,密码登录。命令:代码:下载驱动$ wget http://us.download.nvidia.com/XFree86/Linux-x86/173.14.12/NVIDIA-Linux-x86-173.14.12-pkg1.run$sudo -s输入密码取得超级权限。#ps ax看看和gdm相关的进程,把这些进程全部关闭;用sudo /etc/init.d/gdm stop有可能有一个进程没有关闭:#kill 进程号然后安装nvidia显卡驱动,当然驱动要先下好,到nvidia驱动所在的目录里,运行:# sh ./NVIDIA-Linux-x86-173.14.12-pkg1.run重新启动以后就ok。要用nvidia的驱动,每次升级内核都要这么做。
十、无线网卡相关的内核选项是Networking --->Wireless --->Generic IEEE 802.11 Networking Stack (mac80211)还有4965的驱动。4965
无线网卡驱动虽然已经编入内核,但没有firmware无法使用。需要把原来内核的firmware拷贝到新内核对应的目录,名字和内核一致,我的内核是
linux-image-2.6.25.10dell1400,那建的目录名就是2.6.25.10dell1400。代码:具体命令:$ cd /lib/firmware/$ sudo mkdir 2.6.25.10dell1400把你的老内核中的4965的firmware拷贝过来。$ sudo cp 2.6.24-16-generic/* 2.6.25.10dell1400/上面的命令和下面的命令是等价的:$ cd /lib/firmware/$ sudo cp -R 2.6.24-16-generic/ 2.6.25.10dell1400/
重新启动系统,无线网卡就正常了。
附编译使用的机器配置:dell vostro 1400,t8100,nvidia 8400cs显卡,内置SigmaTel STAC9228芯片的声卡,4965无线网卡,BCM5906M千兆网卡,3G内存,160G硬盘,combo刻录。
编译系统版本:ubuntu 8.04桌面版.
B. 各位hadoop高手,请教一个问题,怎么在ubuntu上用fuse加载hdfs请赐教!急待解决!
我在hadoop-1.0.4下使用ant编译fuse-dfs时,也很多次错误退出。
最后我在使用ant编译前,修改了一个变量,结果成功编译出了
build/contrib/fuse_dfs
build/contrib/fuse_dfs_wrapper.sh
我在执行下面的命令之前,执行了:export LDFLAGS="$LDFLAGS -lm" # m前是小L
ant compile-contrib -Dlibhdfs -Dfusedfs=1
C. ubuntu系统下怎么编译内核文件
一、下载源代码和编译软件的准备
安装有关编译程序。安装make ,gcc, make-kpkg,运行menuconfig等等和编译内核相关的工具。安装不了,请检查/etc/apt/sources.list 文件。有关命令:代码:$sudo apt-get install build-essential kernel-package libncurses5-dev
二、解压源代码注意,网上很多教程上说应该解压到 /usr/src,纯属以讹传讹,linux掌门人linus说解压到任何目录上都可以。当然,linus的说法是正确的。我放在自己的主目录下的src目录。如果你下载源代码是放到自己的主目录下或者运行上面的wget下载的,那么运行下列命令:代码:$ cd ~$ mkdir src && tar jfx linux-2.6.25.10.tar.bz2 -C src/现在,源代码就在 ~/src/linux-2.6.25.10进入源代码的目录,准备下一步的工作。后面都在这个目录里面进行。代码:$ cd ~/src/linux-2.6.25.10
三、开始编译前的准备工作。首先,清理以前编译时留下的临时文件。如果是刚刚解开的包,不需要执行这步。如果是第二次或者是第n次编译,那么一定要执行。相关命令如下:代码:$ sudo make mrproper网上很多教程上说把现在使用的内核的config拷贝过来参考,据实验,是不需要的,ubuntu还有debian会自动做这步。不过这条命令倒是可以学习一下。当然你可以将以前的配置拷贝过来。命令:代码:cp /boot/config-`uname -r` ./.config
四、开始配置内核选项。相关命令:代码:$sudo make menuconfig配置用到的键只有几个,esc退出菜单;空格改变选项状态;光标键上下左右移动,回车选定。选项意义:M是编译成可以随时加入的模块,*是编译进入内核,空就是不要。配置选项非常多,具体配置可以参考金步国先生翻译的资料:Linux 2.6.19.x 内核编译配置选项。 请大家遵循一个原则,如果你自己使用的内核已经选用了某个选项,如果你没用充分的理由,不要随便改动。这样虽然内核不那么精简,但是不容易出现问题。我们可以精简的部分是硬件模块部分,对于自己没有的硬件要毫不犹豫的清除。如果你很执着,或者你有洁癖,你也可以一项项对过去,按照金步国先生的资料描述去选择基本上没有问题。
五、必须强调的几个选项:1、
在“General setup”里面的“Prompt for development and/or incomplete
code/drivers”金步国认为是不需要。但是如果你的硬件比较新,那几乎是必须选的,这样,我们才可以找到4965无线网卡,alsa声音驱动等
等。Kernel log buffer size 我选15,双核。如果你用ia64,要选16。Control Group support 集群支持?可以不要Choose SLAB allocator (SLUB (Unqueued Allocator)) 内存管理模式slab和slub选择slub。
2、在“Block layer”里,假如没有2TB的硬盘,就去掉:Support for Large Block Devices 。Support for Large Single Files 也不需要,谁有2TB的文件?
3、Processor type and features中是关于cpu的,要认真选。Symmetric multi-processing support是打开多核的开关,我的cpu是双核的,选中。Processor family (Core 2/newer Xeon) 我的是Core 2/newer Xeon。找到自己的cpu后,把Generic x86 support选项取消。Subarchitecture Type 选(PC-compatible)Maximum number of CPUs 输入自己的核心数目,我输入2。SMT (Hyperthreading) scheler support说的是超线程技术,P4有支持的,我的t8100不支持,目前大部分市场上的家用cpu都不支持。High Memory Support (4GB) 1G以下选1G;我是3G,选4G;4G以上的选16G在“ Timer frequency ”里,默认是250Hz,较新的cpu都可以选择了1000Hz,性能更好。
4、Power management options中把APM (Advanced Power Management) BIOS support关闭。现在的电脑都用acpi了。CPU Frequency scaling 是笔记本cpu节电技术Default CPUFreq governor (conservative) cpu节电模式有四个,笔记本默认选conservative比较好。ACPI Processor P-States driver 必须选,不然CPU Frequency就不能用。后面的可选自己硬件相关的,我选的是Intel Enhanced SpeedStep和 Intel Speedstep on ICH-M chipsets,其他的统统消灭。
5、Bus options的选择:Bus options (PCI, PCMCIA, EISA, MCA, ISA)PCI support PCI Express support 现在新买的机器基本上都是PCI Express了ISA support 较新的新机器没有ISA设备,可以去掉MCA support 去掉NatSemi SCx200 support 去掉PCI Hotplug Support Support for PCI Hotplug (EXPERIMENTAL) 如果没有PCI热插拔设备,去掉这里的选项可以考虑全部编译进内核,而不是以模块形式存在。
6、Device Drivers是重点,由于linux不但面向个人工作站,更多的是面向服务器的应用,所以可以把自己机器上没有的硬件全部去掉,而不用面面俱到。但是通用型的选项要慎重。比如在网卡的部分,除了我的千兆网卡 Broadcom Tigon3 support和4965无线网卡Intel Wireless WiFi 4965AGN,其余的硬件支持统统去掉。再比如声卡部分,我的是hd声卡,我只是在PCI devices中,选intel hd 声卡,再选Build IDT/Sigmatel HD-audio codec support,除此之外的硬件支持全部去掉。
声卡还有一个细节,在ubuntu7.10里面, 需要在/etc/modprobe.d/alsa-base后面添加options
snd-hda-intel probe_mask=1
model=3stack,这样我的笔记本喇叭才可以发声,不然只有外接耳机或者音箱。这次编译以后,这个动作就不必了,但是两个耳机插口只有一个可以用
了。再比如我的电脑中没有agp,就可以直接把agp相关的选项全部取消。要注意的:ATA/ATAPI/MFM/RLL support Include IDE/ATA-2 DISK support 如果你的/boot是放在IDE硬盘上,那么这里一定要选*,选M都不行。否则启动时会出现“waiting for root file system”的提示而停滞不前。 SCSI emulation support 要用刻录机,必须选。SCSI device support 现在都是SATA硬盘,一定要选* SCSI disk support 如果你的/boot放在SATA硬盘上,一定要选*。
SCSI CDROM support 虽然康宝刻录机是ide接口的,但是必须把它当成scsi接口的,这是老问题了。用刻录机,必须选。
Graphics supportSupport for frame buffer devices 选中,进入选择 VESA VGA graphics support 选上,不然字符界面启动会有问题,后面的显卡选择:由于我的显卡是nvidia 8400gs,要自己安装nvidia公司的驱动,所以一个都没有选。这样导致ubuntu开机动画会出问题,我索性在grub中的splash字符全部删除,把开机动画关闭。字符界面很正常。 Console display driver support 有人开机后字符控制台错误,就是这部分选项没有选,出问题了。 Framebuffer Console support 需要打开。
Bootup logo 开机图标,会在自检的画面上加上个性图标。需要在grub上添加“vga=”的选项 简称fuse。是必选的,如果你要用windows分区。
CD-ROM/DVD Filesystems ISO 9660 CDROM file system support 一般选*DOS/FAT/NT Filesystems VFAT (Windows-95) fs support 有FAT32分区就选*吧 NTFS file system support 有NTFS分区就选*吧 NTFS write support 如果想对 NTFS分区进行写操作,选*必须将启动盘的文件系统编译进内核,默认是编译成模块,这样无法启动系统。ubuntu采用的文件系统是ext3,请把ext2,ext3相关的必要选项都编译进入内核。
8、Virtualization这个大类是我多花几百元买t8100的主要原因,因为t8100支持intel vt技术使linux上的虚拟机的性能大幅度提高。这里的选项我除了amd的,其他都编译成模块。
9、全部设置完成,最后一项是保存设置。按照我的习惯,先在上一层目录保存一个备份,文件名类似 ../config20080630然后再保存到当起目录,文件名 .config退出设置程序。
六、开始编译内核。ubuntu的工具是make-kpkg,和其他的发行版相比,步骤相对简单。相关命令:代码:$sudo make-kpkg clean 这条命令好像不要超级权限,很多资料上说要,不过这不是原则问题。
$ sudo make-kpkg -initrd --initrd --append-to-version=dell1400 kernel_image kernel-headers上述命令中的dell1400可以用自己喜欢的字符代替,最后的字符一定是数字.输完上述命令回车之前,建议大家把浏览器还有别的运用程序都关掉,机器开始的工作比较艰苦。
我的机器大概十几分钟。
七、安装内核编译完成就是安装工作。编译好的内核在上一层目录。包括linux-headers-...-_i386.deb和linux-image-...-i386.deb两个文件,如果你不搞开发的话,只要安装内核就可以,头文件以后要用的时候再说。安装相关命令:
代码:$ cd ..$ sudo dpkg -i linux-image-(按tab键)文件名很长,如果不用tab自动补足是不可能的,tab键万岁。安装完成后和老内核比较一下大小代码:
$ ls -l /boot/
八、重新启动验证新内核。代码:$ sudo reboot
九、显卡驱动如果你的显卡和我一样是nvidia显卡,启动之后往往无法正常进入x-window。即使能看到gdm登录界面,效果也是很差的。那么就要安装nvidia驱动。用ctrl+alt+f1 进入字符命令行,输入用户名,密码登录。 #ps ax看看和gdm相关的进程,把这些进程全部关闭;用sudo /etc/init.d/gdm stop有可能有一个进程没有关闭:#kill 进程号然后安装nvidia显卡驱动,当然驱动要先下好,到nvidia驱动所在的目录里,运行:# sh ./NVIDIA-Linux-x86-173.14.12-pkg1.run重新启动以后就ok。要用nvidia的驱动,每次升级内核都要这么做。
十、无线网卡相关的内核选项是Networking --->Wireless --->Generic IEEE 802.11 Networking Stack (mac80211)还有4965的驱动。4965
无线网卡驱动虽然已经编入内核,但没有firmware无法使用。需要把原来内核的firmware拷贝到新内核对应的目录,名字和内核一致,我的内核是
linux-image-2.6.25.10dell1400,那建的目录名就是2.6.25.10dell1400。代码:具体命令:$ cd /lib/firmware/$ sudo mkdir 2.6.25.10dell1400把你的老内核中的4965的firmware拷贝过来。$ sudo cp 2.6.24-16-generic/* 2.6.25.10dell1400/上面的命令和下面的命令是等价的:$ cd /lib/firmware/$ sudo cp -R 2.6.24-16-generic/ 2.6.25.10dell1400/
重新启动系统,无线网卡就正常了。
附编译使用的机器配置:dell vostro 1400,t8100,nvidia 8400cs显卡,内置SigmaTel STAC9228芯片的声卡,4965无线网卡,BCM5906M千兆网卡,3G内存,160G硬盘,combo刻录。
编译系统版本:ubuntu 8.04桌面版.
D. linux 文件系统 内核编译
1、第一条命令没问题;
2、第二条命令:
#mkfs.ext2 myfs
myfs is not a block special device.
无路如何也要继续?(y,n)
这时要输入y
3、第三条命令,linux kernel不支持myext2文件系统。我猜你是想要在红帽或ubuntu上mount一个ext2文件系统的loop设备,但是想使用myext2的文件系统驱动,对吧。我没有这么做过,猜不出你的myext2摘出来之后是什么样子的。我以前试过在linux安装新的文件系统支持,比如fuse系统,源码编译通过后会生成一个.ko的模块文件,使用insmod命令将其加入内核,才能获得内核对该文件系统的支持。我想你可能也应该这样做,你应该需要生成一个类似myext2.ko的模块,然后将其insmod到内核中去。
E. PUTTY这个软件怎么安装使用FUSE啊
1) 下载最新的源码包(fuse-2.8.3.tar.gz),解压“tar xvf fuse-2.8.3.tar.gz”,进入目录“cd fuse-2.8.3”;
2) 按部就班地首先“./configure”,然后“make”,接着“make install”,最后“modprobe fuse”加载内核模块fuse.ko;
3) 切换到example目录下“cd example”,编译fusexmp.c测试一下是否安装成功:
[root@localhost example]# gcc -Wall `pkg-config fuse --cflags --libs` fusexmp.c -o fusexmp
Package fuse was not found in the pkg-config search path.
Perhaps you should add the directory containing `fuse.pc'
to the PKG_CONFIG_PATH environment variable
No package 'fuse' found
在包含自 /usr/local/include/fuse/fuse.h:26 的文件中,
从 /usr/local/include/fuse.h:9,
从 fusexmp.c:22:
/usr/local/include/fuse/fuse_common.h:32:2: 错误:#error Please add -D_FILE_OFFSET_BITS=64 to your compile flags!
根据提示信息,我们重新加入参数重新编译:
[root@localhost example]# gcc -Wall `pkg-config fuse --cflags --libs` -D_FILE_OFFSET_BITS=64 fusexmp.c -o fusexmp
Package fuse was not found in the pkg-config search path.
Perhaps you should add the directory containing `fuse.pc'
to the PKG_CONFIG_PATH environment variable
No package 'fuse' found
/tmp/ccKPr0PM.o: In function `main':
fusexmp.c:(.text+0x726): undefined reference to `fuse_main_real'
collect2: ld 返回 1
F. android 为什么要用fuse
Android FUSE 的设计目的就是为了把/data分区映射成一个内部储存,使得手机的内部储存和/data分区可以共用。
还有就是,比如我要支持一个新的文件系统,比如支持NTFS,要在内核中写代码实现,而不巧的是内核态的代码非常的难写,非常的难调试。。。so。。导致整个工程都拖延在这里了,但是呢。。用户空间中编写和调试的难度小,所以非常方便,用C++ java写都可以。
作者:何文力
G. linux无法读取NTFS文件格式
linux下面可以直接mount ntfs分区。
本文包括两个部分:
以只读方式mount NTFS文件系统;
以读写方式mount NTFS文件系统;
2. 只读Mount NTFS文件系统
2.1. NTFS内核支持
现在的Linux大多数发行版都支持NTFS文件系统。支持NTFS文件系统是Linux内核模块的特征,而不是Linux发行版的特征。首先确定下在你的系统中是否已经安装了NTFS模块。
# ls /lib/moles/2.6.18-128.el5PAE/kernel/fs/ | grep ntfs
如果NTFS模块存在,让我们来识别NTFS分区。
如果没有NTFS模块,那么需要先安装它。
查看内核版本:
[root@localhost mnt]# uname -r
2.6.18-128.el5PAE
从网上搜索kernel-mole-ntfs 2.6.18-128.el5PAE。下载RPM包进行安装。
# rpm -ivh kernel-mole-ntfs-2.6.18-128.el5-2.1.27-0.rr.10.11.i686.rpm
如果没有出错,系统现在可以支持NTFS了。
注:PAE下在网上没有找到ntfs模块。
2.2. 查看NTFS的分区
一个简单的方式来识别NTFS分区如下:
# fdisk -l | grep NTFS
/dev/sdb1 2 62016256 1953512032+ 7 HPFS/NTFS
NTFS分区的硬盘为:/dev/sdb1
2.3. Mount NTFS分区
首先创建mount点:
# mkdir /mnt/ntfs
然后简单的使用mount命令来挂载它:
# mount -t ntfs /dev/sdb1 /mnt/ntfs
现在我们可以访问NTFS分区和其中的文件,但是只有读权限。
3. 以读写方式mount NTFS文件系统
Mount NTFS文件系统让他具有读写访问的权限有点复杂。这涉及到其它软件的安装,例如fuse和ntfs-3g。在这两种情况下你可能需要使用软件包管理器,例如:yum、apt-get,synaptic等,并且安装它到你的标准发行版硬盘上。检查软件包ntfs-3g和fuse。
3.1. 安装其它软件
3.1.1. Fuse安装
从http://fuse.sourceforge.net上下载源代码
# wget http://easynews.dl.sourceforge.net/sourceforge/fuse/fuse-2.7.1.tar.gz
解压缩源代码:
# tar zxf fuse-2.7.1.tar.gz
编译和安装fuse源代码
# cd fuse-2.7.1
# ./configure --exec-prefix=/; make; make install
3.1.2. Ntfs-3g安装
从网站http://www.tuxera.com/community/ntfs-3g-download/上下载源代码包:
http://tuxera.com/opensource/ntfs-3g_ntfsprogs-2011.4.12.tgz
解压缩安装:
# tar zxf ntfs-3g_ntfsprogs-2011.4.12.tgz
编译和安装ntfs-3g源代码。
# cd ntfs-3g_ntfsprogs-2011.4.12
# ./configure
# make
# make install
3.2. Mount NTFS分区
如果在安装过程中没有出现错误,NTFS卷可以mount到Linux上,并且具有读写权限。
# fdisk -l | grep NTFS
# mount -t ntfs-3g /dev/sdb1 /mnt/ntfs
[root@localhost ntfs-3g_ntfsprogs-2011.4.12]# mount -t ntfs-3g /dev/sdb1 /mnt/ntfs
FATAL: Mole fuse not found. (这是由于没有安装fuse模块导致的)
下载网址:http://ftp.riken.go.jp/Linux/cern/slc52test/extras/x86_64/failed/
在google上查找kernel-mole-fuse-2.6.18-128.el5PAE的rpm安装程序,下载安装然后重新mount。
H. ant怎么编译dfs-fuse
下一步我们需要设置如下的环境变量:
ANT_HOME:ant的安装目录,如果按上面方法解压缩了ant,那么这个值应该设为D:\ant
JAVA_HOME:jdk的安装目录
PATH:把%ANT_HOME%\bin目录加到path变量,以便于从命令行直接运行ant。
(1)建立build.xml
用ant编译规模较大的工程非常方便,每个工程都对应一个build.xml文件,这个文件包含与这个工程有关的路径信息和构建任务。
下面是一个最简单的build.xml文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="projectTemplate" default="init" basedir=".">
<target name="init" >
<property name="lib.dir" value="lib"/>
<echo message="Hello ,lib.dir is set to ${lib.dir}" >
</echo>
</target>
</project>
每个build.xml有且仅有一个project,每个project下面可以包含多个target,每个target表示一个小的任务,每个任务负责执行一段脚本。ant有内置任务集可供使用,例如上面的echo就是在console上显示消息。
更详细的内置任务请参考http://ant.apache.org/manual/coretasklist.html
${lib.dir}表示引用一个名字叫做lib.dir的属性值,这个属性的值就是lib。
(2)运行ant
使用ant.bat可以直接运行ant,如果不带任何参数,ant会在当前路径下搜索build.xml文件,如果找到了这个文件,就运行project的default属性指定的target.我们也可以带参数来运行ant,以便选择build.xml文件和要运行的target:
ant -buildfile c:\demo\build.xml init
表示运行c:\demo\build.xml 中名字为init的target
(3)ant的目标依赖
target有一个属性depends,在其中可以指定一系列的target名字,表示在执行该target前,必须首先执行的一系列其它target。depends具有传递性,例如:targetA depends targetB,而targetB depends targetC和targetD,这样在执行targetA之前,首先执行C和D,然后执行B,最后才会执行A。
下面是个简单的例子,在执行编译的动作前,首先需要建立一个目标代码存放的目录,然后再执行编译。
<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="project" default="init" basedir=".">
<target name="init" >
<property name="dist" value="dist"/>
<mkdir dir="${dist}" />
</target>
<target name="build" depends="init">
<javac srcdir="SourceCode" destdir="${dist}">
</javac>
</target>
</project>
I. linux 读取 移动硬盘 ntfs 文件
一、编译安装fuse模块(支持库,若编辑环境已配置过,可跳过此步骤)
下载 fuse-2.7.0.tar.gz 拷贝到linux系统上。
# tar –zxvf fuse-2.7.0.tar.gz
# cd fuse-2.7.0
# ./configure
# make
# make install
# lsmod
# modprobe fuse
二、安装ntfs-3g软件。
下载ntfs-3g拷贝到linux系统上
# tar –zxvf ntfs-3g_ntfsprogs-2012.1.15.gz
# cd ntfs-3g_ntfsprogs-2012.1.15
# ./configure
# make
# make install
安装完之后,就可以使redhat支持NTFS文件系统了。
# mkn //输入mkn之后,按两次tab键之后,你就会发现mknfs这个命令了,表示已支持
mknod mkntfs
三、挂载
# mkdir backup 建立加载点,或者挂载在已有的文件夹上,这里采用/media
# mount –t ntfs-3g /dev/sdi1 /media
注:对ntfs格式的磁盘分区应使用-t ntfs-3g参数,对fat32格式的磁盘分区应使用-t vfat参数。若汉字文件名显示为乱码或不显示,可以使用下面的命令格式。
#mount -t ntfs-3g -o iocharset=cp936 /dev/sdi1 /media
J. linux怎么安装fuse 2.8.x or greater
linux怎么安装fuse 2.8.x or greater
1) 下载最新的源码包(fuse-2.8.3.tar.gz),解压“tar xvf fuse-2.8.3.tar.gz”,进入目录“cd fuse-2.8.3”;
2) 按部就班地首先“./configure”,然后“make”,接着“make install”,最后“modprobe fuse”加载内核模块fuse.ko;
3) 切换到example目录下“cd example”,编译fusexmp.c测试一下是否安装成功:
[root@localhost example]# gcc -Wall `pkg-config fuse --cflags --libs` fusexmp.c -o fusexmp
Package fuse was not found in the pkg-config search path.