Visual Studio Code를 이용해서 라즈베리파이 네이티브 프로젝트를 좀 편하게 빌드하려다 보니 호스트 PC와 라즈베리간 연결할 방법이 필요하였다. 앞서 설명한 용도로 보통 SFTP+SSH, NFS, SAMBA 등을 보통 이요할 수 있는데, SFTP는 친근하지 않고, NFS는 필자의 호스트가 Windows 10 Home이라 별도로 프로그램 설치를 하지 않으면 지원되지 않고 그래서 만만한 SAMBA를 통해서 연동하고자 하였다. 

     

      예전에 분명 정리해서 포스팅 한것 같은데 내용이 보이지 않아 본 게시글을 업데이트 한다. 

     

      우선 리눅스의 SAMBA에 대해서 잠깐 정리하면, 리눅스와 Windows는 서로 다른 파일관리 형태를 띄고 있다. 보통 파일시스템이라 불리는 녀석들인데, Windows에서는 FAT, FAT32, NTFS, EXPAT등의 파일 시스템을 이용하는데 반해서 리눅스의 경우 EXT2, EXT3, EXT4, JFFS, YAFFS등 리눅스에서 파일을 사용 및 관리하기 위한 파일시스템을 이용한다. 이러한 Windows와 Linux의 파일시스템은 서로 호환되지 않으므로, 리눅스 또는 윈도우가 서로 네트워크등을 연결하여 직접적인 파일 사용이 불가능한데, 그래서 시리얼 통신을 이용한 파일 전송(lszrz등 x/y/zomdem), 이더넷을 이용한 FTP를 이용하여 파일을 서로 전송한 이후 자신의 파일시스템에 포함된 상태로 이용하여야 하는 불편함으로 개발되어진 것들중 윈도우가 리눅스에게 접속하여 사용할 수 있도록 연동해주는 도구들이 있었으니, 대표적으로 SAMBA(윈도우-리눅스간 파일전송)과 NFS(네트워크 파일 시스템)이 있다. 

     

      어쨋거나 네트워크를 이용한 연결에 사용될 수 있으며, SAMBA는 윈도우-리눅스간 파일/디렉터리(폴더) 공유라고 한다면 NFS는 특정 OS를 가리지 않고 NFS가 지원되는 모든 시스템에서 네트워크간 연결이 가능하다는 차이가 있다. NFS는 Windows 10 Pro에서는 관련 기능을 지원하고 있다. 

     

    NFS 관련 내용은 아래의 링크를 참조하시라.

    [Windows 10] Windows에서 리눅스 nfs서버 연결하기 - Open Embedded Club (tistory.com)

     

     

    1. 패키지 업데이트

      필자는 현재일 기준(2022년 08월 11일) 라즈베리파이 OS 최근배포본을 이용하고 있다. 

     

      Samba 패키지 설치전에 우선 패키지 저장소 업데이트와 OS를 최신상태로 업데이트 해 주도록 한다. 물론 새로운 패키지를 설치하기 위해서 라즈베리파이가 인터넷에 연결 되어있어야 하겠다.

    pi@raspberrypi:~ $ sudo apt update
    pi@raspberrypi:~ $ sudo apt upgrade

     

    2. 삼바 패키지 설치

      업데이트가 성공적으로 완료되었다면, 삼바패키지를 설치한다.

    pi@raspberrypi:~ $ sudo apt install samba samba-common-bin

     

    3. 삼바 사용자 등록

      삼바 기능을 사용할 사용자를 등록한다. 공개로 설정하여 사용할 수 있지만 보안을 조금이라도 생각한다면, 사용자 지정 형태로 사용하기 바란다. 아래와 같이 입력하여 -a 옵션으로 라즈베리파이 기본 사용자 pi를 추가를 하면서 패스워드를 지정한다. 만약, 여러 명이 사용해야 한다면 모두 추가해주는 것이 좋겠다. 

    pi@raspberrypi:~ $ sudo smbpasswd -a pi

     

    4. 삼바 설정파일 수정

      삼바가 설치되면 smb.conf라는 삼바 설정파일이 /etc/samba 디렉터리 내에 생성이 된다. 해당 파일을 수정하여 공유할 디렉터리를 지정하거나, 접근 가능한 사용자를 지정할 수 있다. 

    pi@raspberrypi:~ $ sudo vim /etc/samba/smb.conf

     

     필자는 pi 사용자 home 디렉터리 전체를 pi 사용자와 공유할 수 있도록 설정하였다. 그래야 vscode에서 좀더 편하게 사용할 수 있으니 말이다.  기존 파이 ㄹ맨 아래에 다음과 같이 추가한다. 설정과 관련된 상세한 옵션은 삼바 맨페이지나 인터넷의 삼바 공식사이트를 통해서 확인하도록 하고 필자가 정의한 내용만 정리하도로 하겠다. 

    # admin users are members of.
    # Please note that you also need to set appropriate Unix permissions
    # to the drivers directory for these users to have write rights in it
    ;   write list = root, @lpadmin

    [pi]
       comment = Pi User
       path = /home/pi/works
       create mask=0777
       directory mask=0777
       browseable = yes
       read only = no
       writeable = yes
       valid users = root, pi

     

    - Comment는 윈도우에서 접속하거나 할때 안내를 위한 텍스트

    - path는 windows와 공유할 디렉터리

       해당 디렉터리의 상위 디렉터리로는 진입이 되지 않는다.

    - create mask, directory mask

       생성될 파일과 디렉터리의 소유권 설정으로 windows에서 디렉터리(폴더)나 파일을 생성할 때 기본 부여되는

       소유권을 의미한다.

    - broeseable는 폴더의 탐색옵션이다.

      브라우징이되지 않도록 하면 해당 폴더에서 추가적인 탐색이 불편할 수도 있다. 

    - read only는 읽기 전용 옵션이다. 단지 파일 읽기만 지원하는 경우라면 설정할 수 있다. 

    - writeable 쓰기 옵션으로 Windows의 사용자가 SAMBA로 제공된 디렉터리에 파일 또는 디렉터리를 기록해야 하는경우.

      이 옵션과 create mask, direcort mask는 붙어다닐 수 밖에 없다.

    - valid users는 해당 디렉터리에 접근가능한 사용자를 등록한다. 필자는 root와 pi 사용자만 접근 가능하도록 했다. 

      물론, 여기에 등록된 사용자라 하더라도 이전에 smbpass에서 등록한 패스워드를 입력해야 진입이 가능하다.

     

    5. 서비스 시작

      삼바 설정이 완료되었다면, 이제 Raspberry에서 Samba 서비스를 시작한다. 아래의 명령 입력후 오류가 없이 프롬프트가 출력되었다면 정상 구동 되고 있다는 것이다. 

    pi@raspberrypi:~ $ sudo service smbd restart

     

    6. 테스트

      우선 Windows 호스트에서 라즈베리파이의 삼바 공유폴더에 접근하려면 라즈베리파이의 IP를 알아야 하겠다. 필자는 무선랜을 사용하고 있으므로 필요한 ip를 확인한다. 

     

    1) 라즈베리파이의 네트워크 IP 확인

    pi@raspberrypi:~ $ ifconfig 
      ... (생략) ...
    wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.0.127  netmask 255.255.255.0  broadcast 192.168.0.255
            inet6 fe80::e6ed:31ac:2efc:282e  prefixlen 64  scopeid 0x20<link>
            ether b8:27:eb:9d:93:1f  txqueuelen 1000  (Ethernet)
            RX packets 911012  bytes 161383060 (153.9 MiB)
            RX errors 0  dropped 1  overruns 0  frame 0
            TX packets 1177408  bytes 1368931560 (1.2 GiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

     

    2) 윈도우에서 접속

    - 탐색기에서 아래와 같이 주소를 입력한다. 

     

    - 공유된 디렉터리가 표시되면 클릭한다.

      공유 폴더를 클릭시 사용자명 및 비번을 입력하라는 메시지가 출력된다.  smbpasswd에서 등록한 사용자 pi와 비번을 입력해준다. 

     

    - 패스워드가 정상적으로 입력되었다면, 아래와 같이 라즈베리파이에서 공유된 디렉터리 내용이 표시된다. 

      이제 디렉터리를 생성해보고, 파일을 생성해 보면 설정이 정상 동작하는 것을 확인할 수 있을 것이다. 

    - test 디렉터리를 생성하고, test 파일을 생성 하였다. 정상적으로 동작하는 것을 볼 수 있다. 

     

      최종 확인을 해보자. 정말  디렉터리와 파일이 생성되었는지 확인을 위해 라즈베리파이에서 해당 디렉터리와 파일을 확인한다. 라즈베리파이 터미널에서 공유 폴더로 이동 후 ls와 tree 명령으로 파일이 존재하는지 확인한다.

    pi@raspberrypi:~/works $ ls -l
    total 4
    drwxrwxrwx 2 pi pi 4096 Aug 10 17:11 test
    pi@raspberrypi:~/works $ tree test/
    test/
    └── test.txt

    0 directories, 1 file
    pi@raspberrypi:~/works $

     

    이 정도면 독자 여러분들도 큰 무리 없이 따라 하실 수 있을거라 생각되므로 여기서 마무리한다. 

     

    조금이라도 삶에 도움이 되었으면 좋겠다. 

    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기