우분투 계열 리눅스 배포판에서 시냅틱 패키지 매니저 MergeList 오류 문제
By 반달가면 | 2018년 5월 24일 |
리눅스 민트(Linux Mint)를 사용중에 발생했던 문제다. 해결책을 찾기 위해 인터넷을 헤매다 보니 리눅스 민트만의 문제는 아니고 우분투 또는 다른 우분투 계열 배포판에서도 발생 가능한 문제인듯. 언제 어디서 어떻게 문제가 생겼는지 알 수는 없으나, 시냅틱 패키지 매니저(Synaptic Package Manager)를 실행하는데 오류가 발생해서 패키지 설치를 할 수 없었다. apt-get을 이용한 설치도 불가. 오류 메시지는 대략 아래와 같다. E: Encountered a section with no Package: header E: Problem with MergeList /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_trusty_unive
[리눅스커널][가상파일시스템] 파일 객체: write 연산 세부 동작 분석
By Guillermo Austin Kim | 2019년 3월 21일 |
파일 객체: write 연산 세부 동작 분석 유저 공간에서 write() 함수를 호출할 때 가상 파일시스템에서 어떤 흐름으로 파일 별 write 오퍼레이션을 수행하는지 살펴보겠습니다. 유저 공간에서 리눅스 저수준 함수로 write() 함수를 호출하면 시스템 콜을 발생시켜 커널 공간으로 실행 흐름을 스위칭합니다. 이 후 write()에 해당하는 시스템 콜 핸들러인 sys_write() 함수를 호출합니다. 먼저 sys_write() 함수 선언부와 인자와 반환값을 확인하겠습니다.[https://elixir.bootlin.com/linux/v4.19.30/source/include/linux/syscalls.h]asmlinkage long sys_write(unsigned int fd, const char _
리눅스 민트에서 시스템 전체에 적용되는 bash 설정(bashrc) 수정
By 반달가면 | 2018년 7월 4일 |
각 계정에 따른 bash shell 설정은 ~/.bashrc에 추가해 주면 되겠지만, 시스템 전체에 적용하고 싶은 설정이 있을 경우가 있다. 이 경우, 리눅스 민트(Linux Mint)에서는 /etc/bash.bashrc 파일을 편집해 주면 된다. 리눅스 민트가 우분투 계열이므로 데비안/우분투 또는 다른 데비안/우분투 계열 배포판도 아마 같을 것이라 생각된다. 레드햇 등 다른 배포판은 다를 수도 있겠다. # /etc/bash.bashrc 파일 편집 sudo vi /etc/bash.bashrc 시스템 전체에서 공통적으로 export해서 사용하고 싶은 변수가 있다거나, 명령어를 alias로 지정하고 싶을 때 이 파일을 편집하면 된다.
[라즈베리파이] 시스템 콜 - 매개 변수 점검(시스템 콜 핸들러)
By Guillermo Austin Kim | 2018년 11월 26일 |
리눅스 커널 시스템 콜 핸들러 인터페이스 함수를 열어 보면 수 많은 예외 처리 코드를 볼 수 있습니다. 유저 모드에서 시스템 콜을 호출할 때 잘못된 인자(스트링 갯수, 메모리 주소)를 전달할 수 있기 때문입니다. 먼저 write() 이라는 리눅스 시스템 저수준 함수를 살펴보겠습니다. write() 함수를 호출할 때는 다음 6번 째 줄 코드와 같이 세 가지 인자를 전달해야 합니다.[https://android.googlesource.com/platform/system/core/+/master/init/uevent_listener.cpp]1 ListenerAction UeventListener::RegenerateUeventsForDir(DIR* d,2