ciao a tutti
il problema che ho riguarda RunCommand (unit process) ma si tratta di un caso particolare in quanto sto facendo delle prove con i container linux LXD.
Il mio sistema è DEVUAN:
uname -a
Linux myhost 6.1.0-30-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.124-1 (2025-01-12) x86_64 GNU/Linux
La versione di LXD:
Il programma è banalissimo, lo vedete sotto e, una volta compilato, deve essere lanciato da shell come utente root o con:
Quì sotto il codice.
program testlxc;
uses process;
const
LXC_BIN = '/usr/bin/lxc';
var AStdOut: string;
begin
Writeln(LXC_BIN + ' LIST ');
RunCommand(LXC_BIN, ['list'], AStdOut); // questo funziona
Writeln('output: >>');
Writeln(AStdOut);
Writeln('<<');
Writeln(LXC_BIN + ' INIT ');
RunCommand(LXC_BIN, ['init', 'ubuntu:20.04', 'u1'], AStdOut); // quì si blocca
Writeln('output: >>');
Writeln(AStdOut);
Writeln('<<');
end.
La prima invocazione di RunCommand con il parametro 'list', funziona correttamente come ci si aspetta.
La seconda invocazione, con parametro 'init' invece si blocca.
Il risultato è il seguente:
$ sudo ./testlxc
/usr/bin/lxc LIST
output: >>
+------+---------+------+------+-----------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+---------+------+------+-----------+-----------+
| m1 | STOPPED | | | CONTAINER | 0 |
+------+---------+------+------+-----------+-----------+
<<
/usr/bin/lxc INIT
Non riesco a capire dov'è il problema.
Qualche idea?
grazie
nomorelogic
Edit:
chiaramente eseguendo da terminale:
o
sudo lxc init ubuntu:20.04 u1
il tutto funziona correttamente e senza intoppi.
Edit 2:
ho postato la richiesta anche nel forum ufficiale
https://forum.lazarus.freepascal.org/index.php/topic,70123.msg546225/topicseen.html#new (https://forum.lazarus.freepascal.org/index.php/topic,70123.msg546225/topicseen.html#new)
ora nel log non c'è nulla riguardo ai lanci dei singoli container
sto cercando di capire se posso aumentare il livello di log
per ora ho trovato come lanciare un monitor
e questo è quello che mi visualizza tral lancio del programma in free pascal fino al crash
# lxc monitor --type=logging --pretty
DEBUG [2025-02-07T09:18:42+01:00] Event listener server handler started id=0291e421-5d89-4bb2-8652-c739d874f13f local=/var/lib/lxd/unix.socket remote=@
DEBUG [2025-02-07T09:18:46+01:00] Handling API request ip=@ method=GET protocol=unix url=/1.0 username=root
DEBUG [2025-02-07T09:18:46+01:00] Handling API request ip=@ method=GET protocol=unix url="/1.0/instances?filter=&recursion=2" username=root
DEBUG [2025-02-07T09:18:46+01:00] GetInstanceUsage started instance=m1 project=default
DEBUG [2025-02-07T09:18:46+01:00] GetInstanceUsage finished instance=m1 project=default
DEBUG [2025-02-07T09:19:05+01:00] Handling API request ip=@ method=GET protocol=unix url=/1.0 username=root
DEBUG [2025-02-07T09:19:05+01:00] Handling API request ip=@ method=GET protocol=unix url="/1.0/instances?filter=&recursion=2" username=root
DEBUG [2025-02-07T09:19:05+01:00] GetInstanceUsage started instance=m1 project=default
DEBUG [2025-02-07T09:19:05+01:00] GetInstanceUsage finished instance=m1 project=default
lanciando a riga di comando è un po' diverso...
mi sa che appena h omodo mi metto a cercare nei forum lxd...
# lxc monitor --type=logging --pretty
DEBUG [2025-02-07T10:04:23+01:00] Event listener server handler started id=10b3533a-8b5a-4c7d-9263-240ba7560f2b local=/var/lib/lxd/unix.socket remote=@
DEBUG [2025-02-07T10:04:38+01:00] Handling API request ip=@ method=GET protocol=unix url=/1.0 username=root
DEBUG [2025-02-07T10:04:38+01:00] Handling API request ip=@ method=GET protocol=unix url=/1.0/events username=root
DEBUG [2025-02-07T10:04:38+01:00] Event listener server handler started id=5b060cef-15ed-4846-81fc-9c3b029fea3a local=/var/lib/lxd/unix.socket remote=@
DEBUG [2025-02-07T10:04:38+01:00] Responding to instance create
DEBUG [2025-02-07T10:04:38+01:00] Handling API request ip=@ method=POST protocol=unix url=/1.0/instances username=root
DEBUG [2025-02-07T10:04:38+01:00] Started operation class=task description="Creating instance" operation=2f75a618-e686-42e7-8d02-58fb8e710b39 project=default
DEBUG [2025-02-07T10:04:38+01:00] New operation class=task description="Creating instance" operation=2f75a618-e686-42e7-8d02-58fb8e710b39 project=default
DEBUG [2025-02-07T10:04:38+01:00] Connecting to a remote simplestreams server URL="https://cloud-images.ubuntu.com/releases"
DEBUG [2025-02-07T10:04:38+01:00] Handling API request ip=@ method=GET protocol=unix url=/1.0/operations/2f75a618-e686-42e7-8d02-58fb8e710b39 username=root
DEBUG [2025-02-07T10:04:41+01:00] Acquiring lock for image fingerprint=7ec2b4a12cc3835adc983d3f73883ba35e32438a027715d4c233e88bb8fe6773
DEBUG [2025-02-07T10:04:41+01:00] Lock acquired for image fingerprint=7ec2b4a12cc3835adc983d3f73883ba35e32438a027715d4c233e88bb8fe6773
DEBUG [2025-02-07T10:04:41+01:00] Acquiring lock for image fingerprint=7ec2b4a12cc3835adc983d3f73883ba35e32438a027715d4c233e88bb8fe6773
DEBUG [2025-02-07T10:04:41+01:00] Image already exists in the DB fingerprint=7ec2b4a12cc3835adc983d3f73883ba35e32438a027715d4c233e88bb8fe6773
DEBUG [2025-02-07T10:04:41+01:00] Lock acquired for image fingerprint=7ec2b4a12cc3835adc983d3f73883ba35e32438a027715d4c233e88bb8fe6773
DEBUG [2025-02-07T10:04:41+01:00] Instance operation lock created action=create instance=u1 project=default reusable=false
INFO [2025-02-07T10:04:41+01:00] Creating instance ephemeral=false instance=u1 instanceType=container project=default
DEBUG [2025-02-07T10:04:41+01:00] Adding device device=eth0 instance=u1 instanceType=container project=default type=nic
DEBUG [2025-02-07T10:04:41+01:00] Adding device device=root instance=u1 instanceType=container project=default type=disk
INFO [2025-02-07T10:04:41+01:00] Created container ephemeral=false instance=u1 instanceType=container project=default
DEBUG [2025-02-07T10:04:41+01:00] CreateInstanceFromImage started instance=u1 project=default
DEBUG [2025-02-07T10:04:41+01:00] EnsureImage started fingerprint=7ec2b4a12cc3835adc983d3f73883ba35e32438a027715d4c233e88bb8fe6773
DEBUG [2025-02-07T10:04:41+01:00] Setting image volume size fingerprint=7ec2b4a12cc3835adc983d3f73883ba35e32438a027715d4c233e88bb8fe6773 size=
DEBUG [2025-02-07T10:04:41+01:00] Checking image volume size fingerprint=7ec2b4a12cc3835adc983d3f73883ba35e32438a027715d4c233e88bb8fe6773
DEBUG [2025-02-07T10:04:41+01:00] EnsureImage finished fingerprint=7ec2b4a12cc3835adc983d3f73883ba35e32438a027715d4c233e88bb8fe6773
DEBUG [2025-02-07T10:04:41+01:00] Checking volume size instance=u1 project=default
DEBUG [2025-02-07T10:04:41+01:00] Set new volume size instance=u1 project=default size=
DEBUG [2025-02-07T10:04:41+01:00] Mounted ZFS dataset dev=default/containers/u1 driver=zfs path=/var/lib/lxd/storage-pools/default/containers/u1 pool=default
DEBUG [2025-02-07T10:04:41+01:00] Unmounted ZFS dataset dev=default/containers/u1 driver=zfs path=/var/lib/lxd/storage-pools/default/containers/u1 pool=default volName=u1
DEBUG [2025-02-07T10:04:41+01:00] UpdateInstanceBackupFile started instance=u1 project=default
DEBUG [2025-02-07T10:04:41+01:00] CreateInstanceFromImage finished instance=u1 project=default
DEBUG [2025-02-07T10:04:41+01:00] Mounted ZFS dataset dev=default/containers/u1 driver=zfs path=/var/lib/lxd/storage-pools/default/containers/u1 pool=default
DEBUG [2025-02-07T10:04:41+01:00] UpdateInstanceBackupFile finished instance=u1 project=default
DEBUG [2025-02-07T10:04:41+01:00] Unmounted ZFS dataset dev=default/containers/u1 driver=zfs path=/var/lib/lxd/storage-pools/default/containers/u1 pool=default volName=u1
DEBUG [2025-02-07T10:04:41+01:00] Success for operation class=task description="Creating instance" operation=2f75a618-e686-42e7-8d02-58fb8e710b39 project=default
DEBUG [2025-02-07T10:04:41+01:00] Instance operation lock finished action=create err="<nil>" instance=u1 project=default reusable=false
DEBUG [2025-02-07T10:04:41+01:00] Handling API request ip=@ method=GET protocol=unix url=/1.0/instances/u1 username=root
DEBUG [2025-02-07T10:04:41+01:00] Event listener server handler stopped listener=5b060cef-15ed-4846-81fc-9c3b029fea3a local=/var/lib/lxd/unix.socket remote=@
comunque questo programmino i C funziona benissimo...
#include <stdlib.h>
#include <stdio.h>
int main() {
int status = 0;
printf("lxc LIST\n");
printf("Output >> \n");
status = system("/usr/bin/lxc list -f json");
printf("<< (Status=%d)\n\n", status);
printf("lxc INIT\n");
printf("Output >> \n");
status = system("/usr/bin/lxc init ubuntu:20.04 u1");
printf("<< (Status=%d)\n");
return 0;
}