• Thứ Hai, 19/07/2004 04:40 (GMT+7)

    Hỗ trợ NTFS trên Linux

    NTFS (New Technologies File System) là định dạng hệ thống tập tin đặc thù của Microsoft, được dùng trong các HĐH Windows NT/2000/XP. NTFS có nhiều điểm mạnh hơn FAT/FAT32 như hỗ trợ nén và bảo mật... 

    Một vấn đề mà nhiều người dùng Linux quan tâm đó là kết nối trao đổi dữ liệu với phân vùng đĩa dùng định dạng NTFS khi làm việc trong hệ điều hành Linux. Với các định dạng hệ thống tập tin FAT và FAT32 thì Linux hỗ trợ rất tốt và việc kết nối không có vấn đề gì (chỉ đơn giản dùng dòng lệnh "mount -t vfat ...").

    NTFS phức tạp hơn FAT/FAT32, Microsoft không công bố thông tin cần thiết cho việc tạo driver truy cập hệ thống tập tin NTFS từ các hệ điều hành khác Windows và một vấn đề nữa đó là bản quyền, tất cả tạo nên khó khăn cản trở việc phát triển driver NTFS cho Linux.

    Giải pháp chỉ đọc

    Thực tế, hầu hết các bản Linux hiện nay đều có sẵn driver hỗ trợ NTFS nhưng thường không cài mặc định. Muốn sử dụng driver NTFS, bạn phải thực hiện biên dịch lại nhân Linux. Thủ tục thực hiện như sau:

    1. Vào folder chứa mã nguồn Linux, ví dụ: /usr/src.

    2. Nhập dòng lệnh "make xconfig" hay "make config" hay "make menuconfig". Theo tôi, dùng lệnh "make menuconfig" thuận tiện nhất.

    3. Vào phần File systems và chọn NTFS file system support.

    4. Nhấn OK.

    5. Nhập dòng lệnh "make dep".

    6. Nhập dòng lệnh "make install"

    Tạo folder trong Linux dùng để "mount" đến phân vùng NTFS

    7. mkdir /mnt/windows

    Thực hiện kết nối phân vùng NTFS, giả sử là /dev/hda1

    8. mount -t ntfs  /dev/hda1 /mnt/windows

    Một cách khác đơn giản hơn: Tải về và cài đặt file rpm hỗ trợ NTFS từ website http://linux-ntfs.sourceforge.net/rpm.

    Hầu hết các bản Linux đều hỗ trợ tốt việc đọc (read only) phân vùng NTFS, tuy nhiên việc ghi lên phần vùng NTFS làm việc không ổn định (được khuyến cáo là "DANGEROUS" - nguy hiểm, có thể làm mất toàn bộ dữ liệu trên phân vùng NTFS).

    Hiện có 2 driver hỗ trợ ghi NTFS. Driver nguyên thuỷ của nhân 2.4 làm việc không ổn định và nguy hiểm. Driver mới được đưa vào nhân 2.5.11 có tính năng  giới hạn, chỉ cho phép ghi đè lên tập tin có sẵn nhưng không cho phép thay đổi kích thước hay tạo tập tin mới hay xoá tập tin có sẵn.

    Bạn có thể kiểm tra phiên bản driver NTFS đang dùng bằng NTFS log message, sử dụng một trong hai lệnh sau đây (bạn  phải đăng nhập là root).

    #dmesg | grep -i ntfs

    #grep -i ntfs /var/log/messages

    Phiên bản nguyên thủy của driver NTFS có số hiệu là 1.1.*, còn các phiên bản mới có số hiệu là 2.*.

    Giải pháp Captive

        CÁC PHIÊN BẢN NTFS  
        Mặc dù có vẻ tương đồng nhưng các phiên bản Windows khác nhau dùng driver NTFS khác nhau. Phiên bản 1.2 dôi khi dược biết tới như phiên bản 4.0; Phiên bản 3.0 và 3.1 dôi khi dược biết tới như phiên bản 5.0 và 5.1.  
         NTFS  Phiên bản Windows  
         v1.2   NT 3.51, NT 4  
       v3.0    2000  
       v3.1   XP  
           

    Captive là giải pháp xuất sắc, sử dụng driver NTFS của chính Windows để cho phép Linux đọc và ghi phân vùng NTFS. Captive tạo một bản thu nhỏ của Windows chạy bên trong Linux, bản Windows này đảm nhận thật sự quá trình đọc/ghi thông tin trên phân vùng NTFS và sau đó gửi thông tin đến chức năng quản lý tập tin của Linux. Vì Captive dùng driver NTFS "thật" nên nó hỗ trợ NTFS hoàn toàn.

    Việc cài đặt NTFS rất đơn giản, phần mềm có khả năng dùng driver NTFS (chỉ đọc) có sẵn của Linux để tự tìm driver NTFS của Windows trên đĩa cứng của máy.

    Bạn tải về tập tin .rpm (9,8MB) ở địa chỉ http://www.jankratochvil.net/project/captive/, sau khi cài đặt xong tập tin .rpm này, bạn chạy lệnh captive-install-acquire để kiểm tra tính hợp lệnh của driver NTFS.

    Vậy là xong! Giờ thì bạn có thể thực hiện lệnh kết nối phân vùng NTFS với các dòng lệnh sau.

    # mkdir /mnt/ntfs

    # mount -t captive-ntfs /dev/hda1 /mnt/ntfs  

    Lưu ý, để Captive làm việc, cần có 2 tập tin ntoskrnl.exe và ntfs.sys hiện diện trong folder /var/lib/captive. Captive chỉ hỗ trợ driver NTFS của phiên bản Windows XP, bạn có thể tìm 2 tập tin driver này trong ở các folder \Windows\System32 (ntoskrnl.exe) và \Windows\System32\drivers (ntfs.sys).

    Một số vấn đề có thể gặp phải:

    - Báo lỗi khi mount phân vùng NTFS

     (process:3091): Captive-CRITICAL **: sandbox: FATAL: file signal.c: line 203 (sigaction_SIGSEGV)...

    Đây là lỗi do phiên bản driver NTFS không tương thích. Cách khắc phục: dùng đúng driver NTFS của Windows XP.

    - File ghi lên ổ NTFS biến mất khi khởi động lại

    Tình trạng này là do không dùng lệnh "umount /mnt/ntfs" để gỡ kết nối đến phân vùng NTFS khi kết thúc phiên làm việc. Cách khắc phục: thực hiện lệnh thủ công hoặc tạo script đặt vào folder /etc/init.d để gỡ kết nối tự động khi "shutdown" Linux.

    Nguyễn Lê

    ID: A0406_104