[Linux Desktop] Elementary OS를 ESXi 6.5에 설치해 보기
By 지훈현서 | 2018년 12월 1일 |
바로 전 블로그에서 리눅스 데스크탑에 대해 생각을 해보았습니다. 이번에는 그 중에 하나인 Elementary OS 를 ESXi 6.5 에 설치를 해 보았습니다. 설치를 마치고 VMTools까지 잘 마무리 한 다음 모습입니다. 요즘 개인용 ESXi 서버에 가상 Mac 을 제외하고는 모든 다른 리눅스나 윈도우를 설치하면서 작업을 가속화 하고 있습니다.(궁극적인 목적은 1-box DevOps 환경을 갖추는 것입니다. 언제고 해당 주제로 할 날이 오겠지요) 그 일환으로 Elementary OS를 설치해 봅니다. 위의 홈페이지에 들어갔습니다. $1 주고 사려다가 $10 주고 구입했습니다. 나중에 돌려보니 충분히 가볍더군요. 2개의 CPU에 2G 메모리 20GB 하드 용량으로 설정하고 다운받은 iso 로 부
[프로세스] 실행 중인 cpu 정보 업데이트(커널 4.9.65 )
By Guillermo Austin Kim | 2018년 2월 23일 |
ARM64 비트 리눅스 커널 4.9.65 버전에서 아래 구조체가 변경됐습니다.특히 해당 프로세스가 돌고 있던 CPU 정보를 담고 있는 int cpu 멤버가 사라졌는데요.crash64> struct thread_infostruct thread_info { unsigned long flags; mm_segment_t addr_limit; int preempt_count;} 기존 Linux version 4.6.0 버전crash64> p linux_bannerlinux_banner = $1 = "Linux version 4.6.0 (sudhakar.koppiset@ubuntu) (gcc version 5.2.1 20151005 (Linaro GCC 5.2-2015.11-2) ) #1
[라즈베리파이] 시스템 콜 - ARM 프로세서 관점 시스템 콜 처리
By Guillermo Austin Kim | 2018년 11월 6일 |
리눅스 시스템에서 시스템 콜을 어떻게 구현했는지 코드를 따라가면 어셈블리 코드를 만나게 됩니다.보통 어셈블리 코드는 ARM 프로세서 입장에서 실행하는 동작을 구현하는 경우가 많습니다. 어셈블리 코드로 구현되어 있다는 것은 시스템 콜이 아키텍처(ARM, x86) 동작과 연관이 있다는 의미입니다. 라즈베리파이는 ARM 아키텍처에서 구동하므로 ARM(Aarch32, ARM 32비트) 프로세서 기준으로 시스템콜이 어떻게 동작하는지 알아봅시다. ARM 프로세서 입장에서 시스템콜 동작을 더 자세히 알아보려면 ARM 프로세스 모드에 대해 살펴볼 필요가 있습니다. ARM 프로세서는 Supervisor, FIQ, IRQ, ABORT, UNDEF, USER, 6가지 모드를 지원하며 각 모드 별 레지스터 세트를 저장하고 있습
[라즈베리파이] 동기화 - 스핀락(spinlock): spin_lock() 함수 분석
By Guillermo Austin Kim | 2018년 12월 23일 |
스핀락을 획득할 때 쓰는 spin_lock()와 함수의 선언부를 봅시다.static __always_inline void spin_lock(spinlock_t *lock); 입력 인자는 포인터 타입 lock 변수이며 spinlock_t 구조체입니다. lock이란 변수가 가르키는 메모리 공간에 스핀락 인스턴스가 있는 겁니다. 함수 선언부가 void이니 반환 값은 없습니다. __always_inline 매크로로 선언했으니 커널 함수 내에서 자주 호출되는 함수임을 알 수 있습니다. 다음은 스핀락을 해제할 때 쓰는 spin_unlock()와 함수의 선언부를 봅시다.static __always_inline void spin_unlock(spinlock_t *lock); spin_lock() 함수와 마찬가지로