Mount tập tin ISO trong Linux Image Mount tập tin ISO trong Linux

Bài viết này giới thiệu các bạn về cách mount tập tin ISO trong Linux trên hệ điều hành Linux.

1. Giới thiệu tập tin ISO

ISO(International Organization for Standardization) còn được gọi là hình ảnh ISO. Các tệp ISO thường được sử dụng để phân phối hệ điều hành. Hầu hết hệ điều hành linux mà khi chúng ta tải xuống sẽ có định dạng ISO. File ISO là một bản sao chính xác của dữ liệu sẽ được đặt vào một đĩa CD hay DVD.

Khi bạn tải tệp ISO của Linux, bạn sẽ thường ghi nó vào đĩa CD hoặc DVD dưới dạng hình ảnh ISO. Khi bạn đã ghi hình ảnh ISO trong CD hoặc DVD, bạn có thể khởi động hệ thống để cài đặt HĐH Linux.

2. Mount ISO image trên Linux

Khi chúng ta tải tệp *.iso từ một trang web (ví dụ:bản phân phối CentOS), chúng ta có thể xem nội dung của tệp iso mà không cần ghi dưới dạng iso vào CD hoặc DVD được thực hiện như bên dưới bằng cách sử dụng option loop:

mount -o loop

Ví dụ: Xem nội dung của tệp CentOS-7-x86_64-Minimal-1611.iso bằng cách sử dụng cú pháp mount -o loop:

[root@test1 ~]# mkdir /tmp/mount
[root@test1 ~]# mount -o loop /root/CentOS-7-x86_64-Minimal-1611.iso /tmp/mount/
mount: /dev/loop0 is write-protected, mounting read-only
[root@test1 ~]# cd /tmp/mount
[root@test1 mount]# ls -l
total 94
-rw-r--r-- 1 root root    14 Dec  5  2016 CentOS_BuildTag
drwxr-xr-x 3 root root  2048 Dec  5  2016 EFI
-rw-r--r-- 1 root root   215 Dec 10  2015 EULA
-rw-r--r-- 1 root root 18009 Dec 10  2015 GPL
drwxr-xr-x 3 root root  2048 Dec  5  2016 images
drwxr-xr-x 2 root root  2048 Dec  5  2016 isolinux
drwxr-xr-x 2 root root  2048 Dec  5  2016 LiveOS
drwxrwxr-x 2 root root 57344 Dec  5  2016 Packages
drwxr-xr-x 2 root root  4096 Dec  6  2016 repodata
-rw-r--r-- 1 root root  1690 Dec 10  2015 RPM-GPG-KEY-CentOS-7
-rw-r--r-- 1 root root  1690 Dec 10  2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r-- 1 root root  2883 Dec  6  2016 TRANS.TBL

Lưu ý: Loop device là một thiết bị giả sẽ làm cho tệp iso có thể truy cập được. Nó cho phép chúng ta mount CD/DVD/ISO image và truy cập như một block device.

Sau khi đã mount để xem nội dung của tệp iso rồi, chúng ta có thể unmount ISO image. Để umount chúng ta thực hiện lệnh với cú pháp sau:

umount [Thư mục được mount]

Ví dụ: Umount ISO image trong thư mục được mount /tmp/mount chúng ta thực hiện như sau:

umount /tmp/mount/

3. Mount ISO Image khi không là người dùng root

Nếu không phải là người dùng root chúng ta cũng có thể mount một tệp iso, ngay khi không có quyền sudo. Chúng ta sử dụng Udisk để mount.

Thực hiện cú pháp sau để có thể xem nội dung của tệp iso:

udisksctl loop-setup -f *.iso

Ví dụ: Mount file iso tại /home/CentOS-7-x86_64-Minimal-1611.iso bằng lệnh udisksctl như bên dưới:

[dang@test1 ~]$ udisksctl loop-setup -f /home/CentOS-7-x86_64-Minimal-1611.iso
Mapped file /home/CentOS-7-x86_64-Minimal-1611.iso as /dev/loop0.
[dang@test1 ~]$ lsblk
NAME      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda         8:0    0   32G  0 disk
├─sda1      8:1    0  512M  0 part [SWAP]
└─sda2      8:2    0 31.5G  0 part /
sr0        11:0    1  458K  0 rom
loop0       7:0    0  680M  0 loop /tmp/mnt
[dang@test1 ~]$ ls -l /tmp/mnt
total 94
-rw-r--r-- 1 root root    14 Dec  5  2016 CentOS_BuildTag
drwxr-xr-x 3 root root  2048 Dec  5  2016 EFI
-rw-r--r-- 1 root root   215 Dec 10  2015 EULA
-rw-r--r-- 1 root root 18009 Dec 10  2015 GPL
drwxr-xr-x 3 root root  2048 Dec  5  2016 images
drwxr-xr-x 2 root root  2048 Dec  5  2016 isolinux
drwxr-xr-x 2 root root  2048 Dec  5  2016 LiveOS
drwxrwxr-x 2 root root 57344 Dec  5  2016 Packages
drwxr-xr-x 2 root root  4096 Dec  6  2016 repodata
-rw-r--r-- 1 root root  1690 Dec 10  2015 RPM-GPG-KEY-CentOS-7
-rw-r--r-- 1 root root  1690 Dec 10  2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r-- 1 root root  2883 Dec  6  2016 TRANS.TBL

Sau khi đã xem nội dung của tệp iso rồi, chúng ta có thể unmount ISO image. Để umount chúng ta thực hiện lệnh với cú pháp sau:

udisksctl unmount -b [disk]

Ví dụ: Umount ISO image trong đĩa /dev/loop0 chúng ta thực hiện như sau:

[dang@test1 ~]$ udisksctl unmount -b /dev/loop0
Unmounted /dev/loop0.

4. Fix lỗi “iso is not a block device error”

Trong khi mount file iso, bạn có thể gặp lỗi sau:

mount: file.iso is not a block device (maybe try `-o loop'?)

Vấn đề:

[root@test1 ~]# mount /root/CentOS-7-x86_64-Minimal-1611.iso /tmp/mount/
mount: /root/CentOS-7-x86_64-Minimal-1611.iso is not a block device (maybe try `-o loop'?)

Chúng ta sẽ fix như sau:

Theo yêu cầu của lệnh mount, hãy sử dụng -o loop làm tùy chọn.

[root@test1 ~]# mount /root/CentOS-7-x86_64-Minimal-1611.iso /tmp/mount/  -o loop
mount: /dev/loop1 is write-protected, mounting read-only

5. Cập nhật nội dung của ISO image

Nội dung của tệp ISO sẽ không thể được cập nhật sau khi tệp ISO được tạo. Cách duy nhất có thể thực hiện cập nhật chúng ta thực hiện các bước sau:

  • Giải nén tất cả các tập tin từ iso.
  • Cập nhật nội dung. Thêm hoặc xóa bất kỳ tệp riêng lẻ nào trong tệp iso.
  • Tạo một iso khác với các tập tin cập nhật.

Ví dụ: Cách add file vào ISO image chúng ta thực hiện như sau:

[root@test1 ~]# mkdir /tmp/mount/
[root@test1 ~]# mount -o loop /location/of/ISO/file.iso /tmp/mount/
[root@test1 ~]# ls -l /tmp/mount/
total 94
-rw-r--r-- 1 root root    14 Dec  5  2016 CentOS_BuildTag
drwxr-xr-x 3 root root  2048 Dec  5  2016 EFI
-rw-r--r-- 1 root root   215 Dec 10  2015 EULA
-rw-r--r-- 1 root root 18009 Dec 10  2015 GPL
drwxr-xr-x 3 root root  2048 Dec  5  2016 images
drwxr-xr-x 2 root root  2048 Dec  5  2016 isolinux
drwxr-xr-x 2 root root  2048 Dec  5  2016 LiveOS
drwxrwxr-x 2 root root 57344 Dec  5  2016 Packages
drwxr-xr-x 2 root root  4096 Dec  6  2016 repodata
-rw-r--r-- 1 root root  1690 Dec 10  2015 RPM-GPG-KEY-CentOS-7
-rw-r--r-- 1 root root  1690 Dec 10  2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r-- 1 root root  2883 Dec  6  2016 TRANS.TBL
[root@test1 ~]# cp /home/efiboot1.img /tmp/mount/images/
[root@test1 ~]# mkdir /home/linux
[root@test1 ~]# mkisofs -o /home/linux/example.iso /tmp/mount/