新手掛載ntfs

說明:本文是基於網上原文並結合本身的經歷進行改寫的,修改了一些錯誤,加入了本身的心得,說得更加詳細了。

看到衆多的LINUX愛好者在MOUNT NTFS文件系統時出現的問題,衆多的回答不是太徹底,發現有些答案說的不清楚,或者有一點點錯誤。
對於一個新手來講,省略一點也會讓他不能進行下去。因此特意寫了這篇短文,重述了個人經歷,但願對你們有所幫助。

當你安裝完Linux系統,而且已經啓動,恭喜你!若是你的硬盤上還安裝了WinNT/2000系統,
你試圖去訪問另外一個NTFS分區時卻遇到了麻煩。由於你所用的Linux系統沒有已編譯的支持NTFS
文件系統的模塊。linux雖然支持幾十種文件系統,但它並非在安裝時每種都載入。因此這時
須要從新編譯內核。

寫此文時我用的系統是Red Hat Linux release 6.0 Kernel 2.6.32-71.el6.i686。
從一個新安裝的系統開始,咱們一塊兒去編譯一個本身想要的支持NTFS文件系統內核。

說明一下,下面提到的version是指你的內核版本號(x.y.z.*,如2.6.38.2),不是字符串version,我第一次在網上看到的,覺得是個字符串,暈,走了好多彎路。

1、找到源程序。在/usr/src目錄下,沒有linux目錄,證實你在安裝時沒有安裝源程序包,
這時你須要手工安裝這個包,在CDROM裏kernel-version-source.rpm,或者在
ftp.kernel.org/pub/linux/kernel 站點下載。將它拷到/usr/src目錄下解包:

 

我是從ftp.kernel.org/pub/linux/kernel下載的2.6.38.2linux

tar xzvf linux-version.tgz
or tar xjvf linux-version.tar.bz2

2、配置內核
在/usr/src/linux目錄下,運行make menuconfig
通常的選項不用管它,都是默認的就行。到你須要的文件系統下,選NTFS打上M標記,而後退出
保存。爲了驗證你的選擇正確。在命令行下:
vi .config 應該找到這樣一行:CONFIG_NTFS_FS = m
這樣你已正確配置了NTFS文件系統的支持。

3、檢查相關性(若是是2.6以上的內核就不須要了)
在/usr/src/linux目錄下,運行以下命令:make dep 幾分鐘後結束。
再運行以下命令:make clean .清除臨時文件。

4、編譯內核
依然在這個目錄下,運行 make bzImage
時間稍微長一點。結束以後會有兩個重要文件:
arch/i386/boot/bzImage
System.map
這兩個文件很重要,後面會講到,呵呵

五 編譯安裝模塊(可動態加載)
依然在這個目錄下,運行make modules
這會須要很長時間。由於系統正在編譯全部的模塊。從CPU到SCSI等,編譯選擇的模塊,生成相應的模塊

6、安裝模塊。
依然在這個目錄下,運行make modules_install (將編譯後的模塊轉移到系統標準位置)模塊在系統中的標準目錄位於/lib/modules/x.y.z,後面的x.y.z是版本號,爲安全起見,在運行#make  modules_install以前最好對/lib/modules進行備份。模塊一般是帶有擴展名.o的文件,使用命令#lsmod能夠對當前內核的模塊進行列表。

7、
# make install
可能會出現 error not find *****,能夠不用理會, 偶暫時也不知道爲何,很差意思~~~

上面的命令"make install"將:

 (1)把壓縮內核映象(arch/i386/boot/bzImage,上面提到的)拷貝到/boot目錄下, 並建立相應的System.map符號連接; 你會發現/boot下多了兩個文件(vmlinuz-version, System.map-version,version指你內核的版本號,不一樣版本的內核版本號不同)

 (2)修改bootloader的配置文件;(以grub這個bootloader爲例)

 (3)調用mkinitrd程序建立內核的initrd映象(initramfs-version.img,這個文件很重要,我在這個文件上走了很長的彎路,沒有這個誰的,內核找不到/lib/modules/version/modules.dep,由於最開始內核裏沒有目錄SADA的驅動,不認識掛載在/上的磁盤目錄,只有經過initramfs這個虛擬的文件目錄來找到模塊). 對於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
                       

通常是make bzImage;make modules;make module_install; make install


總共有哪些文件:/boot目錄下三個文件: 內核文件vmlinuz-version,符號鏈接文件System.map-version,虛擬目錄文件initramfs-version-img, /lib/modules/下:模塊version

                       

運行新內核以前,請檢查一下/boot/grub/grub.conf的內容,下面的配置可做參考

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE:  You have a /boot partition.  This means that

#          all kernel and initrd paths are relative to /boot/, eg.

#          root (hd0,0)

#          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00

#          initrd /initrd-version.img

#boot=/dev/hda

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title Fedora Core (2.6.18.2)

        root (hd0,0)

        kernel /vmlinuz-2.6.18.2 ro root=/dev/VolGroup00/LogVol00 rhgb quiet

        initrd /initrd-2.6.18.2.img

title Fedora Core (2.6.18-1.2798.fc6)

        root (hd0,0)

        kernel /vmlinuz-2.6.18-1.2798.fc6 ro root=/dev/VolGroup00/LogVol00 rhgb quiet

        initrd /initrd-2.6.18-1.2798.fc6.img

 其實這個grub.conf文件在/etc/下有個grub.conf連接文件,本身也能夠到這裏去修改這個GRUB的配置

如今重啓機器,便可選擇最新的內核進行測試。 這個方法是對整個內核及模塊進行編譯,有點麻煩,但對新手來講,能夠加深理解c++

掛載: mount -t ntfs /dev/sda1 /mnt/win01           umount /mnt/win01 上面說到的make install ,能夠經過其它方法實現: 一、 cp arch/i386/boot/bzImage /boot/vmlinuz.version cp System.map /boot/System.map.version 二、# cd /boot      # mkinitrd /boot/initramfs-version.img version 這樣,3個文件準備好了,呵呵 三、修改/boot/grub/grub.conf    vi /boot/grub/grub/conf    ##增長一個內核加載入口    title Red Hat Linux (version)    root (hd0,0)    kernel /vmlinuz-2.4.18 ro root=/dev/hda2    具體參數與機器有關,相信你確定知道的。 本文沒有說到LILO這種bootloader。 其實,在編譯的過程當中還有不少問題,如:每一個命令作了些什麼,生成了哪些文件,慢慢來 交叉編譯問題: 安裝qt時出現/usr/lib/libstdc++.so.6: version `GLIBCXX_6.0.10' not found linux 執行strings /usr/lib/libstdc++.so.6 | grep GLIBC 返回結果沒有GLIBCXX_6.0.10 緣由:libstdc++.so.6的版本太低,須要下載個新的從新創建軟鏈接。 解決方法:下載libstdc++.so.6.0.10的版本 1.下載後請先驗證strings /tmp/libstdc++.so.6|grep GLIBCXX是否有 GLIBCXX_3.4.9 GLIBCXX_3.4.10 2.以後刪除 符號連接:rm /usr/lib/libstdc++.so.6 3.複製文件cp /tmp/libstdc++.so.6.0.10 /usr/lib/ 4.再創建符號連接ln -s /usr/lib/libstdc++.so.6.0.10 /usr/lib/libstdc++.so.6 5.好了. 實際上沒有達到目的,當時安裝的一個工具須要so.6.0.14, 反而把系統搞壞了,當我重啓系統後,桌面顯示不了了,終端也打不開了,暈。當時是以root
相關文章
相關標籤/搜索