리눅스 민트 17.3에서 인텔 I218-LM 이더넷 드라이버 설치
By 반달가면 | 2017년 1월 10일 |
작업용으로 사용하기 위해 HP Z440 워크스테이션에 우분투 14.04 LTS 기반의 배포판인 리눅스 민트 17.3을 설치하였으나, 네트워크 아답터가 제대로 동작하지 않는 문제가 발생했다 -_-; 먼저 이더넷 아답터 종류를 알아보았다. 터미널창에서 아래와 같이 입력 # PCI 장치 목록에서 네트워크 아답터 확인 lspci | grep Ethernet 결과를 보니 인텔 I218-LM 기가비트 이더넷 어댑터다. 인터넷을 한참 뒤져 본 결과, 해결 방법을 찾았다. 인텔에서 드라이버를 다운로드해서 설치해야 한다. 다른 USB 네트워크 아답터를 이용하던가 해서 먼저 어떻게든 인터넷에 연결은 해야 한다. 연결이 되었으면 우선 build essential 패키지를 설치. sudo apt-ge
리눅스에서 cp 명령으로 복사를 하다가 중단한 것을 나중에 재개하는 문제
By 반달가면 | 2019년 3월 12일 |
cp 명령으로 복잡한 디렉토리 구조의 엄청 많은 파일을 복사하던 중에 시간이 없어서 중단하고 내일 다시 이어서 복사를 진행해야 하는 상황이 벌어졌을 경우에 대한 내용이다. 가끔 이런 일이 벌어지는 관계로 작업 절차를 정리해 두기로. # ~/src 디렉토리의 내용 전체를 ~/backup 디렉토리로 복사 cp -r ~/src ~/backup 예를 들어 ~/src 디렉토리를 ~/backup 디렉토리 하위에 복사를 하고 있던 중에 ctrl-c 눌러서 중단을 했는데, 이미 복사된 것들을 다 지우고 다시 처음부터 복사하자니 그동안 들인 시간이 아깝다. 문제는 파일이 워낙 많다 보니, 대체 어느 파일을 복사하다가 중간에 끊어졌느냐를 찾아야 한다는 점. find 명령을 이용해서 ~/backup 하위에서
[bash: function] 함수의 반환값을 변수에 할당할 때 유의할 점
By 반달가면 | 2017년 9월 7일 |
셸 스크립트에서 함수(function)를 사용하다가 간혹 실수할 때가 있어서 정리해 두기로. 우선 함수에 대한 기본적인 내용은 이전 게시물을 참고하자. 여기로 함수에서 뭔가 작업을 한 결과를 변수에 저장하는 경우를 생각해 보자. 함수 test_func에서 도출된 결과값을 변수 test_val에 저장한다면 아래와 같은 모양일 것이다. # 함수 정의 function test_func() { ... } # 결과값을 변수에 할당 test_val=`test_func` 위와 같이 역따옴표(`)를 이용해서 함수를 호출하고 그 결과를 변수에 할당할 경우, 함수 안에서 해당 결과값은 echo 명령으로 출력하도록 해야 한다. 개인적으로 아무 생각 없이 echo 대신 return을 쓰는 바람에 오동작
[라즈베리파이] 동기화 - 스핀락(spinlock): 스핀락 중복 획득 시 동작
By Guillermo Austin Kim | 2018년 12월 25일 |
이전 시간까지 스핀락을 획득하고 해제하는 기본 동작만을 확인했습니다. 실전 개발에서는 스핀락을 다른 프로세스가 접근하는 동작에서 예상치 못한 문제를 볼 수 있습니다. ftrace 로그로 커널을 디버깅하면 스핀락을 바로 획득할 때 보다 스핀락을 얻지 못해 기다리는 빈도가 훨씬 높습니다. 스핀락을 제대로 이해하려면 스핀락을 누군가 획득한 다음 다른 프로세스가 같은 스핀락을 얻기 위해 기다릴 때 어떤 동작을 하는지 상세히 분석할 필요가 있습니다. 그동안 이미 분석한 어셈블리 코드는 될 수 있는 대로 넘어가고 스핀락 중복 획득 시 스핀락이 어떤 동작을 하는지 초점을 맞춰서 코드를 살펴보겠습니다.