2020-08-12

gitlab-ce naver 메일 설정

 


# GITLAB CE 에 네이버 이메일 설정

sudo /etc/gitlab/gitlab.rb

------------

....

 gitlab_rails['gitlab_email_from'] = '로그인ID@naver.com'
 gitlab_rails['gitlab_email_display_name'] = '표기 이름'
 gitlab_rails['gitlab_email_reply_to'] = '로그인ID@naver.com'

....

 gitlab_rails['smtp_enable'] = true
 gitlab_rails['smtp_address'] = "smtp.naver.com"
 gitlab_rails['smtp_port'] = 465
 gitlab_rails['smtp_user_name'] = "로그인ID"
 gitlab_rails['smtp_password'] = "비밀번호"
 gitlab_rails['smtp_domain'] = "naver.com"
 gitlab_rails['smtp_authentication'] = "login"
 gitlab_rails['smtp_enable_starttls_auto'] = true
 gitlab_rails['smtp_tls'] = true

.....

 gitlab_rails['smtp_openssl_verify_mode'] = 'none'




2020-06-03

systemd

yocto systemd

리눅스 부팅 및 운영시, 서비스라는 컨셉으로 백그라운드에서 실행되는 것,
네트워크 설정, dhcp서버 운영, 방화벽, crond, 디바이스드라이버 트리거링
등등,
모든 기능들을 비슷한 설정파일과 실행방법으로 표준화? 통일화? 
각 서비스설정파일들에 스크립트도 연결가능하고, 서비스간 종속성도 정의 가능함.

이 서비스를 이용하여, 이더넷 1포트로 공유기구성 할것임.
1. network 설정 (vlan, dhcpc)
2. dnsmasq ==> 하부기기 dhcpd서비스
3. iptables ==> nat기능


# networkd.service
/etc/systemd/network 폴더에 99-default.link로 되어있고

99-default.link -> /dev/null 링크파일만 있다. 
그럼에도 eth0, eth1이 자동으로 살고, dhcp로 설정되어있다. 아마 드라이버단에서 올라온 eth장치들의 기본 설정인가보다.

인터넷에서 systemd networkd를 검색하면 다양한 설정방법이 있다.
https://wiki.archlinux.org/index.php/VLAN
여기 나온것들은 
/etc/systemd/network/eno1.network
이런이름의 이더넷장치.network 이다.
그리고,
/etc/systemd/network/eno1.100.netdev
과같은 이더넷장치.netdev 파일이 있다.

이 파일들은 yocto networkd 관련 recipe 에 추가해주어야 하는데,
급해서 그냥 만들어 넣었으나, 설정파일이 적용이 안되는 현상이 있었다.
위에 설명헌 99-default.link를 보고, 앞세 숫자를 쓰면 적용되었다.
그래서 만든 파일리스트.
-rw-r--r-- 1 root root   86 Jun  2 08:56 20-eth0.network
-rw-r--r-- 1 root root   66 Jun  2 09:43 21-eth0.101.network
-rw-r--r-- 1 root root   78 Jun  2 05:38 22-eth0.102.network
lrwxrwxrwx 1 root root    9 Jun  2 03:48 99-default.link -> /dev/null
-rw-r--r-- 1 root root   92 Jun  2 03:46 en.network
-rw-r--r-- 1 root root   49 Jun  2 05:33 eth0.101.netdev
-rw-r--r-- 1 root root   48 Jun  2 05:33 eth0.102.netdev
-rw-r--r-- 1 root root   94 Jun  2 03:46 wlan.network

network파일들에만 숫자를 붙였다.

결국, systemd가 서비스하는 networkd라는 서비스는 
/etc/systemd/network/파일들이 있으면, 그것을 토대로 네트워크 설정을 하는것이다.

root@imx6ull14x14evk:/etc/systemd/network# cat 20-eth0.network
[Match]
Name=eth0
KernelCommandLine=!nfsroot

[Network]
VLAN=eth0.101
VLAN=eth0.102

root@imx6ull14x14evk:/etc/systemd/network# cat 21-eth0.101.network
[Match]
Name=eth0.101

[Network]
DHCP=yes

[DHCP]
UseRoutes=true

root@imx6ull14x14evk:/etc/systemd/network# cat 22-eth0.102.network
[Match]
Name=eth0.102

[Network]
DHCP=no

[Address]
Address=192.168.102.1/24

root@imx6ull14x14evk:/etc/systemd/network# cat eth0.101.netdev
[NetDev]
Name=eth0.101
Kind=vlan

[VLAN]
Id=101

root@imx6ull14x14evk:/etc/systemd/network# cat eth0.102.netdev
[NetDev]
Name=eth0.102
Kind=vlan

[VLAN]
Id=102

여기까지 하면 eth0포트로 vlan 2개를 생성하고, eth0.101을 dhcpc로 ip를 받아오는 설정
eth0.102를 192.168.102.1로 설정하는것까지 된다.

공유기 기능을 위해서는 아이피 포워딩을 1로 만들어줘야한다. 이 설정은
/etc/sysctl.conf 파일안에 있다.
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
물론 이 설정도 yocto recipe에 추가해야함, 어디서하는지는 찾아보자.

다음은 eth0.102 포트로 dhcpd서비스를 구성해야하는데
dhcpd보다 dns캐쉬도 가능한 dnsmasq를 systemd로 구성해야하는데,
yocto에 ADD PACKAGE로 dnsmasq를 추가해서 빌드했다면, 기본구성은 있다.
단, conf가 기본값이므로, 변경시켜줘야한다.
위치는 /etc/dnsmasq.conf
모두 주석이라 지우기도 뭐하고해서, 맨 아래 다음과같이 추가함.
resolv-file=/etc/resolv.conf
interface=eth0.102
listen-address=127.0.0.1
dhcp-range=192.168.102.1,192.168.102.254,12h
물론 이 설정도 yocto recipe에 추가해야함, 어디서하는지는 찾아보자.

다음은 iptables로 nat와 마스커레이딩 룰을 추가해줘야 한다.
iptables는 systemd 파일이 없었다. 왜 없었지..

iptables.service 이것이 서비스파일인데 없어서, 
/lib/systemd/system/iptables.service 이걸 복사해다가
/etc/systemd/system 폴더에 넣음

내용을 보면
ExecStart=/usr/sbin/iptables-restore /etc/iptables/iptables.rules 룰 위치설정 기본값이므로
그곳에 rules파일이 있음, 이 내부에 필요룰을 넣어야하나,
룰 쓰는 문법이 까다로움.
직접쓰는 문법은있음.
iptables -P FORWARD ACCEPT
iptables --table nat -A POSTROUTING -o eth0.101 -j MASQUERADE
이렇게 입력하면, 커널내부규직에 룰이 세팅됨,
이걸 읽어서 rules파일로 넣는명령이 있음.
iptables-save > /etc/iptables/iptables.rules
cat /etc/iptables/iptables.rules 해서 내용을 보면,
# Generated by iptables-save v1.8.3 on Tue Jun  2 11:17:34 2020
*nat
:PREROUTING ACCEPT [167:54020]
:INPUT ACCEPT [40:4307]
:OUTPUT ACCEPT [38:2423]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth0.101 -j MASQUERADE
COMMIT
# Completed on Tue Jun  2 11:17:34 2020
# Generated by iptables-save v1.8.3 on Tue Jun  2 11:17:34 2020
*mangle
:PREROUTING ACCEPT [1176474:2149394260]
:INPUT ACCEPT [347:52516]
:FORWARD ACCEPT [1176111:2149340196]
:OUTPUT ACCEPT [323:37311]
:POSTROUTING ACCEPT [1176443:2149377969]
COMMIT
# Completed on Tue Jun  2 11:17:34 2020
# Generated by iptables-save v1.8.3 on Tue Jun  2 11:17:34 2020
*filter
:INPUT ACCEPT [161:26667]
:FORWARD ACCEPT [1175701:2149218077]
:OUTPUT ACCEPT [140:16903]
COMMIT
# Completed on Tue Jun  2 11:17:34 2020

이런 복잡한 내용으로 채워짐.
이 파일들, 내용 위치 생성등 모두 yocto recipe에 추가해야함, 어디서하는지는 찾아보자.


yocto recipe 알아야할 내용.
1. 패키지 추가방법
2. 관련 설정파일 추가방법

2020-06-02

주요 명령어


sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

route del default gw _gateway eth0
vconfig add eth0 101
vconfig add eth0 102
udhcpc -i eth0.101
ifconfig eth0.102 192.168.102.1 netmask 255.255.255.0 broadcast 192.168.102.255 up
route add default gw _gateway eth0.101

iptables -P FORWARD ACCEPT
iptables --table nat -A POSTROUTING -o eth0.101 -j MASQUERADE

ip link add link eth0 name eth0.101 type vlan id 101

//sd카드에 쓰기
bunzip2 -dk -f core-image-full-cmdline-imx6ull14x14evk.sdcard.bz2
sudo dd if=core-image-full-cmdline-imx6ull14x14evk.sdcard of=/dev/sdd bs=1M conv=fsync


2020-05-29

pppd


/etc/ppp/option 에서 crsrts제거해야 통신됨.
ctsrts

아래항목 처리.
AT*RNDISDATA=0
AT*AUTOCONN=0


#sudo pppd /dev/ttyUSB0 115200 unit 1 linkname datakey usepeerdns noauth user guest password guest defaultroute noipdefault ipcp-accept-local ipcp-accept-remote ipcp-max-failure 30 lcp-echo-interval 5 lcp-echo-failure 30 modem dump debug kdebug 8 connect "/usr/sbin/chat -v -t 500 -T *98# -f /home/happycpu/at_com_zte"

TIMEOUT   5
ECHO      ON
ABORT     BUSY
ABORT     ERROR
ABORT     'NO CARRIER'
ABORT     VOICE
ABORT     'NO DIALTONE'
ABORT     'NO DIAL TONE'
ABORT     'NO ANSWER'
ABORT     DELAYED
'' AT
OK AT
OK AT
SAY "Connect...\n"
OK        ATD*98#
TIMEOUT   30
SAY "done..\n"
CONNECT   ''
SAY "end\n"

그런데, ubuntu에서는 확인했으나, 라즈베리파이에서는 ftdi시리얼이 말을 듣지않음.

uml

http://naver.me/5YkKPHBP

2020-05-26

VLAN network setup (rasbian)


root@raspberrypi:/home/pi# apt-get install vim vlan dnsmasq iptables-persistent

pi@raspberrypi:~ $ cat /etc/network/interfaces

source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

auto eth0.101
iface eth0.101 inet dhcp

auto eth0.102
iface eth0.102 inet static
    address 192.168.102.1
    netmask 255.255.255.0
    network 192.168.102.0
    broadcast 192.168.102.255


pi@raspberrypi:~ $ cat /etc/dnsmasq.conf 
resolv-file=/etc/dnsmasq-resolv.conf
interface=eth0.102
listen-address=127.0.0.1
dhcp-range=192.168.102.1,192.168.102.254,12h

pi@raspberrypi:~ $ cat /etc/dnsmasq-resolv.conf 
nameserver 8.8.8.8
nameserver 8.8.4.4


pi@raspberrypi:~ $ cat /etc/rc.local 
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

#/sbin/iptables -P FORWARD ACCEPT
#/sbin/iptables --table nat -A POSTROUTING -o eth0.101 -j MASQUERADE

WAN=eth0.101
LAN=eth0.102
LANIP=192.168.102.0
/sbin/iptables  --flush
/sbin/iptables  -A FORWARD -o $WAN -i $LAN -s $LANIP/24 -m conntrack --ctstate NEW -j ACCEPT
/sbin/iptables  -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables  -t nat -F POSTROUTING
/sbin/iptables  -t nat -A POSTROUTING -o $WAN -j MASQUERADE

################################################
happycpu@happycpu:~$ cat internet_share.sh
#!/bin/bash

#set -x

if [ $# -ne 2 ];
then
echo "Usage: $ ./internet_share.sh [eth name connected to internet] [eth name connected to another device]"
exit
fi

# $1 : the name of ethernet for connecting to the interneet
# $2 : the name of ethernet for connecting to another client
sudo ip addr add 192.168.77.1/24 dev $2

sudo iptables --flush
sudo iptables -A FORWARD -o "$1" -i "$2" -s 192.168.77.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -F POSTROUTING
sudo iptables -t nat -A POSTROUTING -o "$1" -j MASQUERADE

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"




2020-05-18

YOCTO



devshell 이 열림.

# find ./ -name "imx6ull.dtsi"
# vi ./arch/arm/boot/dts/imx6ull-14x14-evk.dts 

DISTRO=fsl-imx-fb MACHINE=imx6ull14x14evk source imx-setup-release.sh -b build1

커널컴파일
bitbake -c devshell virtual/kernel
make menuconfig

비지박스 설정
bitbake -c menuconfig busybox

FSL Yocto 커스텀 번역

7 Customization

i.MX Linux OS에서 빌드하고 사용자 정의하는 세 가지 시나리오가 있습니다.

• i.MX Yocto Project BSP 빌드 및 i.MX 참조 보드에서 유효성 검사. 이 문서의 지침은이 방법을 자세히 설명합니다.

• 커널 및 U-Boot를 사용하여 커널을 사용자 정의하고 사용자 정의 보드 및 장치 트리를 만듭니다. Yocto Project 빌드 환경 외부에서만 커널 및 U-Boot를 빌드하기 위해 SDK를 빌드하고 호스트 시스템을 설정하는 방법에 대한 자세한 내용은 4.5.12 장의 독립형 환경에서 U-Boot 및 커널을 빌드하는 방법을 참조하십시오. i.MX 사용자 안내서 (IMXLUG).

• 사용자 정의 Yocto 프로젝트 레이어를 생성하여 i.MX Linux 릴리스 용으로 제공된 BSP에서 패키지를 추가하거나 제거하는 배포 사용자 정의. i.MX는 Code Aurora 포럼의 i.MX git 저장소에서 AGL, Genivi, IOT Gateway 및 XBMC를 사용하여 i.MX BSP 릴리스 위에 사용자 정의 계층을 표시하기위한 여러 데모 예제를 제공합니다.
이 문서의 나머지 부분에서는 사용자 정의 DISTRO 및 보드 구성을 만드는 지침을 제공합니다.

7.1 사용자 정의 DISTRO 생성

사용자 정의 DISTRO는 사용자 정의 빌드 환경을 구성 할 수 있습니다.
fsl-imx-x11, fsl-imx-wayland, fslimx-xwayland 및 fsl-imx-fb가 릴리스 된 DISTRO 파일은 모두 특정 그래픽 백엔드의 구성을 보여줍니다. DISTRO를 사용하여 커널, uboot 및 gstreamer와 같은 다른 매개 변수를 구성 할 수도 있습니다.

i.MX DISTRO 파일은 i.MX Linux OS BSP 릴리스 테스트에 필요한 사용자 정의 빌드 환경을 작성하도록 설정되어 있습니다.

각 고객은 자신의 배포 파일을 작성하여 빌드 환경에 대한 제공자, 버전 및 사용자 정의 구성을 설정하는 데 사용하는 것이 좋습니다.

DISTRO는 기존 distro 파일을 복사하거나 poky.conf와 같은 파일을 포함하고 추가 변경 사항을 추가하거나 i.MX DISTRO 중 하나를 포함하고이를 시작점으로 사용하여 작성됩니다.

7.2 커스텀 보드 구성 생성

참조 보드를 개발하는 공급 업체는 FSL 커뮤니티 BSP에 보드를 추가 할 수 있습니다.

FSL Community BSP가 지원하는 새 시스템을 사용하면 커뮤니티와 소스 코드를 쉽게 공유 할 수 있으며 커뮤니티의 피드백을받을 수 있습니다.

Yocto Project를 사용하면 새로운 i.MX 기반 보드에 대한 BSP를 쉽게 생성하고 공유 할 수 있습니다.

Linux OS 커널 및 부트 로더가 해당 시스템에 대해 작동하고 테스트되면 업스트림 프로세스가 시작되어야합니다.

시스템 구성 파일에서 안정된 Linux 커널 및 부트 로더 (예 : U-Boot)를 지정하여 해당 시스템에 사용되는 기본 시스템 인 것이 매우 중요합니다.

또 다른 중요한 단계는 새 시스템의 관리자를 결정하는 것입니다.

메인테이너는 메인 보드 세트를 해당 보드에서 계속 작동시키는 책임이 있습니다.
머신 관리자는 커널과 부트 로더를 업데이트하고 해당 머신에 대해 사용자 공간 패키지를 테스트해야합니다.

시스템 관리자 역할에 대한 자세한 내용은 FSL Community BSP 릴리스 노트 2.4 설명서를 참조하십시오.

LAN9303 device tree 참고용.

https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next/+/refs/heads/akpm-base/Documentation/devicetree/bindings/net/dsa/lan9303.txt


[bash] IP유효성 확인 스크립트

validate_IP(){
    if [[ $1 =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]
    then
        for NUM in `sed 's/\./ /g' <<< $1`
        do
            if [ $NUM -ge 0 ] && [ $NUM -le 255 ] && [[ ! $NUM =~ ^0[0-9]{1,2}$ ]]
            then
                continue
            else
                echo "Invalid"
                return 1
            fi
        done
        echo "Valid"
        return 0
    else
        echo "Invalid"
        return 1
    fi
}

2020-05-15

랜하나로 vlan을 통해 라우팅 구현


https://openwrt.org/docs/guide-user/network/vlan/switch

3-Port 10/100 managed ethernet switch 802.1Q VLAN site:microchip.com

VLAN

VLAN

POSIX란

1003.1-2017 - IEEE Standard for Information Technology

--Portable Operating System Interface (POSIX(R)) Base Specifications, Issue 7


ISO/IEC 9945 (POSIX)


https://www.iso.org/standard/50516.html



ISO / IEC / IEEE 9945 : 2008은 명령 해석기 (또는 "쉘") 및 소스 코드 수준에서 응용 프로그램 이식성을 지원하는 일반적인 유틸리티 프로그램을 포함한 표준 운영 체제 인터페이스 및 환경을 정의합니다. ISO / IEC / IEEE 9945 : 2008은 응용 프로그램 개발자와 시스템 구현 자 모두가 사용하도록 만들어졌으며 4 개의 주요 구성 요소 (각각 관련 볼륨)로 구성됩니다.

  • 유틸리티 규약 및 C 언어 헤더 정의를 포함하여이 표준의 모든 볼륨에 공통적 인 일반 용어, 개념 및 인터페이스가 기본 정의 볼륨에 포함됩니다.
  • 시스템 서비스 기능 및 서브 루틴에 대한 정의, C 프로그래밍 언어에 대한 언어 별 시스템 서비스, 이식성, 오류 처리 및 오류 복구를 포함한 기능 문제는 시스템 인터페이스 볼륨에 포함되어 있습니다.
  • 통역 서비스 ( "쉘")에 대한 표준 소스 코드 수준 인터페이스 및 "응용 프로그램에 대한 공통 유틸리티 프로그램"에 대한 정의는 쉘 및 유틸리티 볼륨에 포함되어 있습니다.
  • ISO / IEC / IEEE 9945 : 2008의 내용과 ISO / IEC / IEEE 9945 : 2008 개발자가 기능을 포함하거나 버린 이유에 대한 기록 정보가 포함 된 나머지 문서 구조에 적합하지 않은 확장 된 이론적 근거 이론적 (정보) 볼륨에 포함되어 있습니다.

다음 영역은 ISO / IEC / IEEE 9945 : 2008의 범위를 벗어납니다.

  • 그래픽 인터페이스;
  • 데이터베이스 관리 시스템 인터페이스;
  • 레코드 I / O 고려 사항;
  • 객체 또는 이진 코드 이식성;
  • 시스템 구성 및 자원 가용성.

ISO / IEC / IEEE 9945 : 2008에서는 이러한 기능을 달성하기 위해 사용 된 내부 구성 기법이 아니라 응용 프로그램 개발자에게 중요한 외부 특성과 기능에 대해 설명합니다. 다양한 상용 응용 분야에 필요한 기능과 시설에 특히 중점을 둡니다.

암호화 + base64 하고 쉘스크립트.

 #!/bin/bash # IV와 UserKey를 설정합니다 (아스키 문자열을 그대로 사용). IV="0123456789abcdef"  UserKey="0123456789abcdef" # IV와 UserKey를 16...