Linux 9

[Linux] Samba

개요 회사에서 서버를 관리하면서 Samba를 설치하고 관리하게 되었다. 이번 기회에 Samba에 대해서 정리하고 장단점을 짧게 살펴보고자 한다. 정의 먼저, Samba는 뭔가? 삼바(samba)는 Windows PC에서 Linux 또는 UNIX 서버에 접속하여 파일이나 프린터를 공유하여 사용할 수 있도록 해 주는 소프트웨어이다. 1991년 호주의 박사과정 학생이었던 앤드루 트리젤(Andrew Tridgell)이 개발하였다. 출처: https://ko.wikipedia.org/wiki/%EC%82%BC%EB%B0%94_(%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4) Linux와 Windows가 자유롭게 파일 공유를 할 수 있게 한다고 이해하면 편할 것이다. 이번 포스팅..

Linux 2024.01.30

[Ubuntu 22.04.3 LTS] 라즈베리파이 HDD 마운트

이번에 NAS 서버를 구성하기 위해서 unbuntu가 설치된 라즈베리 파이에 HDD를 부착했다. HDD 선정 난 씨게이트 바라쿠다 8TB를 구매했다. 일단, wd랑 씨게이트 둘 중에서 고민했는데 아래 글을 보고 씨게이트를 구매하기로 확정했다. https://blog.naver.com/dummy_98/222295756269 HDD 오해와 진실 그리고 선택 - 1부(불량율) 많은 사람들이 하드웨어 포럼에 와서 "어느 HDD가 좋냐"는 질문을 수없이 던진다. 그때 마다 ... blog.naver.com 관련 글도 굉장히 유용하니 참고하면 좋다. 그리고 나서 5400rpm과 7200rpm 중에 고민했는데 거실에 설치할 거라서 소음 이슈가 있을까봐 5400rpm으로 했다. 그리고 가격도 더 저렴한 것 같다. 해외..

Linux 2023.10.24

[Linux] 라즈베리파이 원격 접속

개요 라즈베리파이를 사서 웹 서버를 구축하려고 했다. 내부망으로 원격 접속하게 하는 것은 쉬웠으나, 외부망에서도 원격 접속하는 것은 생각보다 어려웠다. 나는 ssh를 통해서 원격 접속을 했다. 그리고, ddns 서버, 포트 포워딩을 이용하여 외부망에서 원격 접속이 가능하게끔 했다. OpenSSH 먼저, ssh를 통해서 접속을 하려면, 다음과 같은 명령어를 입력해주면 된다. apt -y install openssh-server 그 후, 다음 명령어를 사용하여 ssh 서비스를 활성화시켜야 한다. systemctl enable ssh 기본적으로 ssh의 port는 22번으로 설정되어 있는데 이를 그대로 사용하면, 중국 쪽에서 접속 시도가 많이 발생한다고 한다. 그러므로, 나는 ssh의 port를 바꿔줄 것이다..

Linux 2023.10.09

[디버깅을 통해 배우는 리눅스 커널의 구조와 원리1] 라즈비안 4.19 깔기

몇 달째 아이쇼핑하던 디버깅을 통해 배우는 리눅스 커널의 구조와 원리1을 구매했다. 그리고 나서 Raspberry pi4에 2019-07-10-raspbian-buster-full.img를 설치하려고 했다. https://downloads.raspberrypi.org/raspbian_full/images/raspbian_full-2019-07-12/ Index of /raspbian_full/images/raspbian_full-2019-07-12 downloads.raspberrypi.org 예전 kernel 버전의 이미지들은 위의 링크에 있다. 문제 발생 근데 웬걸 부팅을 할 때, start4.elf is not compatible이라고 하면서 이상한 메세지들이 계속 떴다. 그래서 알아보니, 옛날 버..

Linux 2023.09.01

[Device Driver] GPIO without device tree 2편

개요 지난 글에서는 sysfs interface를 사용해서 gpio를 다루는 법에 대해서 공부해봤다. 이번에는 gpio API를 사용해서 device driver를 만들어 볼 것이다. 저번에 gpio를 다루는 법에는 크게 두 가지가 있다고 했다. Integer-based interface와 descriptor-based interface. 이번에 하는 방법도 integer-based interface이다. gpiod_* vs gpio_* methods in the Linux Kernel 해당 글에서 말하고 있는 gpiod API가 descriptor-based interface이고 gpio API가 integer-based interface이다. Integer-based interface vs descr..

Linux 2023.09.01

[Device Driver] GPIO without device tree 1편

개요 linux device driver에 대해서 공부하면서 gpio를 다뤄보고 싶었다. 내가 강의를 들으면서 강사분이 임베디드는 gpio를 다루면 절반은 한 거라고 하셨다. 그만큼 gpio를 다루기 위해서 알아야 하는 기본지식이 많다. 그렇지만 그렇다고 해서 또 그럼 이걸 알면 나머지는 쉬운가..? 절대 아니다. 그냥 첫 걸음을 내딛는 것 같다. GPIO를 다루는 방법 Gpio를 다룰려면 뭘 해야 할까..? 이게 내가 처음에 gpio에 대해서 굉장히 고민했던 부분이었다. 왜냐면 gpio를 다루는 법에 대해서 명료하게 이야기 해주는 곳이 없었다. 그러나, kernel.org라는 공식 사이트에서 크게 두 가지 방법이 있다고 한다. Descriptor-based interface Integer-based i..

Linux 2023.09.01

[Device Driver] I2C device driver

해당 글은 다음 글을 참조하여 쓰여짐. https://embetronicx.com/tutorials/linux/device-drivers/i2c-linux-device-driver-using-raspberry-pi/ 또한, 본 예제에서는 SSD1306을 사용하고 있음. I2C란? I2C bus는 사용하기 쉬워서 많이 쓰인다. I2C bus에는 하나 이상의 master가 있을 수 있고, 여러 개의 I2C기기를 연결하기 위해서 두개의 pull-up register만 필요하다. I2C는 하나의 비트를 읽고 쓰는 function 외에는 Start, Stop 조건을 생성해주기만 하면 되므로 굉장히 느린 속도의 GPIO pin을 가진 microcontroller도 사용할 수 있다. 기본적인 I2C 통신은 1 바이트..

Linux 2023.09.01

[Device Driver] Platform Device

platform Device란 무엇인가? Platform device driver는 무엇이고 왜 쓰는가..? 이게 내가 처음 platform device driver에 대해서 공부하기 시작했을 때에 들었던 의문이고 오랫동안 풀리지 않던 궁금증이었다. 인터넷에 찾아보면 다음과 같은 정의가 나온다. Platform drivers 플랫폼 디바이스는 struct platform_device 로 정의되며 에서 찾을 수 있다. 이러한 장치는 가상 "플랫폼 버스"에 연결된 것으로 간주된다. 출처: '대체 이게 뭔소리야...?' 라는 게 내가 처음 이 문장을 보고 생각했던 것이었다. 왜냐면 이 문장을 이해하기 위해서는 device model에 대한 기본지식이 있어야 하기 때문이다. Device model Device ..

Linux 2023.08.02

[Device Driver] 가장 기본적인 device driver

오늘은 아주아주 간단한 device driver 예제를 작성해보고자 한다. Device Driver란? 디바이스 드라이버 : 시스템이 지원하는 하드웨어를 프로그램에서 사용할 수 있도록 커널에서 제공하는 라이브러리 간단하게 말하면 응용프로그램에서 하드웨어 직접적으로 접근하지 못하게 설계되어 있어서 device driver를 통해서 우회하는 것이다. 원래는 시스템 호출 방식만이 존재하였으나 시스템에서 사용하는 하드웨어가 늘어나면서 문제가 발생하면서 디바이스 드라이버를 사용. 그냥 한 마디로 하면 하드웨어에 접근하려고 device driver를 작성한다. 그럼 거두절미 하고 일단 코드를 작성해보자. #include #include #include static int __init my_init(void){ pr..

Linux 2023.07.05