Debian/GraalVM: Difference between revisions

From Chorke Wiki
Jump to navigation Jump to search
(Created page with "{| | colspan="2" | ---- |- | valign="top" | '''Network Config:''' <source lang="bash"> cat <<EOF > /Volumes/boot/wpa_supplicant.conf country=MY ctrl_interface=DIR=/var/run/wpa...")
 
 
(19 intermediate revisions by the same user not shown)
Line 59: Line 59:
| valign="top" |
| valign="top" |
<source lang="bash">
<source lang="bash">
sudo apt install openjdk-8-jre
sudo apt install openjdk-11-jre
sudo apt install openjdk-11-jre
sudo apt install openjdk-17-jre
</source>
</source>


| valign="top" |
| valign="top" |
<source lang="bash">
<source lang="bash">
sudo apt install openjdk-8-jdk
sudo apt install openjdk-11-jdk
sudo apt install openjdk-11-jdk
sudo apt install openjdk-17-jdk
</source>
</source>


Line 83: Line 79:
export ACADEMIA_HOME="$HOME/.chorke/academia"
export ACADEMIA_HOME="$HOME/.chorke/academia"
mkdir -p $ACADEMIA_HOME/var/download
mkdir -p $ACADEMIA_HOME/var/download
cd $ACADEMIA_HOME/var/download
sudo mkdir -p /opt/cli
mkdir -p /opt/cli
</source>
</source>
|-
|-
Line 131: Line 126:
| valign="top"|
| valign="top"|
<source lang="bash">
<source lang="bash">
tar -xvzf $ACADEMIA_HOME/var/download/\
sudo tar -xvzf $ACADEMIA_HOME/var/download/\
graalvm-ce-java11-linux-aarch64-21.3.0.tar.gz\
graalvm-ce-java11-linux-aarch64-21.3.0.tar.gz\
  -C /opt/cli
  -C /opt/cli


ln -s /opt/cli/graalvm-ce-java11-21.3.0\
sudo ln -s /opt/cli/graalvm-ce-java11-21.3.0\
  /usr/lib/jvm/graalvm-ce-java11-21.3.0
  /usr/lib/jvm/graalvm-ce-java11-21.3.0


update-alternatives --install /usr/bin/java java\
sudo update-alternatives --install /usr/bin/java java\
  /usr/lib/jvm/graalvm-ce-java11-21.3.0/bin/java 1
  /usr/lib/jvm/graalvm-ce-java11-21.3.0/bin/java 1


update-alternatives --install /usr/bin/javac javac\
sudo update-alternatives --install /usr/bin/javac javac\
  /usr/lib/jvm/graalvm-ce-java11-21.3.0/bin/javac 1
  /usr/lib/jvm/graalvm-ce-java11-21.3.0/bin/javac 1


update-alternatives --install /usr/bin/gu gu\
sudo update-alternatives --install /usr/bin/gu gu\
  /usr/lib/jvm/graalvm-ce-java11-21.3.0/bin/gu 1
  /usr/lib/jvm/graalvm-ce-java11-21.3.0/bin/gu 1


gu install native-image
sudo gu install native-image
update-alternatives --install /usr/bin/native-image native-image\
sudo update-alternatives --install /usr/bin/native-image native-image\
  /usr/lib/jvm/graalvm-ce-java11-21.3.0/bin/native-image 1
  /usr/lib/jvm/graalvm-ce-java11-21.3.0/bin/native-image 1


Line 156: Line 151:
| valign="top" |
| valign="top" |
<source lang="bash">
<source lang="bash">
tar -xvzf $ACADEMIA_HOME/var/download/\
sudo tar -xvzf $ACADEMIA_HOME/var/download/\
graalvm-ce-java17-linux-aarch64-21.3.0.tar.gz\
graalvm-ce-java17-linux-aarch64-21.3.0.tar.gz\
  -C /opt/cli
  -C /opt/cli


ln -s /opt/cli/graalvm-ce-java17-21.3.0\
sudo ln -s /opt/cli/graalvm-ce-java17-21.3.0\
  /usr/lib/jvm/graalvm-ce-java17-21.3.0
  /usr/lib/jvm/graalvm-ce-java17-21.3.0


update-alternatives --install /usr/bin/java java\
sudo update-alternatives --install /usr/bin/java java\
  /usr/lib/jvm/graalvm-ce-java17-21.3.0/bin/java 2
  /usr/lib/jvm/graalvm-ce-java17-21.3.0/bin/java 2


update-alternatives --install /usr/bin/javac javac\
sudo update-alternatives --install /usr/bin/javac javac\
  /usr/lib/jvm/graalvm-ce-java17-21.3.0/bin/javac 2
  /usr/lib/jvm/graalvm-ce-java17-21.3.0/bin/javac 2


update-alternatives --install /usr/bin/gu gu\
sudo update-alternatives --install /usr/bin/gu gu\
  /usr/lib/jvm/graalvm-ce-java17-21.3.0/bin/gu 2
  /usr/lib/jvm/graalvm-ce-java17-21.3.0/bin/gu 2


gu install native-image
sudo gu install native-image
update-alternatives --install /usr/bin/native-image native-image\
sudo update-alternatives --install /usr/bin/native-image native-image\
  /usr/lib/jvm/graalvm-ce-java17-21.3.0/bin/native-image 2
  /usr/lib/jvm/graalvm-ce-java17-21.3.0/bin/native-image 2


Line 198: Line 193:
| valign="top"|
| valign="top"|
<source lang="bash">
<source lang="bash">
sudo apt install maven-openjdk17
sudo apt install maven
sudo apt install maven-openjdk11
sudo apt install maven-openjdk8
</source>
</source>


| valign="top" |
| valign="top" |
<source lang="bash">
<source lang="bash">
sudo apt remove maven-openjdk17
sudo apt install ant
sudo apt remove maven-openjdk11
sudo apt remove maven-openjdk8
</source>
</source>


| valign="top" |
| valign="top" |
<source lang="bash">
<source lang="bash">
sudo apt install docker
sudo apt install ant
sudo apt install ivy
sudo apt install ivy
</source>
</source>
Line 251: Line 240:
|}
|}


==Knowledge==
==Quarkus==
{|
{|
|valign="top"|
|
sudo dnf repoquery --unsatisfied
<source lang="bash">
sudo dnf repoquery --duplicates
mkdir -p $ACADEMIA_HOME/dev && cd $ACADEMIA_HOME/dev
sudo dnf install rpmconf
git clone https://github.com/quarkusio/quarkus-quickstarts.git
sudo rpmconf -a
cd ./quarkus-quickstarts/getting-started
</source>


|valign="top"|
|
  sudo dnf list extras
<source lang="bash">
sudo dnf autoremove
mvn compile quarkus:dev
  sudo dnf update
mvn package -Pnative
mvn verify -Pnative
 
</source>
|valign="top"|
|-
sudo dnf system-upgrade download --releasever=35
|colspan="2"|
sudo dnf install dnf-plugin-system-upgrade
----
sudo dnf upgrade --refresh
|-
|colspan="2"|
<source lang="bash">
upx -7 -k target/getting-started-1.0.0-SNAPSHOT-runner
:'
                      Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2020
UPX 3.96        Markus Oberhumer, Laszlo Molnar & John Reiser  Jan 23rd 2020


        File size        Ratio      Format      Name
    --------------------  ------  -----------  -----------
1/5  [***************************................................]  26.6%  /
'
</source>
|-
|-
|valign="top" colspan="3"|
|colspan="2"|
----
----
|-
|-
|colspan="2"|
<source lang="bash">
ls -lah target/
:'
5.6K getting-started-1.0.0-SNAPSHOT.jar
4.0K getting-started-1.0.0-SNAPSHOT-native-image-source-jar
40.0M getting-started-1.0.0-SNAPSHOT-runne~
13.0M getting-started-1.0.0-SNAPSHOT-runner
'
</source>
|}
==Knowledge==
{|
|valign="top"|
|valign="top"|
  sudo dnf install snapd
  sudo apt install snapd
  sudo systemctl status snapd
  sudo systemctl status snapd
  sudo systemctl enable snapd
  sudo systemctl enable snapd
Line 305: Line 320:


|valign="top"|
|valign="top"|
  sudo dnf list docker-ce --showduplicates|sort -r
  apt-cache madison docker-ce
  podman build -f src/main/docker/Dockerfile.native\
  docker build -f src/main/docker/Dockerfile.native\
  -t quarkus-quickstart/getting-started .
  -t quarkus-quickstart/getting-started .


Line 319: Line 334:


|valigan="top"|
|valigan="top"|
  podman network ls
  docker network ls
  podman image ls
  docker image ls
  podman ps -a
  docker ps -a


|valign="top"|
|valign="top"|
Line 334: Line 349:
|valign="top"|
|valign="top"|
  $GRAALVM_HOME/bin/gu install native-image
  $GRAALVM_HOME/bin/gu install native-image
  sudo dnf install icedtea-web java-openjdk
  sudo apt install icedtea-netx default-jdk
  sudo alternatives --config java
  sudo update-alternatives --config java


| valign="top" |
| valign="top" |
Line 356: Line 371:
|-
|-
|valign="top" colspan="2"|
|valign="top" colspan="2"|
ssh-keygen -f "/home/chorke/.ssh/known_hosts" -R "10.19.83.111"
ssh-keygen -f ~/.ssh/known_hosts -R 10.19.83.111
|valign="bottom"|
apt search upx
sudo apt install upx-ucl
|-
| valign="top" colspan="3" |
----
|-
| valign="top" colspan="2" |
<source lang="bash">
<source lang="bash">
upx -7 -k target/java-native-apps-1.0.0.GA
upx -7 -k target/java-native-apps-1.0.0.GA
Line 363: Line 390:
UPX 3.96        Markus Oberhumer, Laszlo Molnar & John Reiser  Jan 23rd 2020
UPX 3.96        Markus Oberhumer, Laszlo Molnar & John Reiser  Jan 23rd 2020


        File size        Ratio      Format      Name
        File size        Ratio      Format      Name
  --------------------  ------  -----------  -----------
    --------------------  ------  -----------  -----------
  41083584 -> 12630492   30.74%   linux/arm64  java-native-apps-1.0.0.GA
  1/5  [***************************................................]   26.6% /
'
'
</source>
</source>


|valign="bottom"|
| valign="top" |
apt search upx
sudo apt install upx


|}
|}
Line 399: Line 424:
* [[Ubuntu/Raspberry Pi]]
* [[Ubuntu/Raspberry Pi]]
* [[Ubuntu/GraalVM]]
* [[Ubuntu/GraalVM]]
* [[Raspberry Pi]]
* [[Fedora/GraalVM]]


| valign="top" |
| valign="top" |
Line 419: Line 444:
* [https://pkgs.alpinelinux.org/package/v3.15/main/aarch64/libc6-compat <code>glibc</code> compatibility libraries for Alpine <code>AArch64</code>]
* [https://pkgs.alpinelinux.org/package/v3.15/main/aarch64/libc6-compat <code>glibc</code> compatibility libraries for Alpine <code>AArch64</code>]
* [https://pkgs.alpinelinux.org/package/v3.15/main/x86_64/libc6-compat <code>glibc</code> compatibility libraries for Alpine <code>x86_64</code>]
* [https://pkgs.alpinelinux.org/package/v3.15/main/x86_64/libc6-compat <code>glibc</code> compatibility libraries for Alpine <code>x86_64</code>]
* [https://blog.softwaremill.com/small-fast-docker-images-using-graalvms-native-image-99c0bc92e70b Small & fast Docker images using GraalVM]
* [https://www.batey.info/graalvm-docker-small-images.html Tiny docker images for Java with GraalVM]
* [https://zeringue.io/post/graalvm-gradle-docker/ Build Slim Java Native Container]
* [https://www.graalvm.org/reference-manual/native-image/StaticImages/ Static & Mostly Static Images]
* [https://pkgs.alpinelinux.org/packages?name=musl&branch=v3.15 Alpine <code>musl libc</code> apk]
* [[MacOS/GraalVM]]
* [[Raspberry Pi]]
* [[GraalVM]]


| valign="top" |
| valign="top" |

Latest revision as of 08:20, 11 March 2022


Network Config:

cat <<EOF > /Volumes/boot/wpa_supplicant.conf
country=MY
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
scan_ssid=1
ssid="ChorkeOrg_2.4GHz"
psk="sadaqah!"
}
EOF

System Update:

sudo apt update
sudo apt list --upgradable
sudo apt upgrade

systemctl list-unit-files
systemctl daemon-reload

sudo nmcli dev wifi con 'ChorkeOrg' password 'sadaqah!'
sudo nmcli dev wifi rescan
sudo nmcli dev wifi
sudo nmcli con

Timezone:

sudo timedatectl set-timezone 'Asia/Kuala_Lumpur'
sudo timedatectl set-time '2010-10-10 10:10:10'
sudo hostnamectl set-hostname debian
sudo timedatectl set-ntp true

Cockpit:

https://10.19.83.111:9090/
https://10.19.83.211:9090/
http://10.19.83.111/
http://10.19.83.211/

Install

sudo apt install openjdk-11-jre
sudo apt install openjdk-11-jdk

sudo apt install build-essential libz-dev zlib1g-dev
sudo apt install git
sudo su

export ACADEMIA_HOME="$HOME/.chorke/academia"
mkdir -p $ACADEMIA_HOME/var/download
sudo mkdir -p /opt/cli

mkdir -p $ACADEMIA_HOME/etc/env/
cat << \EOF >> $ACADEMIA_HOME/etc/env/system.sh
# chorke academia env
export ACADEMIA_HOME="$HOME/.chorke/academia"
export ACADEMIA_DEV="$ACADEMIA_HOME/dev"

EOF
cat << \EOF >> $HOME/.bashrc

# chorke academia env
if [ -f "$HOME/.chorke/academia/etc/env/system.sh" ]; then
    source $HOME/.chorke/academia/etc/env/system.sh
fi
EOF

wget -c https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-21.3.0/\
graalvm-ce-java11-linux-aarch64-21.3.0.tar.gz -P $ACADEMIA_HOME/var/download

wget -c https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-21.3.0/\
graalvm-ce-java17-linux-aarch64-21.3.0.tar.gz -P $ACADEMIA_HOME/var/download

sudo tar -xvzf $ACADEMIA_HOME/var/download/\
graalvm-ce-java11-linux-aarch64-21.3.0.tar.gz\
 -C /opt/cli

sudo ln -s /opt/cli/graalvm-ce-java11-21.3.0\
 /usr/lib/jvm/graalvm-ce-java11-21.3.0

sudo update-alternatives --install /usr/bin/java java\
 /usr/lib/jvm/graalvm-ce-java11-21.3.0/bin/java 1

sudo update-alternatives --install /usr/bin/javac javac\
 /usr/lib/jvm/graalvm-ce-java11-21.3.0/bin/javac 1

sudo update-alternatives --install /usr/bin/gu gu\
 /usr/lib/jvm/graalvm-ce-java11-21.3.0/bin/gu 1

sudo gu install native-image
sudo update-alternatives --install /usr/bin/native-image native-image\
 /usr/lib/jvm/graalvm-ce-java11-21.3.0/bin/native-image 1

export GRAALVM_HOME=/usr/lib/jvm/graalvm-ce-java11-21.3.0
sudo tar -xvzf $ACADEMIA_HOME/var/download/\
graalvm-ce-java17-linux-aarch64-21.3.0.tar.gz\
 -C /opt/cli

sudo ln -s /opt/cli/graalvm-ce-java17-21.3.0\
 /usr/lib/jvm/graalvm-ce-java17-21.3.0

sudo update-alternatives --install /usr/bin/java java\
 /usr/lib/jvm/graalvm-ce-java17-21.3.0/bin/java 2

sudo update-alternatives --install /usr/bin/javac javac\
 /usr/lib/jvm/graalvm-ce-java17-21.3.0/bin/javac 2

sudo update-alternatives --install /usr/bin/gu gu\
 /usr/lib/jvm/graalvm-ce-java17-21.3.0/bin/gu 2

sudo gu install native-image
sudo update-alternatives --install /usr/bin/native-image native-image\
 /usr/lib/jvm/graalvm-ce-java17-21.3.0/bin/native-image 2

export GRAALVM_HOME=/usr/lib/jvm/graalvm-ce-java17-21.3.0

sudo update-alternatives --config native-image
sudo update-alternatives --config javac
sudo update-alternatives --config java
sudo update-alternatives --config gu
ls -lah /usr/lib/jvm

Maven

sudo apt install maven
sudo apt install ant
sudo apt install ivy

<profile>
  <id>native-image-fargate</id>
  <build>
    <plugins>
      <plugin>
        <groupId>com.oracle.substratevm</groupId>
        <artifactId>native-image-maven-plugin</artifactId>
        <version>${graal.version}</version>
        <executions>
          <execution>
            <goals>
              <goal>native-image</goal>
            </goals>
            <phase>package</phase>
          </execution>
        </executions>
        <configuration>
          <mainClass>${vertx.verticle}</mainClass>
          <imageName>${project.artifactId}</imageName>
          <buildArgs>--enable-all-security-services -H:+ReportUnsupportedElementsAtRuntime --allow-incomplete-classpath</buildArgs>
        </configuration>
      </plugin>
    </plugins>
  </build>
</profile>

Quarkus

mkdir -p $ACADEMIA_HOME/dev && cd $ACADEMIA_HOME/dev
git clone https://github.com/quarkusio/quarkus-quickstarts.git
cd ./quarkus-quickstarts/getting-started
mvn compile  quarkus:dev
mvn package -Pnative
mvn verify  -Pnative

upx -7 -k target/getting-started-1.0.0-SNAPSHOT-runner
:'
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2020
UPX 3.96        Markus Oberhumer, Laszlo Molnar & John Reiser   Jan 23rd 2020

         File size         Ratio      Format      Name
    --------------------   ------   -----------   -----------
 1/5  [***************************................................]   26.6%  /
'

ls -lah target/
:'
 5.6K getting-started-1.0.0-SNAPSHOT.jar
 4.0K getting-started-1.0.0-SNAPSHOT-native-image-source-jar
40.0M getting-started-1.0.0-SNAPSHOT-runne~
13.0M getting-started-1.0.0-SNAPSHOT-runner
'

Knowledge

sudo apt install snapd
sudo systemctl status snapd
sudo systemctl enable snapd
sudo snap install lxd
sudo systemctl status snapd
sudo systemctl restart snapd
lxc image list images: archlinux arm64
lxc image list images: ubuntu arm64
lxc image list images: alpine arm64

lxc launch images:opensuse/15.3 agronomy
lxc launch images:apertis/v2021 robotics
lxc launch images:alpine/3.15 academia
lxc exec academia sh
lxc exec agronomy sh
lxc exec robotics sh
apt-cache madison docker-ce
docker build -f src/main/docker/Dockerfile.native\
-t quarkus-quickstart/getting-started .

lxc network show lxdbr0 
lxc network list
lxc image list
docker network ls
docker image ls
docker ps -a
export GRAALVM_HOME=/opt/cli/graalvm-ce-java11-21.3.0
mvn compile quarkus:dev
mvn package -Pnative

$GRAALVM_HOME/bin/gu install native-image
sudo apt install icedtea-netx default-jdk
sudo update-alternatives --config java
sudo apt install openjdk-8-jre
sudo apt install openjdk-11-jre
sudo apt install openjdk-17-jre
sudo apt install openjdk-8-jdk
sudo apt install openjdk-11-jdk
sudo apt install openjdk-17-jdk

ssh-keygen -f "/home/chorke/.ssh/known_hosts" -R "10.19.83.111"
ssh-keygen -f ~/.ssh/known_hosts -R 10.19.83.111
apt search upx
sudo apt install upx-ucl

upx -7 -k target/java-native-apps-1.0.0.GA
:'
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2020
UPX 3.96        Markus Oberhumer, Laszlo Molnar & John Reiser   Jan 23rd 2020

         File size         Ratio      Format      Name
    --------------------   ------   -----------   -----------
 1/5  [***************************................................]   26.6%  /
'

References