반응형

 

 

 

참고 문서:
  "문c 블로그 - RCU(Read Copy Update)"
  http://jake.dothome.co.kr/rcu/

 

 

참고 문서: 
  "리눅스 커널 RCU 이해 / 커널연구회"
  https://kernel.bz/boardPost/118679/20

 

반응형
VLAN 설정 테스트한 날짜: 2023년 5월 19일

 

아래는 테스트할 때 사용했던 설정 내용.

$ sudo cat /etc/netplan/00-network-manager-all.yaml

network:
  version: 2
  renderer: NetworkManager
  ethernets:
## eth0에 IP Address 값을 설정하던 안 하던 VLAN 설정과는 관련이 없다.
    eth0:
      addresses: [172.16.1.11/24]
  vlans:
    vlan.2:
      id: 2
      link: eth0
      addresses: [ 172.16.2.11/24]
      

$ sudo netplan try --debug

$ ip addr

0: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 08:33:77:08:3b:2a brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.11/24 brd 172.16.1.255 scope global eth0
       valid_lft forever preferred_lft forever
       
1: vlan.2@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 08:33:77:08:3b:2a brd ff:ff:ff:ff:ff:ff
    inet 172.16.2.11/24 brd 172.16.2.255 scope global vlan.2
       valid_lft forever preferred_lft forever
...

 

L2 Switch에 연결해서 테스트했는데 잘 동작한다.

 

 

VLAN 개념 참고 문서:  https://gettingconnected.tistory.com/79

 

 

블로그 작성자: sejong.jeonjo@gmail.com

 

반응형

 

Boot Ubuntu 22.04 in text mode

아래 예시를 따라서 설정을 변경한다.

$ sudo  cat   /etc/default/grub

... 중간 생략 ...
## 아래 줄 '#' 코멘트를 삭제
GRUB_TERMINAL=console
... 중간 생략 ...

$ sudo  update-grub

$ sudo  systemctl set-default multi-user.target

$ sudo  reboot

Ubuntu OS가 Console mode로 기동될 것이다.

 

Boot Ubuntu 22.04 in graphical mode

아래 예시를 따라서 설정을 변경한다.

$ cat /etc/default/grub

... 중간 생략 ...
## 아래 줄처럼 '#' 문자로 comment 처리
# GRUB_TERMINAL=console
... 중간 생략 ...

$ sudo  update-grub

$ sudo  systemctl set-default graphical.target

$ sudo  reboot

Ubuntu OS가 GUI mode로 기동될 것이다. (Gnome, KDE Desktop 같은 걸루~)

반응형

 

HP DL-380, DL-580 또는 Dell PowerEdge 장비처럼 network port가 4~10개가 넘는 경우

Network 물리 포트와 OS에 할당된 Network port 이름간 관계를 찾기가 어렵다.

 

이럴 때, ethtool 명령으로 특정 포트 이름의 물리 포트가 어떤 것인지 찾을 수 있다.

예를 들어, 아래처럼 명령을 수행하면 eth0 포트에 해당하는 물리 포트의 램프가 아주 빠르게 깜빡깜빡거린다.

 

 

##
## eth0 포트의 램프를 깜빡거리게 한다.
##

$  ethtool -p eth0
^C


##
## eno2 포트의 램프를 깜빡거리게 한다.
##

$  ethtool -p eno2
^C

 

반응형

 


 


테스트한 날짜:  2023년 2월 20일

 

 

 

DD 명령으로 Storage I/O 성능 확인

 

############################################################################
## 쓰기(output) 성능 확인
############################################################################

## Case: 저장 장치의 Cache memory(즉, Buffer memory)를 사용하는 경우
$ dd if=/dev/zero bs=1024 count=5000 of=/mnt/hdd1/my_test_file
5000+0 records in
5000+0 records out
5120000 bytes (5.1 MB, 4.9 MiB) copied, 0.0113672 s, 450 MB/s
$

## Case: 저장 장치의 Cache memory(즉, Buffer memory)를 사용하지 않는 경우,
##       oflag=direct  옵션을 추가한다.
$ dd if=/dev/zero bs=1024 count=5000 of=/mnt/hdd1/my_test_file oflag=direct
5000+0 records in
5000+0 records out
5120000 bytes (5.1 MB, 4.9 MiB) copied, 0.23691 s, 21.6 MB/s


############################################################################
## 읽기(input) 성능 확인
############################################################################

$ dd if=/mnt/hdd1/my_test_file of=/dev/null bs=1024
5000+0 records in
5000+0 records out
5120000 bytes (5.1 MB, 4.9 MiB) copied, 0.0123259 s, 415 MB/s
$

 

 


 

반응형

 

작성일: 2024년 2월 16일

 

방법 A)  timedatectl 명령으로 시스템 전체의 timezone 변경하기

##
## 세계의 모든 timezone 확인하기
##

$ timedatectl list-timezones
Africa/Abidjan
Africa/Accra
...
Asia/Seoul
Asia/Shanghai
Asia/Singapore
...

##
## 서울 시간대로 변경하기
##

$ timedatectl set-timezone Asia/Seoul




##
## timezone이 잘 변경되었는지 확인한다.
##
$ timedatectl show

Timezone=Asia/Seoul
LocalRTC=no
CanNTP=yes
NTP=yes
NTPSynchronized=yes
TimeUSec=Wed 2023-03-15 09:45:38 KST
RTCTimeUSec=Wed 2023-03-15 09:45:38 KST


$ timedatectl status

               Local time: Wed 2023-03-15 09:45:41 KST
           Universal time: Wed 2023-03-15 00:45:41 UTC
                 RTC time: Wed 2023-03-15 00:45:41
                Time zone: Asia/Seoul (KST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
          
$

 

 

방법 B)  환경 변수로 timezone 변경하기

$  cat .bashrc
... 중간 생략 ...
export TZ=Asia/Seoul

$

 

 

 

 

 

반응형

 


작성일: 2024년 8월 7일

 

 

 

Ubuntu 기본 패키지를 설치하고, 부팅할 때 아래와 같이 Network 설정 화면에서 오랜 시간 대기하는 경우가 있다.

A start job is running for wait for network to be configured

 

일단, 부팅되면 root 계정으로 아래와 같이 설정을 수정하고 reboot하면, 빠르게 부팅될 것이다.

 

##
## Network connection을 기다라지 않기 위해 아래와 같이 
## systemd-networkd-wait-online.service 서비스를 비활성화한다.
##
$  systemctl disable systemd-networkd-wait-online.service

##
## 다른 서비스에 의해서 systemd-networkd-wait-online.service 서비스가 활성화되는 것을 막기 위해
## 아래와 같이 systemd-networkd-wait-online.service 서비스를 masking한다.
##
$  systemctl mask systemd-networkd-wait-online.service

 

 

참고: 
  DHCP 설정 Off는 위 이슈와 관련은 없지만, 0.1초라도 부팅 시간을 줄이고자 한다면 DHCP를 off하는 것이 좋다.
  (물론, DHCP를 사용할 일이 없을 때만~~~)
##
## DHCP로 IP address 설정할 필요가 없다면, DHCP 기능을 끈다.
##
$  cat /etc/netplan/00-installer-config.yaml

... 중간 생략 ...

    enp7s0:
      dhcp4: false
      
... 중간 생략 ...

$

 


 

 

 

 

 

 

 

##
## 채용 관련 글
##
제가 일하고 있는 기업 부설연구소에서 저와 같이 연구/개발할 동료를 찾고 있습니다.
(이곳은 개인 블로그라서 기업 이름은 기재하지 않겠습니다. E-mail로 문의주시면 자세한 정보를 공유하겠습니다.)

근무지 위치:
  서울시 서초구 서초동, 3호선 남부터미널역 근처 (전철역 출구에서 회사 입구까지 도보로 328m)
필요한 지식 (아래 내용 중에서 70% 정도를 미리 알고 있다면 빠르게 협업할 수 있음):
  - 운영체제 (학부 3~4학년 때, 컴퓨터공학 운영체제 과목에서 배운 지식 수준):
    예를 들어, Processor, Process 생성(Fork)/종료, Memory, 동시성, 병렬처리, OS kernel driver  
  - Linux OS에서 IPC 구현이 가능
    예를 들어, MSGQ, SHM, Named PIPE 등 활용하여 Process간 Comm.하는 기능 구현이 가능하면 됨. 
  - Algorithm(C언어, C++ 언어로 구현 가능해야 함)
    예를 들어, Hashtable, B-Tree, Qsort 정도를 C 또는 C++로 구현할 수 있을 정도 
  - Network 패킷 처리 지식(Layer 2 ~ 4, Layer 7)
    예를 들어, DHCP Server/Client의 주요 Feature를 구현할 정도의 능력이 있으면 됨.
  - Netfilter, eBPF 등 (IP packet hooking, ethernet packet 처리, UDP/TCP packet 처리)
  - IETF RFC 문서를 잘 읽고 이해하는 능력 ^^
  # 위에 열거한 내용 외에도 제가 여기 블로그에 적은 내용들이 대부분 업무하면서 관련이 있는 주제를 기록한 것이라서
  # 이 블로그에 있는 내용들을 잘 알고 있다면, 저희 연구소에 와서 연구/개발 업무를 수행함에 있어서 어려움이 없을 겁니다.
회사에서 사용하는 프로그래밍 언어:
  - 프로그래밍 언어: C, C++, Go
    (참고: 아직 연구소 동료들이 Rust를 사용하진 않습니다만, 새 언어로써 Rust를 사용하는 것을 고려하는 중)
근무 시간:
  - 출근: 8~10시 사이에서 자유롭게 선택
  - 퇴근: 8시간 근무 후 퇴근 (오후 5시 ~ 7시 사이)
  - 야근 여부: 거의 없음 (내 경우, 올해 상반기 6개월간 7시 이후에 퇴근한 경우가 2회 있었음)
  - 회식 여부: 자유 (1년에 2회 정도 회식하는데, 본인이 집에 가고 싶으면 회식에 안 감. 왜 참석 안 하는지 묻지도 않음)
외근 여부:
  - 신규 프로젝트 멤버 -> 외근 전혀 하지 않음 (나는 신규 프로젝트만 참여해서 지난 1년 동안 한번도 외근 없었음)
  - 상용 프로젝트 멤버 -> 1년에 5회 미만 정도로 외근
팀 워크샵 여부:
  - 팀 워크샵 자체를 진행하지 않음. (워크샵 참석하는 거 싫어하는 개발자 환영 ^^)
연락처:
  - "sejong.jeonjo@gmail.com"  # 궁금한 점은 이 연락처로 문의주세요.
  - 블로그 비밀 댓글 (제가 하루에 한번씩 댓글 확인하고 있음)
원하는 인재상:
  - 우리 부설연구소는 "긴 호흡으로 프로젝트를 진행"하기 때문에 최소 2년간 한 가지 주제를 꾸준하게 연구/개발할 수 있는 개발자를 원함.
  - 우리 부설연구소는 자주적으로 연구 주제를 찾아서 업무를 하기 때문에 능동적으로 생각하고 행동하는 동료를 원함.
  - 차분하게 연구 주제에 몰입하고, 해법을 찾는 것을 즐기는 사람.
내가 느끼는 우리 연구소의 장점:
  - 갑/을 관계가 없음. (제가 근무하고 있는 연구소는 SI업종이 아니라서 갑/을 회사 개념이 없음)
  - 연구소 자체적으로 연구 주제를 발굴하고 시스템을 개발하기 때문에 개발 일정에 대한 스트레스가 적음
  - 빌딩 전체를 우리 회사가 사용하므로 분위기가 산만하지 않음.
  - 근처에 예술의전당, 우면산 둘레길이 있어서 점심 시간에 산책하기 좋음 ^^
  - 연구소 동료들 매너가 Good (2년간 일하면서 한번도 감정에 스크레치 생기거나 얼굴 붉히며 싸운 적 없음 ^^)

 

 

반응형

 


 

테스트한 날짜:  2024년 2월 20일
테스트에 사용한 OS: Ubuntu 22.04

 

Linux 장비를 PPTP Client로 사용하기 위한 방법

Client 입장에서 Linux PC를 PPTP 서버와 GRE Tunnel을 생성하는 방법이다.

 

전제 조건:
    아래 PPTP Client 예제를 수행하기 전에 PPTP 서버가 이미 구성되어 있어야 한다. 
    IPTIME 같은 인터넷 공유기에 PPTP 서버 기능이 있으니까, 쉽게 테스트하려면 IPTIME 공유기를 이용하는 것이 좋다.

 

잠깐 !!
Linux 장비(Ubuntu 22.04)에 PPTP Server를 구축할 계획이라면, 아래 문서를 참고하기 !

 

       https://andrewpage.tistory.com/361

 

##########################################################
## Client Linux OS에서 아래의 명령을 수행
##########################################################

##########################################################
## pptp 관련 패키지를 설치한다.
##########################################################
$  sudo apt install pptp-linux


##########################################################
## /etc/ppp/options 파일을 편집한다.
##########################################################
$  cat  /etc/ppp/options

lock
noauth
nobsdcomp
nodeflate
refuse-pap
refuse-eap
refuse-chap
refuse-mschap
mtu 1400

$

##########################################################
## /etc/ppp/chap-secrets 파일을 편집한다.
##########################################################
$  cat  /etc/ppp/chap-secrets

sejong  PPTP  "my-password" *

$

##########################################################
##  /etc/ppp/peers/sejong 파일을 편집한다.
##########################################################
$  cat  /etc/ppp/peers/sejong

pty "pptp 55.123.12.123 --nolaunchpppd"
name sejong
remotename PPTP
file /etc/ppp/options
ipparam sejong




##########################################################
## << 참고:  이 작업은 필요한 경우만 할 것 !!! >>
##
## 이 내용은 꼭 필요한 것은 아닌데, ppp0 tunnel port가 생성되고 IP address가 설정되고 나서
## static routing table에 추가하고 싶은 내용이 있다면, 
## 아래와 같이 ip-up 파일에 route 명령을 추가한다. 
## (이렇게 하는 것이 정석적 방법인지는 모르겠다.  일단, 나는 이렇게 사용하고 있다.)
##########################################################
$  cat  /etc/ppp/ip-up

... (중간 생략) ...
ip route add 192.168.0.0/24 dev ppp0    # <-- 나는 이 내용을 추가했다.

$


##########################################################
## 이제 설정 작업은 모두 끝났다. pon 명령을 실행하면 잘 동작할 것이다. ^^
##########################################################

##########################################################
## 위에서 설정한 파일을 이용하여 PPTP 서버와 GRE 터널을 만든다.
## 참고로 pon 명령은 "ppp on"을 줄인 말이다.
##########################################################
$  pon  sejong  debug  dump  logfd 2  nodetach

...
...
local  IP address 192.168.0.220
remote IP address 192.168.0.1
Script /etc/ppp/ip-up started (pid 14290)
Script /etc/ppp/ip-up finished (pid 14290), status = 0x0

 

참고로, 위 pon 명령을 수행하면 명령행 prompt가 출력되지 않는다.
왜냐하면 pon 명령이 백그라운드로 동작하는 것이 아니기 때문에 pod 명령을 수행한 터미널은 이 상태로 두고,
다른 터미널을 하나 더 열어서 작업해야 한다.
새 터미널에서 아래와 같이 VPN 서버 쪽으로 ping을 보내본다.

 

$  ping 192.168.0.1

ing 192.168.0.1 -c 1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=4.45 ms

--- 192.168.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 4.448/4.448/4.448/0.000 ms

$

 

 


 

PPTP 및 GRE Tunnel 설정 관련 문서

 

 

PPTP Client - ArchWiki

pptpclient is a program implementing the Microsoft PPTP protocol. As such, it can be used to connect to a Microsoft VPN network (or any PPTP-based VPN) provided by a school or workplace. Installation Install the pptpclient package. Configure To configure p

wiki.archlinux.org

 

 


 

+ Recent posts