강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

리눅스에서 USB장치 사용하기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

제목 : 리눅스에서 USB장치 사용하기

 

이번절 에서는 리눅스에서 USB장치를 사용하는 방법에 대해서 알아보도록 하겠습니다. 당연한 얘기지만 리눅스에서도 USB장치를 사용할 수 있습니다. 일반 디스크장치나 CD-ROM드라이브를 사용하는 방법과 마찬가지로 마운트포인트를 생성하고 파일시스템 타입에 맞게 마운트를 하여 사용하면 됩니다.

 

USB장치를 vfat타입으로 사용하기

 

USB장치가 마운트된 후에는 자연적으로 파일 또는 디렉토리의 생성/삭제등이 가능합니다. , 그럼 여기에서는 일반사람들이 가장 흔하게 사용하는 USB장치인 USB메모리스틱을 리눅스에서 마운트하여 사용하는 방법에 대해서 알아보도록 하겠습니다.

 

먼저, 필자가 이번 절에서 예로 들 메모리스틱은 다음 그림과 같은 것입니다.

 

b2fb97cf4da9f36e260d872f9bab1062_1647248536_9935.png        b2fb97cf4da9f36e260d872f9bab1062_1647248553_1525.png


위의 메모리스틱은 필자가 사용하고 있는 것으로 32MB용량의 좀 오래된 것이긴 하지만 현재도 파일백업용으로 사용하고 있습니다. 주로 윈도우PC에서 문서작업을 하고 작업한 문서를 임시로 저장해 두는 용도로 사용하고 있습니다. 이렇게 사용하는 메모리스틱을 리눅스에서 사용하기 위하여 마운트하는 방법에 대해서 알아보겠습니다.

 

먼저 USB장치를 리눅스서버에 꼽아두십시요. 그리고 USB장치를 마운트할 마운트포인트를 mkdir로 다음과 같이 생성합니다.


 

[root@bible /]# mkdir /usb

[root@bible /]#

 

그리고 다음과 같이 modprobe명령어로 ide-scsi모듈을 로드합니다.

 

[root@bible /]# modprobe ide-scsi

[root@bible /]#

 

그런 다음 ide-scsi모듈이 로드가 되었는가를 확인하기 위하여 다음과 같이 lsmod를 실행해 보았습니다. 아래 결과를 보다시피 ide-scsi모듈이 로드되어 있다는 것을 알 수 있습니다.


 

[root@bible /]# lsmod

Module                  Size  Used by

vfat                   18176  1

fat                    46240  1 vfat

ide_scsi               20996  0

parport_pc             32324  1

lp                     16748  0

parport                40776  2 parport_pc,lp

autofs4                24196  0

sunrpc                151524  1

iptable_filter          7936  0

ip_tables              23168  1 iptable_filter

dm_mod                 65668  0

video                  19972  0

button                 10896  0

battery                13572  0

ac                      9092  0

md5                     8576  1

ipv6                  271392  12

usb_storage            72000  1

uhci_hcd               37520  0

i2c_piix4              12816  0

i2c_core               26752  1 i2c_piix4

e100                   40192  0

mii                     9472  1 e100

floppy                 63760  0

ext3                  134408  4

jbd                    65048  1 ext3

aic7xxx               177848  5

sd_mod                 22272  7

scsi_mod              125952  4 ide_scsi,usb_storage,aic7xxx,sd_mod

[root@bible ~]#

 

그리고 리눅스에서 대부분 USB장치는 /dev/sda 또는 /dev/sdb 또는 /dev/sdc등의 창치명을 사용하는데 현재 리눅스서버에서 사용되고 있지 않은 장치명을 USB장치명으로 사용할 수 있습니다. 따라서 어떤 장치명에 할당되었는가를 확인하기 위하여 다음과 같이 "fdisk -l"을 실행해 봅니다.


 

[root@bible ~]# fdisk -l

 

Disk /dev/sda: 18.3 GB, 18373206016 bytes

128 heads, 32 sectors/track, 8761 cylinders

Units = cylinders of 4096 * 512 = 2097152 bytes

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          64      131056   83  Linux

/dev/sda2              65        2112     4194304   83  Linux

/dev/sda3            2113        3160     2146304   83  Linux

/dev/sda4            3161        8761    11470848    5  Extended

/dev/sda5            3161        3416      524272   82  Linux swap

/dev/sda6            3417        8761    10946544   83  Linux

 

Disk /dev/sdb: 18.3 GB, 18373206016 bytes

255 heads, 63 sectors/track, 2233 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

Disk /dev/sdb doesn't contain a valid partition table

 

Disk /dev/sdc: 32 MB, 32768000 bytes

2 heads, 32 sectors/track, 1000 cylinders

Units = cylinders of 64 * 512 = 32768 bytes

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sdc1   ?    29215178    31850952    84344761   69  Unknown

Partition 1 has different physical/logical beginnings (non-Linux?):

     phys=(68, 13, 10) logical=(29215177, 1, 6)

Partition 1 has different physical/logical endings:

     phys=(288, 115, 43) logical=(31850951, 0, 23)

Partition 1 does not end on cylinder boundary.

/dev/sdc2   ?    26586242    55803140   934940732+  73  Unknown

Partition 2 has different physical/logical beginnings (non-Linux?):

     phys=(371, 114, 37) logical=(26586241, 1, 26)

Partition 2 has different physical/logical endings:

     phys=(366, 32, 33) logical=(55803139, 1, 18)

Partition 2 does not end on cylinder boundary.

/dev/sdc3   ?          41          41           0   74  Unknown

Partition 3 has different physical/logical beginnings (non-Linux?):

     phys=(371, 114, 37) logical=(40, 0, 14)

Partition 3 has different physical/logical endings:

     phys=(372, 97, 50) logical=(40, 0, 13)

Partition 3 does not end on cylinder boundary.

/dev/sdc4               1    53673648  1717556736    0  Empty

Partition 4 has different physical/logical beginnings (non-Linux?):

     phys=(0, 0, 0) logical=(0, 0, 1)

Partition 4 has different physical/logical endings:

     phys=(0, 0, 0) logical=(53673647, 1, 32)

Partition 4 does not end on cylinder boundary.

[root@bible ~]#

 

위의 "fdisk -l"의 실행결과를 잘 보시기 바랍니다. 위의 결과에서 /dev/sda는 현재 사용중인 하드디스크의 장치명이고 /dev/sdc라는 32MB용량의 장치가 하나 보입니다. , 방금 리눅스서버에 꼽아둔 USB장치의 장치명이 /dev/sdc에 할당되었다는 것을 알 수 있습니다.

 

, 그럼 이제 마운트를 하여 사용만 하면 됩니다. 따라서 /dev/sdc라는 장치를 처음에 생성해둔 /usb라는 마운트포인터(디렉토리)에 다음과 같이 마운트를 하였습니다. 아래에서 마운트를 하면서 파일시스템 타입으로 vfat을 사용한 것은 필자가 사용하던 USB장치는 윈도우PC에서 파일을 저장하기 위한용도로 사용하였으므로 윈도우 파일시스템 타입을 읽기 위하여 vfat이라고 지정한 것입니다. 하지만 꼭 vfat으로만 해야되는 것은 아니므로 여러분들의 상황에 맞는 파일시스템 타입을 지정하시면 됩니다. 이번 설명에 이어서 ext3타입으로 USB장치를 사용하는 예를 설명하고 있습니다. 참고하시기 바랍니다. 아마도 거의 대부분 필자와 같은 상황일 것이라 판단됩니다.


 

[root@bible /]# mount -t vfat /dev/sdc /usb

[root@bible /]#

 

, 이제 마운트가 정상적으로 되었는가를 확인하기 위하여 다음과 같이 df mount를 각각 차례대로 실행해 보았습니다. 아래 보시는 바와 같이 /dev/sdc라는 장치가 /usb라는 마운트포인트에 vfat이라는 파일시스템 타입으로 마운트가 되어 있다는 것을 알 수 있습니다.



[root@bible usb]# mount

/dev/sda6 on / type ext3 (rw)

none on /proc type proc (rw)

none on /sys type sysfs (rw)

none on /dev/pts type devpts (rw,gid=5,mode=620)

usbfs on /proc/bus/usb type usbfs (rw)

/dev/sda2 on /backup type ext3 (rw)

/dev/sda1 on /boot type ext3 (rw)

none on /dev/shm type tmpfs (rw)

/dev/sda3 on /home type ext3 (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

/dev/sdc on /usb type vfat (rw)

[root@bible usb]#

[root@bible usb]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda6              11G  5.4G  4.5G  55% /

/dev/sda2             4.0G  132M  3.7G   4% /backup

/dev/sda1             124M   16M  102M  14% /boot

none                  125M     0  125M   0% /dev/shm

/dev/sda3             2.1G   40M  1.9G   3% /home

/dev/sdc               31M   24M  7.6M  76% /usb

[root@bible usb]#

 

이제 /usb디렉토리를 통하여 이 장치를 사용할 수있습니다. 다음과 같이 리눅스서버에 있는 /etc/passwd파일을 /usb(USB장치)로 복사해 보았습니다.


 

[root@bible ~]# cp /etc/passwd /usb

[root@bible ~]#

[root@bible ~]# ls -l /usb

total 2

-rwxr-xr-x  1 root root 1980 Feb  8 07:51 passwd

[root@bible ~]#

 

그리고 이번에는 리눅스시스템에 있는 /etc/shadow파일과 /etc/group파일을 각각 USB메모리스틱으로 복사해 보았습니다. 그리고 복사가 되었는가를 확인하기 위하여 "ls -l /usb"를 실행하였습니다.


 

[root@bible ~]# cp /etc/shadow /usb

[root@bible ~]# cp /etc/group /usb

[root@bible ~]#

[root@bible ~]# ls -l /usb

total 5

-rwxr-xr-x  1 root root  740 Feb  8 07:52 group

-rwxr-xr-x  1 root root 1980 Feb  8 07:51 passwd

-rwxr-xr-x  1 root root 1345 Feb  8 07:52 shadow

[root@bible ~]#

 

이상과 같이 USB장치에 복사가 됩니다. , 리눅스시스템에 있는 특정 파일을 USB메모리스틱에 복사하여 저장한 것입니다. , 이제 USB장치의 사용을 종료하였다면 다음과 같이 마운트해제를 시켜주십시요. 마운트된 USB장치의 마운트해제하는 방법은 일반 마운트해제방법과 동일합니다.


 

[root@bible ~]# umount /dev/sdc

[root@bible ~]#

 

그리고 다음과 같이 마운트해제가 정상적으로 되었는가를 확인하기 위하여 df를 실행해 보았습니다.


 

[root@bible ~]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda6              11G  5.4G  4.5G  55% /

/dev/sda2             4.0G  132M  3.7G   4% /backup

/dev/sda1             124M   16M  102M  14% /boot

none                  125M     0  125M   0% /dev/shm

/dev/sda3             2.1G   40M  1.9G   3% /home

[root@bible ~]#

 

USB장치가 마운트 되었을 때 보였던 /dev/sdc장치의 마운트가 해제되어 보이지 않는다는 것을 알 수 있습니다. 이번 절에서 보신바와 같이 USB장치도 일반 장치들과 마찬가지로 리눅스에서 마운트하여 사용할 수 있음을 알 수 있었습니다.


 

 

USB장치를 ext3 타입으로 포맷하여 사용하기

 

앞에서는 USB장치를 vfat타입으로 마운트하여 사용하는 예를 보았습니다. 앞서 말씀드렸듯이 USB장치를 원하는 파일시스템 타입으로 사용할 수 있다고 하였습니다. 이번에는 USB장치를 ext3타입으로 포맷하여 사용하는 예를 보도록 하겠습니다. 방금 사용하였던 USB스틱메모리는 현재 vfat타입으로 포맷이 되어있기 때문에 이를 ext3타입으로 사용하려면 ext3타입에 맞도록 포맷을 해야합니다. 따라서 필자는 다음과 같이 mke2fs 실행시 -j옵션(저널링파일시스템 ext3를 의미함)을 사용하여 ext3타입으로 /dev/sdc장치(USB장치)를 포맷하였습니다.

 

[root@bible ~]# mke2fs -j /dev/sdc

mke2fs 1.35 (28-Feb-2004)

/dev/sdc is entire device, not just one partition!

Proceed anyway? (y,n) y

max_blocks 32768000, rsv_groups = 4000, rsv_gdb = 124

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

8000 inodes, 32000 blocks

1600 blocks (5.00%) reserved for the super user

First data block=1

Maximum filesystem blocks=32768000

4 block groups

8192 blocks per group, 8192 fragments per group

2000 inodes per group

Superblock backups stored on blocks:

        8193, 24577

 

Writing inode tables: done                           

inode.i_blocks = 746, i_size = 67383296

Creating journal (1024 blocks): done

Writing superblocks and filesystem accounting information: done

 

This filesystem will be automatically checked every 20 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

[root@bible ~]#


 

이제 이 USB장치는 ext3타입의 파일시스템으로 포맷이 되었습니다. 그리고 마운트를 하기 위하여 다음과 같이 mount명령어를 실행하였습니다.

 

[root@bible ~]# mount -t ext3 /dev/sdc /usb

[root@bible ~]#

 

위와 같이 마운트를 할 때에 -t옵션다음에 ext3를 지정한 것은 /dev/sdc(USB)장치를 좀 전에 ext3파일시스템 타입으로 포맷하였기 때문입니다. 그리고 다음과 같이 mount명령어를 실행하여 마운트된 상황을 확인하였습니다.


 

[root@bible ~]# mount

/dev/sda6 on / type ext3 (rw)

none on /proc type proc (rw)

none on /sys type sysfs (rw)

none on /dev/pts type devpts (rw,gid=5,mode=620)

usbfs on /proc/bus/usb type usbfs (rw)

/dev/sda2 on /backup type ext3 (rw)

/dev/sda1 on /boot type ext3 (rw)

none on /dev/shm type tmpfs (rw)

/dev/sda3 on /home type ext3 (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

/dev/sdc on /usb type ext3 (rw)

[root@bible ~]#

[root@bible ~]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda6              11G  5.4G  4.5G  55% /

/dev/sda2             4.0G  132M  3.7G   4% /backup

/dev/sda1             124M   16M  102M  14% /boot

none                  125M     0  125M   0% /dev/shm

/dev/sda3             2.1G   40M  1.9G   3% /home

/dev/sdc               31M  1.4M   28M   5% /usb

[root@bible ~]#

 

위의 결과를 확인해 보시면 현재 /dev/sdc라는 USB장치는 ext3파일시스템 타입으로 /usb디렉토리에 마운트되어 있다는 것을 확인할 수 있습니다. , 이제 다음 예와 같이 cp명령어를 이용하여 현재 디렉토리에 있는 ifconfig_docu.txt파일을 /usb로 복사하였습니다.


 

 [root@bible ~]# cp ifconfig_docu.txt  /usb

[root@bible ~]#

[root@bible ~]# ls -l /usb

total 39

-rw-r--r--  1 root root    80 Feb  8 08:25 ifconfig_docu.txt

drwx------  2 root root 12288 Feb  8 08:23 lost+found

[root@bible ~]#

 

그리고 복사된 결과를 확인하였습니다. , 이렇게 우리는 USB장치를 ext3파일시스템타입으로 포맷하고 마운트하여 사용하는 예를 보았습니다. 이렇게 마운트한 USB장치의 마운트해제 또한 앞의 방법과 동일하게 "umount /usb"라고 하시면 됩니다.

 


관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,157 명
  • 현재 강좌수 :  36,515 개
  • 현재 접속자 :  252 명