박강민(pr0gr4m) / Linux Kernel Contributor - <Linux Kernel 101 for Beginner>
"리눅스 커널에 관심은 있지만, 커널을 어떻게 공부해야 하는지 모르는 분들을 위해 준비한 시간입니다.
입문자 분들이 리눅스 커널 공부를 시작하는 방법에 대해 소개합니다"
영상: https://youtu.be/96T6OCEqZNk
주최: https://www.facebook.com/groups/InfraEngineer
ARM과 AMD64의 차이에 대해 설명하고
오픈스택에 ARM을 도입하기 위한 커뮤니티 활동을 소개합니다.
1. ARM vs AMD64
2. CISC/RISC 차이
3. 커뮤니티에서 ARM위에 오픈스택을 올리기 위한 노력
- SIG (Special Interest Groups)
- PTG(Project Team Gathering)
01 Docker란 무엇이며, 왜 필요한가?
02 Docker의 핵심 개념과 용어
03 Do(ckerize) it yourself
Docker란?
애플리케이션을 개발(developing)하고, 배포(shipping)하고, 실행(running)하기 위한 Open Platform
OS-level Virtualization(Linux Container)를 제공하기 위한 구현 제품.
애플리케이션과 인프라스트럭처의 의존관계를 분리할 수 있는 방법
가상머신(Virtual Machine)의 단점을 극복할 수 있는 리눅스 컨테이너 기술의 구현
Docker Client : 명령어를 통해 Docker Daemon에 API를 호출하여 Docker Image와 Container를 관리할 수 있는 프로그램
Docker Daemon : Docker API 요청을 수신하여 Docker Object(Image, Container, Network, Volue 등)를 관리할 수 있는 프로세스
Docker Registry : Docker Image를 저장하고 관리하는 공간. Public Registry(ex. Docker Hub)와 Private Registry가 있음.
Dockerfile : Docker Image를 빌드하기 위한 정보 및 명령어가 작성된 파일 (Docker Image를 생성하는 방법 중 하나)
Docker Image : Dockerfile, Docker Registry, 또는 다른 Docker Image로부터 생성된 컨테이너 생성을 위한 Read-only Template
Docker Container : Docker Image 위에서 실행된 특수한 형태의 격리된 프로세스
ARM과 AMD64의 차이에 대해 설명하고
오픈스택에 ARM을 도입하기 위한 커뮤니티 활동을 소개합니다.
1. ARM vs AMD64
2. CISC/RISC 차이
3. 커뮤니티에서 ARM위에 오픈스택을 올리기 위한 노력
- SIG (Special Interest Groups)
- PTG(Project Team Gathering)
01 Docker란 무엇이며, 왜 필요한가?
02 Docker의 핵심 개념과 용어
03 Do(ckerize) it yourself
Docker란?
애플리케이션을 개발(developing)하고, 배포(shipping)하고, 실행(running)하기 위한 Open Platform
OS-level Virtualization(Linux Container)를 제공하기 위한 구현 제품.
애플리케이션과 인프라스트럭처의 의존관계를 분리할 수 있는 방법
가상머신(Virtual Machine)의 단점을 극복할 수 있는 리눅스 컨테이너 기술의 구현
Docker Client : 명령어를 통해 Docker Daemon에 API를 호출하여 Docker Image와 Container를 관리할 수 있는 프로그램
Docker Daemon : Docker API 요청을 수신하여 Docker Object(Image, Container, Network, Volue 등)를 관리할 수 있는 프로세스
Docker Registry : Docker Image를 저장하고 관리하는 공간. Public Registry(ex. Docker Hub)와 Private Registry가 있음.
Dockerfile : Docker Image를 빌드하기 위한 정보 및 명령어가 작성된 파일 (Docker Image를 생성하는 방법 중 하나)
Docker Image : Dockerfile, Docker Registry, 또는 다른 Docker Image로부터 생성된 컨테이너 생성을 위한 Read-only Template
Docker Container : Docker Image 위에서 실행된 특수한 형태의 격리된 프로세스
데브시스터즈의 Cookie Run: OvenBreak 에 적용된 Kubernetes 기반 다중 개발 서버 환경 구축 시스템에 대한 발표입니다.
Container orchestration 기반 개발 환경 구축 시스템의 필요성과, 왜 Kubernetes를 선택했는지, Kubernetes의 개념과 유용한 기능들을 다룹니다. 아울러 구축한 시스템에 대한 데모와, 작업했던 항목들에 대해 리뷰합니다.
*NDC17 발표에서는 데모 동영상을 사용했으나, 슬라이드 캡쳐로 대신합니다.
[2017년 SW 마에스트로 100+ 컨퍼런스]
- 발표자: 오픈스택 한국 커뮤니티 조성수
- 행사 정보: https://www.facebook.com/swmaestro/photos/a.816861878341341.1073741828.812223648805164/1832957773398408/?type=3&theater&ifg=1
SELinux(Security-Enhanced Linux)는 미국 국가 안보국(NSA)에서 개발한 것으로,
관리자가 시스템 엑세스 권한을 효과적으로 제어할 수 있게 하는 Linux 시스템용 보안 아키텍처입니다.
특정 서비스의 구동이 원활하지 않거나 혹은 관리의 번거로움 등으로 인해 SELinux를 Disable 하는 경우가 많은데요,
SELinux를 사용해야 하는 이유와 작동 방식에 대해 설명합니다,
https://cncg-kr.net/ 에서 발표한 내용입니다.
IT 서비스를 구성하는데에는 다양한 자원들(Baremetal server, Virtual machine, network switch, database, 등)이 필요합니다. 이런 자원들은 각각의 관리자등을 통해서 일반적으로 각기 다른 방법들로 관리됩니다. 다만 IaaS, PaaS와 같은 Cloud방법들이 제공되면서 보다 통합된 환경으로 이런 자원들을 관리 하게 되었으나 아직까지도 일반적으로는 이런자원들을은 각기 관리되어 불편함과 문제가 수반 됩니다. 그래서 저희는 이런 다양한 자원과 방법들을 kubernetes로 보다 선언적이며 통합적인 방법으로 만들어서 자동화를 하였고 이 세션에서는 이 내용을 소개하며 어떻게 하면 이런방법들로 접근 할 수 있을지 설명하고 이를 통해 kubernetes 에 더 많은 가능성들에 대해 알아보고자 합니다.
데브시스터즈의 Cookie Run: OvenBreak 에 적용된 Kubernetes 기반 다중 개발 서버 환경 구축 시스템에 대한 발표입니다.
Container orchestration 기반 개발 환경 구축 시스템의 필요성과, 왜 Kubernetes를 선택했는지, Kubernetes의 개념과 유용한 기능들을 다룹니다. 아울러 구축한 시스템에 대한 데모와, 작업했던 항목들에 대해 리뷰합니다.
*NDC17 발표에서는 데모 동영상을 사용했으나, 슬라이드 캡쳐로 대신합니다.
[2017년 SW 마에스트로 100+ 컨퍼런스]
- 발표자: 오픈스택 한국 커뮤니티 조성수
- 행사 정보: https://www.facebook.com/swmaestro/photos/a.816861878341341.1073741828.812223648805164/1832957773398408/?type=3&theater&ifg=1
SELinux(Security-Enhanced Linux)는 미국 국가 안보국(NSA)에서 개발한 것으로,
관리자가 시스템 엑세스 권한을 효과적으로 제어할 수 있게 하는 Linux 시스템용 보안 아키텍처입니다.
특정 서비스의 구동이 원활하지 않거나 혹은 관리의 번거로움 등으로 인해 SELinux를 Disable 하는 경우가 많은데요,
SELinux를 사용해야 하는 이유와 작동 방식에 대해 설명합니다,
https://cncg-kr.net/ 에서 발표한 내용입니다.
IT 서비스를 구성하는데에는 다양한 자원들(Baremetal server, Virtual machine, network switch, database, 등)이 필요합니다. 이런 자원들은 각각의 관리자등을 통해서 일반적으로 각기 다른 방법들로 관리됩니다. 다만 IaaS, PaaS와 같은 Cloud방법들이 제공되면서 보다 통합된 환경으로 이런 자원들을 관리 하게 되었으나 아직까지도 일반적으로는 이런자원들을은 각기 관리되어 불편함과 문제가 수반 됩니다. 그래서 저희는 이런 다양한 자원과 방법들을 kubernetes로 보다 선언적이며 통합적인 방법으로 만들어서 자동화를 하였고 이 세션에서는 이 내용을 소개하며 어떻게 하면 이런방법들로 접근 할 수 있을지 설명하고 이를 통해 kubernetes 에 더 많은 가능성들에 대해 알아보고자 합니다.
Watch video on Youtube! : http://www.youtube.com/watch?v=aZDKyNtSqOo
장소 : 서울시 용산구 원효로 3가 53-5 청진 빌딩 10층 1004호 TERA TEC 사무실
시간 : 2010년 1월 30일 토요일 오후 2:00
발표 : 김성윤님, 강분도님, 노태상님 - 리눅스 커널 - 개요 및 이슈,
세미나 정보 : http://www.ubuntu.or.kr/viewtopic.php...
Place : TERA TEC Office, 1004, 10th floor, Cheongjin Bldg., Wonhyoro 3-ga, Yongsan-gu, Seoul, Korea
Time : 14:00, Saturday, 2010Y 1M 30D
Presentation : Kim Seongyun, Kang Bundo, Noh Taesang - Linux Kernel - Outline and issue
Seminar Info : http://www.ubuntu.or.kr/viewtopic.php...
About Ubuntu
Ubuntu is an ancient African word meaning 'humanity to others'.
It also means 'I am what I am because of who we all are'.
The Ubuntu operating system brings the spirit of Ubuntu to the world of computers.
http://www.ubuntu.com
About Ubuntu Korea Community
We want to be happy using Ubuntu.
'Korean Ubuntu User Forum' Welcomes your voluntary supports.
http://www.ubuntu-kr.org
레드햇의 Etsuji Nakai 씨의 "OpenStack: Inside Out" 한글 번역본입니다.
다시 한번 좋은 문서를 공유해주신 Etsuji Nakai 씨에게 감사를 드립니다.
http://www.slideshare.net/enakai/open-stack-insideoutv10
오픈 소스 Actor Framework 인 Akka.NET 을 통해 온라인 게임 서버를 어떻게 구현할 수 있는지를 설명합니다. Actor Model 에 대한 기본 이해부터 Scale-out 가능한 게임 서버 구축까지 전반적인 내용에 대해 알 수 있습니다. 설명을 위해 클라이언트는 Unity3D 를 사용할 예정입니다.
조준희 / Cisco - <삐약삐약 네트워크 엔지니어 이야기>
"그저 전공 공부만 하던 꿈이 없던 대학생이 네트워크엔지니어가 되는 과정과,
주니어인 제가 생각하는 네트워크 엔지니어에 대해 이야기합니다."
영상: https://youtu.be/D259i3pBYLA
주최: https://www.facebook.com/groups/InfraEngineer
이성민 / Netflix - [특별 발표]<시니어가 들려주는 "내가 알고 있는 걸 당신도 알게 된다면">
"모든 엔지니어는 실패를 통해 성장하고 저 또한 그랬습니다.
제가 주니어 때 알았다면 좋았을 이야기들, 오늘 이 자리에서 나누어보고자 합니다."
영상: https://youtu.be/MXl_t1vjkyU
주최: https://www.facebook.com/groups/InfraEngineer
https://www.facebook.com/groups/InfraEngineer
GIF pack include version
https://docs.google.com/presentation/d/1BTwGPUG6KGwc3xoW1_vU7CmloHXW-ardytNWomPdSy4/edit?usp=sharing
8. System Call
User Application
open
Library(x86,arm,…)
Interrupt Vector
read exit
fork
write
sys_open sys_read sys_exit
sys_clone
sys_write
vfs_open vfs_read do_exit
kernel_clone
vfs_write
File System (ext/proc/debugfs/…) Kernel Driver
User
Space
Kernel
Space
virtual filesystem
11. More?
• 다음 함수들을 호출했을 때 커널에서 어떤 함수가 호출되는지 조
사하기
• fork, vfork, pthread_create, execl, exit, open, read, write, close, malloc, mmap
• 가상머신에 리눅스를 설치한 후, 직접 커널을 빌드해서 부팅
• Linux Kernel Build - Linux Kernel Analysis (pr0gr4m.github.io)
• 커널 소스에 자기가 만든 시스템콜을 새로 추가하고, 유저 스페이
스에서 해당 시스템콜을 사용해보기
• [Linux Kernel 5] system call 추가하기 (tistory.com)
14. How to Study
• 커널에 적용되어 있는 개념과 기능들을 공부합니다
• 커널에 정의된 구조체와 함수가 어떤 역할을 하는지 공부합니다
• 커널 함수들이 언제 어떻게 동작하는지 트레이싱합니다
• 커널 소스코드를 주석과 커밋로그를 참고하여 분석합니다
• 커널 컨트리뷰트를 수행합니다
19. Basic
• struct task_struct
• 커널에서 프로세스/쓰레드를 관리하기 위한 구조체
• struct mm_struct
• 프로세스에 할당된 메모리를 관리하기 위한 구조체
• struct irq_desc
• 인터럽트 요청을 표현하기 위한 디스크립터 구조체
• struct sk_buff
• 소켓 버퍼를 관리하기 위한 구조체
• kernel_clone()
• 새로운 프로세스/쓰레드를 만들기 위한 함수
• kmalloc()
• 커널에서 메모리를 할당받기 위한 함수
• request_irq()
• 인터럽트 핸들러를 등록하는 함수
• inet_init()
• 여러 네트워크 프로토콜들을 초기화하는 함수
20. More and More
• 방금 전에 소개된 구조체와 함수들을 엘릭서에서 찾아보고 주석
을 참고하여 커널에서 어떤 역할을 하는지 조사하기
• 커널을 수정하여 시스템에서 kernel_clone() 함수가 몇 번 호출되
었는지 카운팅하고, 새로운 시스템콜 get_kernel_clone_count() 만
들어 유저 스페이스에서 kernel_clone() 함수가 호출된 횟수 구하
기
• 커널을 수정하여 수신하는 패킷들 중 로컬 호스트로 들어오는 패
킷들을 다음 그림과 같이 덤프하여 커널 메시지로 출력하기
• ip_local_deliver_finish()
• dmesg –w
21. Contribute
• 빌드 환경 구축
• 소스 코드 분석
• commit target 발견
• 소스 코드 수정 및 테스트
• git patch 파일 생성
• patch mail 발송
• review에 따라 patch 재생성
• accept or reject
22. Commit
• Fix Typo (오타 수정)
• Cleanup
• 코드 스타일 교정
• 불필요한 코드 제거
• 사용하지 않는 변수 제거
• 변수/함수 타입 변경
• Optimize (최적화)
• Improve (성능 향상)
• Bugfix (버그 수정) - syzbot
• Introduce (새로운 컨셉)
23. Patch Mail
• 어떻게 리눅스 커널 개발을 하는가 — The Linux Kernel
documentation
• [Linux Kernel] 리눅스 커널 개발 가이드: Introduction
(hyeyoo.com/110)
• Linux Kernel 개발참여방법과 문화 (Contribution)
(slideshare.net/UbuntuKorea/linux-kernel-contribution)
• 리눅스 커널 패치와 커밋 - YES24