728x90

출처

Delphi로 ARM CPU용 리눅스 프로그램 만들기

TMS에서 제공하는 컴포넌트를 이용해서 Raspberry PI 런타임 모듈을 첨부한 파일을 Orange Pi에서 실행해보았다. Orange Pi 정식 제공하는 OS에서는 실행에 오류가 있었고, Armbian 리눅스에서 정상적으로 실행되는 것을 확인

프로젝트 생성

[File] - [New] - [Other...] 메뉴 선택

[TMS WEB Miletus Application] 메뉴 선택

화면 구성 - 버튼, 에디트박스 추가

버튼 클릭 이벤트 구현

unit Unit1;

interface

uses
  System.SysUtils, System.Classes, JS, Web, WEBLib.Graphics, WEBLib.Controls,
  WEBLib.Forms, WEBLib.Miletus, WEBLib.Dialogs, Vcl.StdCtrls, WEBLib.StdCtrls,
  Vcl.Controls;

type
  TForm1 = class(TMiletusForm)
    WebEdit1: TWebEdit;
    WebButton1: TWebButton;
    procedure WebButton1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WebButton1Click(Sender: TObject);
begin
  WebEdit1.Text := 'hello world !!!';
end;

initialization
  RegisterClass(TForm1);

end.

Build Configurations - Build-Raspberry-Pi64로 변경

실행

런타임 라이브러리 설치

orangepi@orangepi5:~$ sudo apt install libwebkit2gtk-4.0-dev

TMSWeb\Build-Raspberry-Pi64 폴더의 Project1 파일을 리눅스에 복사하고 실행 모드 적용 후 실행

728x90
728x90

출처

Orange Pi 공식 사이트에서 리눅스 OS 이미지을 다운로드 받아서 wifi 드라이버 파일 추출

압축프로그램으로 rk3588-wifi-ap6275p.dtbo 파일만 복사

wifi 드라이버 파일(rk3588-wifi-ap6275p.dtbo) 파일 복사

/boot/dtb/rockchip/overlay 디렉토리에 rk3588-wifi-ap6275p.dtb 파일 복사

/boot/armbianEnv.txt 파일 수정

  • overlay_prefix 값을 "rockchip-rk3588" 에서 "rk3588" 으로 수정 - /boot/dtb/rockchip/overlay 디렉토리를 조회 하면 "rk3588" 로 시작하는 파일명은 존제하지만, "rockchip-rk3588" 로 시작하는 파일명은 없음
  • overlays=wifi-ap6275p 내용 추가
orangepi@orangepi5:/$ sudo vi /boot/armbianEnv.txt

/boot/armbianEnv.txt 파일 확인

orangepi@orangepi5:~$ cat /boot/armbianEnv.txt
verbosity=1
bootlogo=true
overlay_prefix=rk3588
fdtfile=rockchip/rk3588s-orangepi-5.dtb
rootdev=UUID=49f69291-5b29-4768-9920-d14f8e961d58
rootfstype=ext4
overlays=wifi-ap6275p
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u

Wifi 연결

orangepi@orangepi5:~$ nmtui-connect
728x90
728x90

출처

설치

bluesanta@bluesanta-desktop:~$ wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
bluesanta@bluesanta-desktop:~$ chmod +x pishrink.sh
bluesanta@bluesanta-desktop:~$ sudo mv pishrink.sh /usr/local/bin

이미지(img) 파일 압축

bluesanta@bluesanta-desktop:~$ sudo pishrink.sh Orangepi3b_1.0.4_ubuntu_jammy_desktop_xfce_linux5.10.160_oracle19ee.img 
pishrink.sh v0.1.4
pishrink.sh: Gathering data ...
Creating new /etc/rc.local
pishrink.sh: Checking filesystem ...
opi_root: 276308/3781440 files (0.3% non-contiguous), 7355461/15322107 blocks
resize2fs 1.46.5 (30-Dec-2021)
pishrink.sh: Shrinking filesystem ...
resize2fs 1.46.5 (30-Dec-2021)
Resizing the filesystem on /dev/loop15 to 7734996 (4k) blocks.
Begin pass 2 (max = 543805)
Relocating blocks             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = 468)
Scanning inode table          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 4 (max = 22279)
Updating inode references     XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/loop15 is now 7734996 (4k) blocks long.
 
pishrink.sh: Shrinking image ...
pishrink.sh: Shrunk Orangepi3b_1.0.4_ubuntu_jammy_desktop_xfce_linux5.10.160_oracle19ee.img from 60G to 31G ...

gzip으로 파일 압축

bluesanta@bluesanta-desktop:~$ gzip Orangepi3b_1.0.4_ubuntu_jammy_desktop_xfce_linux5.10.160_oracle19ee.img

용량 확장

용량 확인

orangepi@orangepi3b:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           769M  8.9M  761M   2% /run
/dev/mmcblk1p2   32G   30G  1.6G  96% /
tmpfs           3.8G     0  3.8G   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           3.8G   12K  3.8G   1% /tmp
/dev/mmcblk1p1 1022M  123M  900M  12% /boot
/dev/zram1       47M  2.5M   41M   6% /var/log
tmpfs           769M   72K  769M   1% /run/user/1000

디스크 확인

orangepi@orangepi3b:~$ sudo fdisk -l | grep '^Disk'
Disk /dev/ram0: 4 MiB, 4194304 bytes, 8192 sectors
GPT PMBR size mismatch (8191 != 32767) will be corrected by write.
Disk /dev/zram0: 3.75 GiB, 4031479808 bytes, 984248 sectors
The backup GPT table is not on the end of the device.
Disk /dev/mtdblock0: 16 MiB, 16777216 bytes, 32768 sectors
Disklabel type: gpt
Disk identifier: 3633529D-D43A-43ED-89B5-3C77E84E30AB
GPT PMBR size mismatch (122879999 != 124735487) will be corrected by write.
Disk /dev/mmcblk1: 59.48 GiB, 63864569856 bytes, 124735488 sectors
Disklabel type: gpt
Disk identifier: E62EC91A-B5E0-F340-9BEA-2D2DB623FE25
Disk /dev/zram1: 50 MiB, 52428800 bytes, 12800 sectors

기존 파티션을 삭제하고 새로 파티션 생성

orangepi@orangepi3b:~$ sudo fdisk /dev/mmcblk1
 
Welcome to fdisk (util-linux 2.37.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
 
GPT PMBR size mismatch (122879999 != 124735487) will be corrected by write.
This disk is currently in use - repartitioning is probably a bad idea.
It's recommended to umount all file systems, and swapoff all swap
partitions on this disk.
 
 
Command (m for help): p
 
Disk /dev/mmcblk1: 59.48 GiB, 63864569856 bytes, 124735488 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: E62EC91A-B5E0-F340-9BEA-2D2DB623FE25
 
Device           Start      End  Sectors  Size Type
/dev/mmcblk1p1   61440  2158591  2097152    1G Linux extended boot
/dev/mmcblk1p2 2158592 68800384 66641793 31.8G Linux filesystem
 
Command (m for help): d
Partition number (1,2, default 2): 2
 
Partition 2 has been deleted.
 
Command (m for help): n
Partition number (2-128, default 2): 2
First sector (2048-124735454, default 2158592): 2158592
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2158592-124735454, default 124735454): 
 
Created a new partition 2 of type 'Linux filesystem' and of size 58.4 GiB.
Partition #2 contains a ext4 signature.
 
Do you want to remove the signature? [Y]es/[N]o: Y
 
The signature will be removed by a write command.
 
Command (m for help): w
The partition table has been altered.
Syncing disks.
 
orangepi@orangepi3b:~$ sudo shutdown -r now

변경한 파티션으로 사이즈 변경

orangepi@orangepi3b:~$ sudo resize2fs /dev/mmcblk1p2
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/mmcblk1p2 is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 4
The filesystem on /dev/mmcblk1p2 is now 15322107 (4k) blocks long.

용량 확인

orangepi@orangepi3b:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           769M  8.9M  761M   2% /run
/dev/mmcblk1p2   58G   30G   28G  52% /
tmpfs           3.8G     0  3.8G   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           3.8G   12K  3.8G   1% /tmp
/dev/mmcblk1p1 1022M  123M  900M  12% /boot
/dev/zram1       47M  3.4M   41M   8% /var/log
tmpfs           769M   72K  769M   1% /run/user/1000
728x90
728x90

출처

리눅스 버전 확인

orangepi@orangepi3b:~$ uname -a
Linux orangepi3b 5.10.160-rockchip-rk356x #1.0.4 SMP Tue Dec 26 10:41:53 CST 2023 aarch64 aarch64 aarch64 GNU/Linux

도커 설치

orangepi@orangepi3b:~$ curl -sSL https://get.docker.com | sh
## Executing docker install script, commit: e5543d473431b782227f8908005543bb4389b8de
+ sudo -E sh -c apt-get update -qq >/dev/null
+ sudo -E sh -c DEBIAN_FRONTEND=noninteractive apt-get install -y -qq apt-transport-https ca-certificates curl >/dev/null
+ sudo -E sh -c install -m 0755 -d /etc/apt/keyrings
+ sudo -E sh -c curl -fsSL "https://download.docker.com/linux/ubuntu/gpg" | gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg
gpg: WARNING: unsafe ownership on homedir '/home/orangepi/.gnupg'
+ sudo -E sh -c chmod a+r /etc/apt/keyrings/docker.gpg
+ sudo -E sh -c echo "deb [arch=arm64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu focal stable" > /etc/apt/sources.list.d/docker.list
+ sudo -E sh -c apt-get update -qq >/dev/null
+ sudo -E sh -c DEBIAN_FRONTEND=noninteractive apt-get install -y -qq docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-ce-rootless-extras docker-buildx-plugin >/dev/null
+ sudo -E sh -c docker version
Client: Docker Engine - Community
 Version:           25.0.3
 API version:       1.44
 Go version:        go1.21.6
 Git commit:        4debf41
 Built:             Tue Feb  6 21:13:09 2024
 OS/Arch:           linux/arm64
 Context:           default
 
Server: Docker Engine - Community
 Engine:
  Version:          25.0.3
  API version:      1.44 (minimum version 1.24)
  Go version:       go1.21.6
  Git commit:       f417435
  Built:            Tue Feb  6 21:13:09 2024
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.6.28
  GitCommit:        ae07eda36dd25f8a1b98dfbf587313b99c0190bb
 runc:
  Version:          1.1.12
  GitCommit:        v1.1.12-0-g51d5e94
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
 
================================================================================
 
To run Docker as a non-privileged user, consider setting up the
Docker daemon in rootless mode for your user:
 
    dockerd-rootless-setuptool.sh install
 
Visit https://docs.docker.com/go/rootless/ to learn about rootless mode.
 
 
To run the Docker daemon as a fully privileged service, but granting non-root
users access, refer to https://docs.docker.com/go/daemon-access/
 
WARNING: Access to the remote API on a privileged Docker daemon is equivalent
         to root access on the host. Refer to the 'Docker daemon attack surface'
         documentation for details: https://docs.docker.com/go/attack-surface/
 
================================================================================

도커 버전 확인

orangepi@orangepi3b:~$ sudo docker version
Client: Docker Engine - Community
 Version:           25.0.3
 API version:       1.44

Oracle 데이터베이스용 컨테이너 이미지 빌드 스크립트 다운로드

orangepi@orangepi3b:~$ git clone https://github.com/oraclesean/cloud-native-oracle.git
orangepi@orangepi3b:~$ cd cloud-native-oracle/
orangepi@orangepi3b:~/cloud-native-oracle$ ls
bashrc19  bashrc21  buildDBImage.sh  config  database  functions.sh  manageOracle.sh  README.md  templates

Database 파일(LINUX.ARM64_1919000_db_home.zip) database 디렉토리에 복사

설치 오류 확인

  58 |     # Install DB software binaries
--------------------
ERROR: failed to solve: failed to compute cache key: failed to calculate checksum of ref 050c0aad-4de3-4c6a-b3ea-13b26006aa1c::t73wcuyjin3wcc0vlsq4rux5h: "/database": not found

LINUX.ARM64_1919000_db_home.zip 파일을 다운받아서 database 디렉토리에 복사

orangepi@orangepi3b:~/cloud-native-oracle$ ls database/
LINUX.ARM64_1919000_db_home.zip  patches  README.md

ARM 프로세서를 지원하는 Oracle 데이터베이스용 컨테이너 이미지 빌드

orangepi@orangepi3b:~/cloud-native-oracle$ sudo ./buildDBImage.sh
[sudo] password for orangepi: 
[+] Building 455.7s (7/7) FINISHED                                                             docker:default
 => [internal] load build definition from Dockerfile.oraclelinux.202403020836.fy3l                       0.1s
 => => transferring dockerfile: 1.53kB                                                                   0.0s
 => [internal] load metadata for docker.io/library/oraclelinux:8-slim                                    7.5s
 => [internal] load build context                                                                        0.2s
 => => transferring context: 38B                                                                         0.0s
 => [1/3] FROM docker.io/library/oraclelinux:8-slim@sha256:97ac18066921f7939120c4c2453ec26c40fcf2d6dc8b  0.0s
 => CACHED [2/3] COPY manageOracle.sh /opt/scripts/                                                      0.0s
 => [3/3] RUN chmod ug+x /opt/scripts/manageOracle.sh &&      /opt/scripts/manageOracle.sh -e &&       436.4s
 => exporting to image                                                                                  11.1s 
 => => exporting layers                                                                                 11.1s 
 => => writing image sha256:e91736be6ce42035dd6d657b6096488b73ea91d9ee90b789c493c09052892a42             0.0s 
 => => naming to docker.io/library/oraclelinux:8-slim-19c                                                0.0s 
[+] Building 1977.7s (20/20) FINISHED                                                          docker:default 
 => [internal] load build definition from Dockerfile.db.202403020844.ie8y                                0.0s 
 => => transferring dockerfile: 5.33kB                                                                   0.0s
 => resolve image config for docker.io/docker/dockerfile:1.4                                             3.0s
 => CACHED docker-image://docker.io/docker/dockerfile:1.4@sha256:9ba7531bd80fb0a858632727cf7a112fbfd19b  0.0s
 => [internal] load .dockerignore                                                                        0.1s
 => => transferring context: 2B                                                                          0.0s
 => [internal] load metadata for docker.io/library/oraclelinux:8-slim-19c                                0.0s
 => [internal] load build context                                                                       78.5s
 => => transferring context: 2.42GB                                                                     74.0s
 => [db 1/6] FROM docker.io/library/oraclelinux:8-slim-19c                                               0.1s
 => [db 2/6] COPY --chown=oracle:oinstall manageOracle.sh      /opt/scripts/                            34.8s
 => [stage-1 2/8] COPY --chown=oracle:oinstall ./config/dbca.*        /opt/install/                     34.7s
 => [stage-1 3/8] COPY --chown=oracle:oinstall ./config/*.tmpl        /opt/install/                      0.7s
 => [db 3/6] COPY --chown=oracle:oinstall ./config/inst.*     /opt/install/                              0.4s
 => [db 4/6] COPY --chown=oracle:oinstall ./config/manifest   /opt/install/                              0.5s
 => [stage-1 4/8] COPY --chown=oracle:oinstall manageOracle.sh         /opt/scripts/                     0.6s
 => [db 5/6] COPY --chown=oracle:oinstall ./database/         /opt/install/                            161.9s
 => [db 6/6] RUN  chmod ug+x /opt/scripts/manageOracle.sh &&      /opt/scripts/manageOracle.sh -O      845.7s
 => [stage-1 5/8] COPY --chown=oracle:oinstall --from=db /u01/app/oraInventory  /u01/app/oraInventory    0.8s 
 => [stage-1 6/8] COPY --chown=oracle:oinstall --from=db /u01/app/oracle /u01/app/oracle               435.6s 
 => [stage-1 7/8] RUN  /opt/scripts/manageOracle.sh -R                                                   4.1s 
 => [stage-1 8/8] WORKDIR /home/oracle                                                                   0.4s 
 => exporting to image                                                                                 238.3s 
 => => exporting layers                                                                                238.2s 
 => => writing image sha256:3deb038e98a0f2c5174d6b9cddc155eaeb541b6c5fe4d211cfb962031f74c675             0.0s 
 => => naming to docker.io/oracle/db:19.19-EE                                                            0.0s 
REPOSITORY    TAG          IMAGE ID       CREATED          SIZE                                               
oracle/db     19.19-EE     3deb038e98a0   3 minutes ago    5.86GB
oraclelinux   8-slim-19c   e91736be6ce4   33 minutes ago   676MB

환경변수 추가

orangepi@orangepi3b:~$ vi ~/.profile
CONTAINER_NAME=ORCL
ORADATA=~/oracle-docker/oradata

데이터 디렉터리 및 Docker 볼륨 만들기

mkdir -p $ORADATA/scripts
for dir in audit data diag reco
do mkdir -p $ORADATA/${CONTAINER_NAME}/${dir}
    rm -fr $ORADATA/${CONTAINER_NAME}/${dir}/*
    docker volume rm ${CONTAINER_NAME}_${dir} 2>/dev/null
    docker volume create --opt type=none --opt o=bind \
        --opt device=$ORADATA/${CONTAINER_NAME}/${dir} \
        ${CONTAINER_NAME}_${dir}
done
orangepi@orangepi3b:~$ mkdir -p $ORADATA/scripts
orangepi@orangepi3b:~$ for dir in audit data diag reco
> do mkdir -p $ORADATA/${CONTAINER_NAME}/${dir}
>     rm -fr $ORADATA/${CONTAINER_NAME}/${dir}/*
>     docker volume rm ${CONTAINER_NAME}_${dir} 2>/dev/null
>     docker volume create --opt type=none --opt o=bind \
>         --opt device=$ORADATA/${CONTAINER_NAME}/${dir} \
>         ${CONTAINER_NAME}_${dir}
> done
ORADB_audit
ORADB_data
ORADB_diag
ORADB_reco
orangepi@orangepi3b:~$ 

도커 이미지에서 디렉토리 권한이 없으므로 디렉토리 권한 해제

orangepi@orangepi3b:~$ cd oracle-docker/oradata/
orangepi@orangepi3b:~/oracle-docker/oradata$ sudo chmod 777 -Rf ORCL
orangepi@orangepi3b:~/oracle-docker/oradata$ cd ORCL
orangepi@orangepi3b:~/oracle-docker/oradata/ORCL$ ls -al
total 24
drwxrwxrwx  6 orangepi orangepi 4096 Mar  2 13:24 .
drwxrwxr-x  4 orangepi orangepi 4096 Mar  2 13:24 ..
drwxrwxrwx  3    54321    54321 4096 Mar  2 13:26 audit
drwxrwxrwx  4 orangepi orangepi 4096 Mar  2 13:53 data
drwxrwxrwx 23    54321    54321 4096 Mar  2 13:26 diag
drwxrwxrwx  4 orangepi orangepi 4096 Mar  2 13:37 reco

Oracle Docker 이미지 실행

docker run -d \
    --name ${CONTAINER_NAME} \
    --volume ${CONTAINER_NAME}_data:/u02/app/oracle/oradata \
    --volume ${CONTAINER_NAME}_diag:/u01/app/oracle/diag \
    --volume ${CONTAINER_NAME}_audit:/u01/app/oracle/admin \
    --volume ${CONTAINER_NAME}_reco:/u03/app/oracle \
    --volume $ORADATA/scripts:/scripts \
    -e ORACLE_SID=${CONTAINER_NAME} \
    -e ORACLE_PDB=${CONTAINER_NAME}PDB1 \
    -p 8080:8080 \
    -p 1521:1521 \
    oracle/db:19.19-EE
orangepi@orangepi3b:~$ sudo docker run -d \
>     --name ${CONTAINER_NAME} \
>     --volume ${CONTAINER_NAME}_data:/u02/app/oracle/oradata \
>     --volume ${CONTAINER_NAME}_diag:/u01/app/oracle/diag \
>     --volume ${CONTAINER_NAME}_audit:/u01/app/oracle/admin \
>     --volume ${CONTAINER_NAME}_reco:/u03/app/oracle \
>     --volume $ORADATA/scripts:/scripts \
>     -e ORACLE_SID=${CONTAINER_NAME} \
>     -e ORACLE_PDB=${CONTAINER_NAME}PDB1 \
>     -p 8080:8080 \
>     -p 1521:1521 \
>     oracle/db:19.19-EE
6357be4fc74139beac920cc5d3577827a1ee96a8a8f607e5a55cb0dafc1235f6

도커 실행 로그 확인

orangepi@orangepi3b:~/oracle-docker/oradata/ORCL$ docker logs -f $CONTAINER_NAME
 
## ----------------------------------------------------------------------------------------------- #
  Oracle password for SYS, SYSTEM and PDBADMIN: LGYm6_M#5oQC_4
## ----------------------------------------------------------------------------------------------- #
 
## ----------------------------------------------------------------------------------------------- #
  runDBCA: Running DBCA for database ORCL at 2024-03-02 13:32:19
## ----------------------------------------------------------------------------------------------- #
 
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 02-MAR-2024 13:32:19
 
Copyright (c) 1991, 2023, Oracle.  All rights reserved.
 
Starting /u01/app/oracle/product/19.19/dbhome_1/bin/tnslsnr: please wait...
 
TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /u01/app/oracle/product/19.19/dbhome_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/6357be4fc741/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
 
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                02-MAR-2024 13:32:19
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/19.19/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/6357be4fc741/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
Services Summary...
Service "ORCL" has 1 instance(s).
  Instance "ORCL", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
 
## ----------------------------------------------------------------------------------------------- #
  runDBCA: Creating container database ORCL and 1 pluggable database(s) with name ORCLPDB1 at 2024-03-02 13:32:20
## ----------------------------------------------------------------------------------------------- #
Prepare for db operation
8% complete
Copying database files
31% complete
Creating and starting Oracle instance
32% complete
36% complete
40% complete
43% complete
46% complete
Completing Database Creation
51% complete
54% complete
Creating Pluggable Databases
58% complete
77% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
 /u01/app/oracle/cfgtoollogs/dbca/ORCL.
Database Information:
Global Database Name:ORCL
System Identifier(SID):ORCL
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/ORCL/ORCL.log" for further details.
 
Pluggable database altered.
 
 
Pluggable database altered.
 
 
## ----------------------------------------------------------------------------------------------- #
  runDBCA: DBCA complete at 2024-03-02 13:53:34
## ----------------------------------------------------------------------------------------------- #
 
## ----------------------------------------------------------------------------------------------- #
  Database ORCL with unique name ORCL is open and available. 
## ----------------------------------------------------------------------------------------------- #
 
## ----------------------------------------------------------------------------------------------- #
  Tailing alert_ORCL.log: 
2024-03-02T13:53:31.597088+00:00
ORCLPDB1(3):CREATE SMALLFILE TABLESPACE "USERS" LOGGING  DATAFILE  SIZE 5M AUTOEXTEND ON NEXT  1280K MAXSIZE UNLIMITED  EXTENT MANAGEMENT LOCAL  SEGMENT SPACE MANAGEMENT  AUTO
ORCLPDB1(3):Completed: CREATE SMALLFILE TABLESPACE "USERS" LOGGING  DATAFILE  SIZE 5M AUTOEXTEND ON NEXT  1280K MAXSIZE UNLIMITED  EXTENT MANAGEMENT LOCAL  SEGMENT SPACE MANAGEMENT  AUTO
ORCLPDB1(3):ALTER DATABASE DEFAULT TABLESPACE "USERS"
ORCLPDB1(3):Completed: ALTER DATABASE DEFAULT TABLESPACE "USERS"
2024-03-02T13:53:34.793602+00:00
alter pluggable database all open
Completed: alter pluggable database all open
alter pluggable database all save state
Completed: alter pluggable database all save state
2024-03-02T13:54:16.789709+00:00
Errors in file /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_m000_3124.trc  (incident=10321) (PDBNAME=CDB$ROOT):
ORA-00600: internal error code, arguments: [ksm_mga_pseg_cbk_attach:map_null], [], [], [], [], [], [], [], [], [], [], []
ORA-27300: OS system dependent operation:mmap failed with status: 12
ORA-27301: OS failure message: Cannot allocate memory
ORA-27302: failure occurred at: sskgm_mga_at
Incident details in: /u01/app/oracle/diag/rdbms/orcl/ORCL/incident/incdir_10321/ORCL_m000_3124_i10321.trc
2024-03-02T13:54:34.950603+00:00
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
Errors in file /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_m000_3124.trc  (incident=10322) (PDBNAME=CDB$ROOT):
ORA-00600: internal error code, arguments: [ksm_mga_pseg_cbk_attach:map_null], [], [], [], [], [], [], [], [], [], [], []
ORA-27300: OS system dependent operation:mmap failed with status: 12
ORA-27301: OS failure message: Cannot allocate memory
ORA-27302: failure occurred at: sskgm_mga_at
Incident details in: /u01/app/oracle/diag/rdbms/orcl/ORCL/incident/incdir_10322/ORCL_m000_3124_i10322.trc
2024-03-02T13:54:35.141427+00:00
Dumping diagnostic data in directory=[cdmp_20240302135435], requested by (instance=1, osid=3124 (M000)), summary=[incident=10321].
2024-03-02T13:54:42.606206+00:00
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
2024-03-02T13:54:42.607531+00:00
Errors in file /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_m000_3124.trc:
ORA-00600: internal error code, arguments: [ksm_mga_pseg_cbk_attach:map_null], [], [], [], [], [], [], [], [], [], [], []
ORA-27300: OS system dependent operation:mmap failed with status: 12
ORA-27301: OS failure message: Cannot allocate memory
ORA-27302: failure occurred at: sskgm_mga_at
2024-03-02T13:54:43.057745+00:00
Dumping diagnostic data in directory=[cdmp_20240302135443], requested by (instance=1, osid=3124 (M000)), summary=[incident=10322].
2024-03-02T14:02:13.059101+00:00
ORCLPDB1(3):Resize operation completed for file# 10, fname /u02/app/oracle/oradata/ORCL/12AECDF328D30D6DE063020011ACF430/datafile/o1_mf_sysaux_ly6cs3ot_.dbf, old size 286720K, new size 296960K

SQLPlus 접속

orangepi@orangepi3b:~$ docker exec -it 6357be4fc741 sqlplus
 
SQL*Plus: Release 19.0.0.0.0 - Production on Sat Mar 2 13:58:42 2024
Version 19.19.0.0.0
 
Copyright (c) 1982, 2023, Oracle.  All rights reserved.
 
Enter user-name: SYSTEM
Enter password: 
Last Successful login time: Sat Mar 02 2024 13:56:21 +00:00
 
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.19.0.0.0
 
SQL> select table_name from tabs;
 
TABLE_NAME
--------------------------------------------------------------------------------------------------------------------------------
LOGMNR_SESSION_EVOLVE$
LOGMNR_GLOBAL$
LOGMNR_PDB_INFO$
LOGMNR_DID$
LOGMNR_UID$
LOGMNRGGC_GTLO
LOGMNRGGC_GTCS
LOGMNRC_DBNAME_UID_MAP
LOGMNR_LOG$
LOGMNR_PROCESSED_LOG$
LOGMNR_SPILL$
LOGMNR_AGE_SPILL$
LOGMNR_RESTART_CKPT_TXINFO$
LOGMNR_ERROR$
LOGMNR_RESTART_CKPT$
LOGMNR_FILTER$
LOGMNR_SESSION_ACTIONS$
LOGMNR_PARAMETER$
LOGMNR_SESSION$
LOGMNR_PROFILE_TABLE_STATS$
LOGMNR_PROFILE_PLSQL_STATS$
REDO_DB
REDO_LOG
ROLLING$CONNECTIONS
ROLLING$DATABASES
ROLLING$DIRECTIVES
ROLLING$EVENTS
ROLLING$PARAMETERS
ROLLING$PLAN
ROLLING$STATISTICS
ROLLING$STATUS
MVIEW$_ADV_WORKLOAD
MVIEW$_ADV_BASETABLE
MVIEW$_ADV_SQLDEPEND
MVIEW$_ADV_PRETTY
MVIEW$_ADV_TEMP
MVIEW$_ADV_FILTER
MVIEW$_ADV_LOG
MVIEW$_ADV_FILTERINSTANCE
MVIEW$_ADV_LEVEL
MVIEW$_ADV_ROLLUP
MVIEW$_ADV_AJG
MVIEW$_ADV_FJG
MVIEW$_ADV_GC
MVIEW$_ADV_CLIQUE
MVIEW$_ADV_ELIGIBLE
MVIEW$_ADV_OUTPUT
MVIEW$_ADV_EXCEPTIONS
MVIEW$_ADV_PARAMETERS
MVIEW$_ADV_INFO
MVIEW$_ADV_JOURNAL
MVIEW$_ADV_PLAN
AQ$_QUEUE_TABLES
AQ$_KEY_SHARD_MAP
AQ$_QUEUES
AQ$_SCHEDULES
AQ$_INTERNET_AGENTS
AQ$_INTERNET_AGENT_PRIVS
SCHEDULER_PROGRAM_ARGS_TBL
SCHEDULER_JOB_ARGS_TBL
LOGSTDBY$PARAMETERS
LOGSTDBY$EVENTS
LOGSTDBY$APPLY_MILESTONE
LOGSTDBY$SCN
LOGSTDBY$FLASHBACK_SCN
LOGSTDBY$PLSQL
LOGSTDBY$SKIP_TRANSACTION
LOGSTDBY$SKIP
LOGSTDBY$SKIP_SUPPORT
LOGSTDBY$HISTORY
LOGSTDBY$EDS_TABLES
SQLPLUS_PRODUCT_PROFILE
HELP
LOGMNR_GT_TAB_INCLUDE$
LOGMNR_GT_USER_INCLUDE$
LOGMNR_GT_XID_INCLUDE$
LOGMNRT_MDDL$
OL$
OL$HINTS
OL$NODES
LOGMNR_DICTSTATE$
LOGMNRC_GTLO
LOGMNRC_GTCS
LOGMNRC_SEQ_GG
LOGMNRC_CON_GG
LOGMNRC_CONCOL_GG
LOGMNRC_IND_GG
LOGMNRC_INDCOL_GG
LOGMNRC_SHARD_TS
LOGMNRC_TSPART
LOGMNRC_TS
LOGMNRC_GSII
LOGMNRC_GSBA
LOGMNRC_USER
LOGMNR_SEED$
LOGMNR_DICTIONARY$
LOGMNR_OBJ$
LOGMNR_TAB$
LOGMNR_COL$
LOGMNR_ATTRCOL$
LOGMNR_TS$
LOGMNR_IND$
LOGMNR_USER$
LOGMNR_TABPART$
LOGMNR_TABSUBPART$
LOGMNR_TABCOMPART$
LOGMNR_TYPE$
LOGMNR_COLTYPE$
LOGMNR_ATTRIBUTE$
LOGMNR_LOB$
LOGMNR_CON$
LOGMNR_CONTAINER$
LOGMNR_CDEF$
LOGMNR_CCOL$
LOGMNR_ICOL$
LOGMNR_LOBFRAG$
LOGMNR_INDPART$
LOGMNR_INDSUBPART$
LOGMNR_INDCOMPART$
LOGMNR_LOGMNR_BUILDLOG
LOGMNR_NTAB$
LOGMNR_OPQTYPE$
LOGMNR_SUBCOLTYPE$
LOGMNR_KOPM$
LOGMNR_PROPS$
LOGMNR_ENC$
LOGMNR_REFCON$
LOGMNR_IDNSEQ$
LOGMNR_PARTOBJ$
LOGMNRP_CTAS_PART_MAP
LOGMNR_SHARD_TS
LOGSTDBY$APPLY_PROGRESS
 
132 rows selected.
 
SQL> 

 

 

 

도커 : 이미지 목록 조회, 삭제

orangepi@orangepi3b:~/cloud-native-oracle$ docker images
REPOSITORY    TAG          IMAGE ID       CREATED         SIZE
oraclelinux   8-slim-19c   c0e3a8e31386   8 minutes ago   676MB
orangepi@orangepi3b:~/cloud-native-oracle$ docker rmi c0e3a8e31386
Untagged: oraclelinux:8-slim-19c
Deleted: sha256:c0e3a8e3138639bda7c2fa55e1d5ebff39ff1706665f8b4e9da0bb966882344b
orangepi@orangepi3b:~/cloud-native-oracle$ docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
orangepi@orangepi3b:~/cloud-native-oracle$ 
728x90
728x90

출처

기존 OpenCV 버전 제거

OpenCV 설치확인

orangepi@orangepi5plus:~$ pkg-config --modversion opencv
Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found

OpenCV 패키지 삭제

orangepi@orangepi5plus:~$ sudo apt purge libopencv* python-opencv
orangepi@orangepi5plus:~$ sudo apt autoremove

기존에 설치된 opencv 라이브러리를 삭제

orangepi@orangepi5plus:~$ sudo find /usr/local/ -name "*opencv*" -exec rm  {} \;

OS 업데이트, 업그레이드

orangepi@orangepi5plus:~$ sudo apt update && sudo apt upgrade

OpenCV 빌드 관련 도구 설치

orangepi@orangepi5plus:~$ sudo apt install build-essential cmake cmake-gui

OpenCV 관련 라이브러리 설치

orangepi@orangepi5plus:~$ sudo apt install libjpeg-dev libtiff5-dev libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev libv4l-dev v4l-utils libpng-dev

GStreamer 관련 패키지 설치

orangepi@orangepi5plus:~$ sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly

GTK 관련 라이브러리 설치

orangepi@orangepi5plus:~$ sudo apt install libgtk2.0-dev

GTK 관련 라이브러리 설치 오류시

OpenGL 라이브러리 설치

orangepi@orangepi5plus:~$ sudo apt install mesa-utils libgtkgl2.0-dev libgtkglext1-dev libgtk3.0-cil-dev

OpenCV 최적화를 위해 사용되는 라이브러리

orangepi@orangepi5plus:~$ sudo apt install libatlas-base-dev gfortran libeigen3-dev

Python 설치

orangepi@orangepi5plus:~$ sudo apt install python2.7-dev python3-dev python3-numpy

OpenCV 4.1.1 다운로드

OpenCV 4.1.1 소스 다운로드

orangepi@orangepi5plus:~$ mkdir OpenCV
orangepi@orangepi5plus:~$ cd OpenCV
orangepi@orangepi5plus:~/OpenCV$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.5.zip
orangepi@orangepi5plus:~/OpenCV$ unzip opencv.zip
orangepi@orangepi5plus:~/OpenCV$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.5.zip
orangepi@orangepi5plus:~/OpenCV$ unzip opencv_contrib.zip

디렉토리명 변경

orangepi@orangepi5plus:~/OpenCV$ cd opencv-4.5.5
orangepi@orangepi5plus:~/OpenCV/opencv-4.5.5$ mkdir build
orangepi@orangepi5plus:~/OpenCV/opencv-4.5.5$ cd build

OpenCV 컴파일

CMake 실행

orangepi@orangepi5plus:~/OpenCV/opencv-4.5.5/build$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local \
  -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.5.5/modules -D OPENCV_GENERATE_PKGCONFIG=ON \
  -D BUILD_opencv_java=OFF -D BUILD_opencv_python3=ON -D WITH_OPENMP=OFF -D WITH_GSTREAMER_0_10=OFF \
  -D WITH_VTK=OFF -D WITH_LIBV4L=ON -D WITH_OPENMP=ON -D WITH_OPENGL=ON -D WITH_TBB=ON \
  -D BUILD_SHARED_LIBS=ON -D ENABLE_PIC=ON -D WITH_ARITH_DEC=ON -D WITH_ARITH_ENC=ON \
  -D WITH_FFMPEG=ON -D WITH_GSTREAMER=ON -D WITH_IMGCODEC_HDR=ON -D WITH_IMGCODEC_PXM=ON \
  -D WITH_IMGCODEC_SUNRASTER=ON -D WITH_JASPER=ON -D WITH_JPEG=ON -D WITH_LAPACK=ON \
  -D WITH_PNG=ON -D WITH_QT=ON -D WITH_PTHREADS_PF=ON -D WITH_TIFF=ON -D WITH_WEBP=ON \
  -D WITH_GTK=ON -D BUILD_PNG=ON -D WITH_OPENCL=ON ..
 
. ... 생략 ... 
 
-- General configuration for OpenCV 4.5.5 =====================================
--   Version control:               unknown
-- 
--   Extra modules:
--     Location (extra):            /home/orangepi/OpenCV/opencv_contrib-4.5.5/modules
--     Version control (extra):     unknown
-- 
--   Platform:
--     Timestamp:                   2023-11-05T00:40:39Z
--     Host:                        Linux 5.10.110-rockchip-rk3588 aarch64
--     CMake:                       3.22.1
--     CMake generator:             Unix Makefiles
--     CMake build tool:            /usr/bin/gmake
--     Configuration:               RELEASE
-- 
--   CPU/HW features:
--     Baseline:                    NEON FP16
-- 
--   C/C++:
--     Built as dynamic libs?:      YES
--     C++ standard:                11
--     C++ Compiler:                /usr/bin/c++  (ver 11.4.0)
--     C++ flags (Release):         -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -fvisibility-inlines-hidden -fopenmp -O3 -DNDEBUG  -DNDEBUG
--     C++ flags (Debug):           -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -fvisibility-inlines-hidden -fopenmp -g  -O0 -DDEBUG -D_DEBUG
--     C Compiler:                  /usr/bin/cc
--     C flags (Release):           -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -fopenmp -O3 -DNDEBUG  -DNDEBUG
--     C flags (Debug):             -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -fopenmp -g  -O0 -DDEBUG -D_DEBUG
--     Linker flags (Release):      -Wl,--gc-sections -Wl,--as-needed  
--     Linker flags (Debug):        -Wl,--gc-sections -Wl,--as-needed  
--     ccache:                      NO
--     Precompiled headers:         NO
--     Extra dependencies:          dl m pthread rt
--     3rdparty dependencies:
-- 
--   OpenCV modules:
--     To be built:                 alphamat aruco barcode bgsegm bioinspired calib3d ccalib core datasets dnn dnn_objdetect dnn_superres dpm face features2d flann freetype fuzzy gapi hfs highgui img_hash imgcodecs imgproc intensity_transform line_descriptor mcc ml objdetect optflow phase_unwrapping photo plot python3 quality rapid reg rgbd saliency shape stereo stitching structured_light superres surface_matching text tracking ts video videoio videostab wechat_qrcode xfeatures2d ximgproc xobjdetect xphoto
--     Disabled:                    world
--     Disabled by dependency:      -
--     Unavailable:                 cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev cvv hdf java julia matlab ovis python2 sfm viz
--     Applications:                tests perf_tests apps
--     Documentation:               NO
--     Non-free algorithms:         NO
-- 
--   GUI:                           GTK2
--     QT:                          NO
--     GTK+:                        YES (ver 2.24.33)
--       GThread :                  YES (ver 2.72.4)
--       GtkGlExt:                  YES (ver 1.2.0)
--     OpenGL support:              YES (/usr/lib/aarch64-linux-gnu/libGL.so /usr/lib/aarch64-linux-gnu/libGLU.so)
-- 
--   Media I/O: 
--     ZLib:                        /usr/lib/aarch64-linux-gnu/libz.so (ver 1.2.11)
--     JPEG:                        /usr/lib/aarch64-linux-gnu/libjpeg.so (ver 80)
--     WEBP:                        build (ver encoder: 0x020f)
--     PNG:                         /lib/libpng12.so (ver 1.6.37)
--     TIFF:                        /usr/lib/aarch64-linux-gnu/libtiff.so (ver 42 / 4.3.0)
--     JPEG 2000:                   build (ver 2.4.0)
--     OpenEXR:                     /usr/lib/aarch64-linux-gnu/libImath-2_5.so /usr/lib/aarch64-linux-gnu/libIlmImf-2_5.so /usr/lib/aarch64-linux-gnu/libIex-2_5.so /usr/lib/aarch64-linux-gnu/libHalf-2_5.so /usr/lib/aarch64-linux-gnu/libIlmThread-2_5.so (ver 2_5)
--     HDR:                         YES
--     SUNRASTER:                   YES
--     PXM:                         YES
--     PFM:                         YES
-- 
--   Video I/O:
--     DC1394:                      YES (2.2.6)
--     FFMPEG:                      YES
--       avcodec:                   YES (58.134.100)
--       avformat:                  YES (58.76.100)
--       avutil:                    YES (56.70.100)
--       swscale:                   YES (5.9.100)
--       avresample:                NO
--     GStreamer:                   YES (1.20.3)
--     v4l/v4l2:                    YES (linux/videodev2.h)
-- 
--   Parallel framework:            TBB (ver 2021.5 interface 12050)
-- 
--   Trace:                         YES (with Intel ITT)
-- 
--   Other third-party libraries:
--     Lapack:                      NO
--     Eigen:                       YES (ver 3.4.0)
--     Custom HAL:                  YES (carotene (ver 0.0.1))
--     Protobuf:                    build (3.19.1)
-- 
--   OpenCL:                        YES (no extra features)
--     Include path:                /home/orangepi/OpenCV/opencv-4.5.5/3rdparty/include/opencl/1.2
--     Link libraries:              Dynamic load
-- 
--   Python 3:
--     Interpreter:                 /usr/bin/python3 (ver 3.10.12)
--     Libraries:                   /usr/lib/aarch64-linux-gnu/libpython3.10.so (ver 3.10.12)
--     numpy:                       /usr/lib/python3/dist-packages/numpy/core/include (ver 1.21.5)
--     install path:                lib/python3.10/dist-packages/cv2/python-3.10
-- 
--   Python (for build):            /usr/bin/python2.7
-- 
--   Java:                          
--     ant:                         NO
--     JNI:                         NO
--     Java wrappers:               NO
--     Java tests:                  NO
-- 
--   Install to:                    /usr/local
-- -----------------------------------------------------------------
-- 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/orangepi/OpenCV/opencv-4.5.5/build

CPU 코어 개수 확인

orangepi@orangepi5plus:~/OpenCV/opencv-4.5.5/build$ grep -c processor /proc/cpuinfo
8

OpenCV 컴파일

orangepi@orangepi5plus:~/OpenCV/opencv-4.5.5/build$ make -j8

OpenCV 설치

orangepi@orangepi5plus:~/OpenCV/opencv-4.5.5/build$ sudo make install 
orangepi@orangepi5plus:~/OpenCV/opencv-4.5.5/build$ sudo ldconfig

OpenCV 설치 확인

파이썬

orangepi@orangepi5plus:~/OpenCV/opencv-4.5.5/build$ python
Python 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'4.5.5'
>>> exit()

C++

#include "opencv2/opencv.hpp"

using namespace cv;
using namespace std;

int main( int argc, char** argv ) {
  cout << "OpenCV version : " << CV_VERSION << endl;
  cout << "Major version : " << CV_MAJOR_VERSION << endl;
  cout << "Minor version : " << CV_MINOR_VERSION << endl;
  cout << "Subminor version : " << CV_SUBMINOR_VERSION << endl; 
}
orangepi@orangepi5plus:~$ g++ version_check.cpp -o version_check -std=c++11 `pkg-config --cflags --libs opencv4`
orangepi@orangepi5plus:~$ ./version_check
OpenCV version : 4.5.5
Major version : 4
Minor version : 5
Subminor version : 5
728x90
728x90

출처

Python3 설치

orangepi@orangepi5:~$ sudo apt install python3 python3-pip
orangepi@orangepi5:~$ python3 --version
Python 3.10.6
orangepi@orangepi5:~$ pip3 --version
pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)

Jupyter Notebook 설치

orangepi@orangepi5:~$ sudo -H pip3 install jupyter
orangepi@orangepi5:~$ jupyter --version
Selected Jupyter core packages...
IPython          : 8.9.0
ipykernel        : 6.20.2
ipywidgets       : 8.0.4
jupyter_client   : 8.0.2
jupyter_core     : 5.2.0
jupyter_server   : 2.2.0
jupyterlab       : not installed
nbclient         : 0.7.2
nbconvert        : 7.2.9
nbformat         : 5.7.3
notebook         : 6.5.2
qtconsole        : 5.4.0
traitlets        : 5.9.0

Jupyter Notebook 환경 설정

orangepi@orangepi5:~$ jupyter notebook --generate-config
Writing default config to: /home/orangepi/.jupyter/jupyter_notebook_config.py

암호 생성

orangepi@orangepi5:~$ cd .jupyter/
orangepi@orangepi5:~/.jupyter$ ls
jupyter_notebook_config.py  migrated
orangepi@orangepi5:~/.jupyter$ python3
Python 3.10.6 (main, Nov 14 2022, 16:10:14) [GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from notebook.auth import passwd
>>> passwd()
Enter password: 
Verify password: 
'argon2:$argon2id$v=19$m=10240,t=10,p=8$Vl7CWpGCIIvCCE3xRc8fkw$IRE5DSzO6WDw/REgmYO7u08PFqHvGxQ0t9OA1jQ4jks'
>>> quit()

jupyter_notebook_config.py 편집

orangepi@orangepi5:~/.jupyter$ vi ~/.jupyter/jupyter_notebook_config.py
jupyter_notebook_config.py 파일
## Set the Access-Control-Allow-Origin header
#  
#          Use '*' to allow any origin to access your server.
#  
#          Takes precedence over allow_origin_pat.
#  Default: ''
c.NotebookApp.allow_origin = '*'

## The IP address the notebook server will listen on.
#  Default: 'localhost'
c.NotebookApp.ip = '0.0.0.0'

## Hashed password to use for web authentication.
#  
#                        To generate, type in a python/IPython shell:
#  
#                          from notebook.auth import passwd; passwd()
#  
#                        The string should be of the form type:salt:hashed-
#  password.
#  Default: ''
c.NotebookApp.password = 'argon2:$argon2id$v=19$m=10240,t=10,p=8$Vl7CWpGCIIvCCE3xRc8fkw$IRE5DSzO6WDw/REgmYO7u08PFqHvGxQ0t9OA1jQ4jks'

작업 디렉토리 생성

orangepi@orangepi5:~$ cd ~
orangepi@orangepi5:~$ mkdir notebookDir

jupyter-notebook 실행 경로 확인

orangepi@orangepi5:~$ whereis jupyter-notebook
jupyter-notebook: /usr/local/bin/jupyter-notebook/pre>

서비스 등록

서비스(jupyter.service) 파일 생성

orangepi@orangepi5:/etc/systemd/system$ sudo vi /etc/systemd/system/jupyter.service
jupyter.service 파일
[Unit]
Description=Jupyter Notebook Server

[Service]
Type=test
PIDFile=/run/jupyter.pid
User=orangepi
ExecStart=/usr/local/bin/jupyter-notebook
WorkingDirectory=/home/orangepi/notebookDir

[Install]
WantedBy=multi-user.target

서비스 등록

orangepi@orangepi5:/etc/systemd/system$ sudo systemctl enable jupyter.service

서비스 시작

orangepi@orangepi5:/etc/systemd/system$ sudo systemctl start jupyter

서비스 실행 상태 확인

orangepi@orangepi5:/etc/systemd/system$ sudo systemctl status jupyter
● jupyter.service - Jupyter Notebook Server
     Loaded: loaded (/etc/systemd/system/jupyter.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2023-02-02 22:36:43 CST; 2s ago
   Main PID: 4537 (jupyter-noteboo)
      Tasks: 1 (limit: 18821)
     Memory: 67.2M
        CPU: 1.166s
     CGroup: /system.slice/jupyter.service
             └─4537 /usr/bin/python3 /usr/local/bin/jupyter-notebook
 
Feb 02 22:36:43 orangepi5 systemd[1]: Started Jupyter Notebook Server.
Feb 02 22:36:45 orangepi5 jupyter-notebook[4537]: [I 22:36:45.912 NotebookApp] Serving notebooks from local directory: /home/orangepi/notebo>
Feb 02 22:36:45 orangepi5 jupyter-notebook[4537]: [I 22:36:45.912 NotebookApp] Jupyter Notebook 6.5.2 is running at:
Feb 02 22:36:45 orangepi5 jupyter-notebook[4537]: [I 22:36:45.912 NotebookApp] http://orangepi5:8888/
Feb 02 22:36:45 orangepi5 jupyter-notebook[4537]: [I 22:36:45.912 NotebookApp] Use Control-C to stop this server and shut down all kernels (>
Feb 02 22:36:45 orangepi5 jupyter-notebook[4537]: [W 22:36:45.917 NotebookApp] No web browser found: could not locate runnable browser.
lines 1-16/16 (END)

Jupyter Notebook 실행

728x90
728x90

출처

리눅스 스토리지 디바이스 정보 확인

orangepi@orangepi5:~$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
mtdblock0    31:0    0    16M  0 disk 
mmcblk1     179:0    0  59.5G  0 disk 
├─mmcblk1p1 179:1    0   256M  0 part /boot
└─mmcblk1p2 179:2    0  58.6G  0 part /var/log.hdd
                                      /
zram0       254:0    0   7.7G  0 disk [SWAP]
zram1       254:1    0   200M  0 disk /var/log
nvme0n1     259:0    0 238.5G  0 disk 
├─nvme0n1p1 259:1    0    16M  0 part 
└─nvme0n1p2 259:2    0 238.5G  0 part

기존 파티션 삭제

orangepi@orangepi5:~$ sudo gdisk
GPT fdisk (gdisk) version 1.0.8
 
Type device filename, or press <Enter> to exit: /dev/nvme0n1                      
Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present
 
Found valid GPT with protective MBR; using GPT.
 
Command (? for help): p
Disk /dev/nvme0n1: 500118192 sectors, 238.5 GiB
Model: SAMSUNG MZALQ256HBJD-00BL2              
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): AF6C9907-FDCE-4BA6-AD91-5233C180686B
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 32768, last usable sector is 8945670
Partitions will be aligned on 2048-sector boundaries
Total free space is 7 sectors (3.5 KiB)
 
Number  Start (sector)    End (sector)  Size       Code  Name
   1           32768         8421375   4.0 GiB     0700  vfat
   2         8421376         8945663   256.0 MiB   8300  userdata
 
Command (? for help): d
Partition number (1-2): 2
 
Command (? for help): d
Using 1
 
Command (? for help): w  
Warning! Secondary header is placed too early on the disk! Do you want to
correct this problem? (Y/N): Y
Have moved second header and partition table to correct location.
 
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
 
Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/nvme0n1.
The operation has completed successfully.

Batocera.linux 업로드

orangepi@orangepi5:~$ sudo apt install lrzsz
orangepi@orangepi5:~$ rz
rz waiting to receive.
Starting zmodem transfer.  Press Ctrl+C to cancel.
Transferring batocera-rk3588-36-20230116-orig-opi5.img.gz...
  100% 1585388 KB    18222 KB/sec    00:01:27       0 Errors

NVMe에 Batocera.linux 설치

orangepi@orangepi5:~$ gzip -d batocera-rk3588-36-20230116-orig-opi5.img.gz
orangepi@orangepi5:~$ sudo dd if=./batocera-rk3588-36-20230116-orig-opi5.img of=/dev/nvme0n1 bs=4M status=progress
4538236928 bytes (4.5 GB, 4.2 GiB) copied, 66 s, 68.7 MB/s
1092+1 records in
1092+1 records out
4580200448 bytes (4.6 GB, 4.3 GiB) copied, 69.8388 s, 65.6 MB/s
orangepi@orangepi5:~$ sync

NVMe에 bootloader 설치

orangepi-config 실행

orangepi@orangepi5:~$ sudo orangepi-config

NVMe에 bootloader 설치

Batocera.linux 실행화면

728x90
728x90

출처

Jenkins 도커 이미지 다운로드

orangepi@orangepi5:~$ docker pull jenkins/jenkins:lts
lts: Pulling from jenkins/jenkins
c3e6129b48b6: Pull complete 
Digest: sha256:f8b19176b7d4f62cc40ae8605fbbfb2abc6ed7aec9f36989fc7b3e616371b956
Status: Downloaded newer image for jenkins/jenkins:lts
docker.io/jenkins/jenkins:lts

Jenkins 도커 이미지 실행 (브릿지모드)

orangepi@orangepi5:~$ docker run --name jenkins-docker \
  -p 7979:8080 \
  -p 50000:50000 \
  -d -v /var/run/docker.sock:/var/run/docker.sock \
  -v jenkins_home:/var/jenkins_home \
  -u root jenkins/jenkins:lts
7892e850a3702ee25690e80a84ae661619cd459a116164d80d2874472526a199

Jenkins 실행 확인

orangepi@orangepi5:~$ docker ps -a
CONTAINER ID   IMAGE                       COMMAND                  CREATED         STATUS                 PORTS                                                                                      NAMES
7892e850a370   jenkins/jenkins:lts         "/usr/bin/tini -- /u…"   3 minutes ago   Up 3 minutes           0.0.0.0:50000->50000/tcp, :::50000->50000/tcp, 0.0.0.0:7979->8080/tcp, :::7979->8080/tcp   jenkins-docker

Jenkins 어드민 암호 확인

orangepi@orangepi5:~$ docker logs jenkins-docker
Running from: /usr/share/jenkins/jenkins.war
webroot: EnvVars.masterEnvVars.get("JENKINS_HOME")
 
... 생략 ...
 
2023-01-24 09:51:37.750+0000 [id=40]    INFO    jenkins.install.SetupWizard#init: 
 
*************************************************************
*************************************************************
*************************************************************
 
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
 
6a5f9d0833fe467da39d124d93547dab
 
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
 
*************************************************************
*************************************************************
*************************************************************
 
2023-01-24 09:51:55.013+0000 [id=40]    INFO    jenkins.InitReactorRunner$1#onAttained: Completed initialization
2023-01-24 09:51:55.051+0000 [id=24]    INFO    hudson.lifecycle.Lifecycle#onReady: Jenkins is fully up and running
2023-01-24 09:51:55.947+0000 [id=58]    INFO    h.m.DownloadService$Downloadable#load: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller
2023-01-24 09:51:55.948+0000 [id=58]    INFO    hudson.util.Retrier#start: Performed the action check updates server successfully at the attempt #1

Jenkins 접속

접속주소 : http://192.168.1.26:7979/

728x90

+ Recent posts