My Blog

How to install Wan2GP with AMD Radeon 7600 XT (16GB) on Linux (Ubuntu 22.04) for local AI video generation

So, I was curious about Wan2GP (I heard about WAN2.2) and found that all the install instructions are for those with NVidia graphic card (Linux & Windows) or AMD graphic card (Windows only).

WanGP by DeepBeepMeep can be downloaded from https://github.com/deepbeepmeep/Wan2GP. According to the git intro, it is "The best Open Source Video Generative Models Accessible to the GPU Poor". I guess my card (AMD Radeon 7600 XT 16GB) can be considered as "GPU poor" since it's not an NVidia high-end card. I'm one of those holdouts who's unlikely to purchase NVidia RTX 5090 simply because I'm only tinkering and also have some concerns about the faulty design of the 5090's 12VHPWR connector that can be a serious fire hazard. Although there are AMD Radeon Pro W7900 (48GB) - CAD $5700 and AMD Radeon Pro W7900 (32GB) - CAD $3500, I find them to be way too expensive. My CAD $500 AMD Radeon RX 7600 XT (16GB) card is sufficient for now and can run Ollama as well as ComfyUI.

IMPORTANT: Before you run the application, make sure you don't skip step #2.

Here are the steps:

1) Install ROCM for Linux from https://rocm.docs.amd.com/projects/install-on-linux/en/latest/install/quick-start.html and choose the appropriate install method for your distro. Mine's Ubuntu 22.04 and here's the install instruction: https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.1.2/how-to/native-install/ubuntu.html

2) DON'T SKIP this step so you don't need to run wan2gp as a privileged user (root). Make sure you that you've added yourself to UNIX user group: render (and optionally video) if you haven't done so. 

To test it, run the command "rocminfo" as a regular user (don't use the root user).

user@localmachine:~$ rocminfo
ROCk module version 6.12.12 is loaded
Unable to open /dev/kfd read-write: Permission denied
coder is not member of "render" group, the default DRM access group. Users must be a member of the "render" group or another DRM access group in order for ROCm applications to run successfully.

If you get permission denied as above, it means that you need to issue the following command (replace "user" with either your own username or a different username that you'll use for the Wan2GP application:

user@localmachine:~$ sudo usermod -a -G render user
user@localmachine:~$ sudo usermod -a -G video user
Read More

DirectAdmin - error when compiling Exim 4.98 on Oracle Linux 8

I was trying to upgrade Exim to 4.98 from 4.97 (with a standard "da build exim" command), and somehow the compilation on Oracle Linux 8.10 failed with the following repeated errors:

  • relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
  • relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIC
  • relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
  • relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIC
[root@myserver custom]# da build exim
download_cached: using cached '/usr/local/directadmin/custombuild/cache/exim-4.98.2.tar.gz' file
Compiling exim...
/bin/sh scripts/source_checks

>>> Creating links to source files...
>>> Creating lookups/Makefile for building dynamic modules
>>> New Makefile & lookups/Makefile installed
>>> Use "make makefile" if you need to force rebuilding of the makefile

make[1]: warning: -j4 forced in submake: resetting jobserver mode.
make[1]: Entering directory '/usr/local/directadmin/custombuild/tmp/tmp.PdNlP96QuO.exim-4.98.2.tar.gz/build-Linux-x86_64'
/bin/sh ../scripts/Configure-os.c
cc buildconfig.c
/bin/sh ../scripts/Configure-os.h
cc exim_lock.c
cc -o exim_lock
>>> exim_lock utility built

/bin/sh ../scripts/Configure-config.h "make"
make[2]: Entering directory '/usr/local/directadmin/custombuild/tmp/tmp.PdNlP96QuO.exim-4.98.2.tar.gz/build-Linux-x86_64'
make[2]: 'buildconfig' is up to date.
make[2]: Leaving directory '/usr/local/directadmin/custombuild/tmp/tmp.PdNlP96QuO.exim-4.98.2.tar.gz/build-Linux-x86_64'
Building configuration file config.h
>>> config.h built

cc -DMACRO_PREDEF macro_predef.c
cc -DMACRO_PREDEF readconf.c
cc -DMACRO_PREDEF globals.c
cc -DMACRO_PREDEF expand.c
cc -DMACRO_PREDEF route.c
cc -DMACRO_PREDEF transport.c
cc -DMACRO_PREDEF drtables.c
cc -DMACRO_PREDEF acl.c
cc -DMACRO_PREDEF tls.c
cc -DMACRO_PREDEF transports/appendfile.c
cc -DMACRO_PREDEF transports/autoreply.c
cc -DMACRO_PREDEF transports/lmtp.c
cc -DMACRO_PREDEF transports/pipe.c
cc -DMACRO_PREDEF transports/queuefile.c
cc -DMACRO_PREDEF transports/smtp.c
cc -DMACRO_PREDEF routers/accept.c
cc -DMACRO_PREDEF routers/dnslookup.c
cc -DMACRO_PREDEF routers/ipliteral.c
cc -DMACRO_PREDEF routers/iplookup.c
cc -DMACRO_PREDEF routers/manualroute.c
cc -DMACRO_PREDEF routers/queryprogram.c
cc -DMACRO_PREDEF routers/redirect.c
cc -DMACRO_PREDEF auths/auth-spa.c
cc -DMACRO_PREDEF auths/cram_md5.c
cc -DMACRO_PREDEF auths/cyrus_sasl.c
cc -DMACRO_PREDEF auths/dovecot.c
cc -DMACRO_PREDEF auths/gsasl_exim.c
cc -DMACRO_PREDEF auths/heimdal_gssapi.c
cc -DMACRO_PREDEF auths/plaintext.c
cc -DMACRO_PREDEF auths/spa.c
cc -DMACRO_PREDEF auths/tls.c
cc -DMACRO_PREDEF auths/external.c
cc -DMACRO_PREDEF dkim.c
cc -DMACRO_PREDEF malware.c
cc -DMACRO_PREDEF pdkim/signing.c
cc exim_dbmbuild.c
....
....
cc lookups/lf_sqlperform.c
cc local_scan.c
ar cq transports.a
ranlib transports.a
make[2]: Leaving directory '/usr/local/directadmin/custombuild/tmp/tmp.PdNlP96QuO.exim-4.98.2.tar.gz/build-Linux-x86_64/transports'

cc -o exim
/usr/bin/ld: acl.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: base64.o: relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: child.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: crypt16.o: relocation R_X86_64_32 against `.bss' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: daemon.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: dbfn.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: debug.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: deliver.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: directory.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: dns.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: drtables.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: enq.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: exim.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: expand.o: relocation R_X86_64_32S against undefined symbol `expand_nstring' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: filter.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: filtertest.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: dkim.o: relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: dkim_transport.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: dnsbl.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: hash.o: relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: header.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: host.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: ip.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: log.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: lss.o: relocation R_X86_64_32 against symbol `domainlist_anchor' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: match.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: moan.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: os.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: parse.o: relocation R_X86_64_32S against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: priv.o: relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: queue.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: rda.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: readconf.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: receive.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: retry.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: rewrite.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: rfc2047.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: regex_cache.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: route.o: relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: search.o: relocation R_X86_64_32S against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: sieve.o: relocation R_X86_64_32S against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: smtp_in.o: relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: smtp_out.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: spool_in.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: spool_out.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: std-crypto.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: store.o: relocation R_X86_64_32 against undefined symbol `paired_pools' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: string.o: relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: tls.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: tod.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: transport.o: relocation R_X86_64_32S against symbol `optionlist_transports' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: tree.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: verify.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: environment.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: lookups/lf_quote.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: lookups/lf_check_file.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: lookups/lf_sqlperform.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: malware.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: mime.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: regex.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: spam.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: spool_mbox.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: dane.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: spf.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: version.o: relocation R_X86_64_32S against `.bss' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: routers/routers.a(accept.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: routers/routers.a(dnslookup.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: routers/routers.a(ipliteral.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: routers/routers.a(manualroute.o): relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: routers/routers.a(queryprogram.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: routers/routers.a(redirect.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: routers/routers.a(rf_change_domain.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: routers/routers.a(rf_expand_data.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: routers/routers.a(rf_get_errors_address.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: routers/routers.a(rf_get_munge_headers.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: routers/routers.a(rf_get_transport.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: routers/routers.a(rf_get_ugid.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: routers/routers.a(rf_lookup_hostlist.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: routers/routers.a(rf_queue_add.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: routers/routers.a(rf_self_action.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: transports/transports.a(appendfile.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: transports/transports.a(autoreply.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: transports/transports.a(lmtp.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: transports/transports.a(pipe.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: transports/transports.a(smtp.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: transports/transports.a(tf_maildir.o): relocation R_X86_64_32S against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: lookups/lookups.a(cdb.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: lookups/lookups.a(dbmdb.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: lookups/lookups.a(dnsdb.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: lookups/lookups.a(lsearch.o): relocation R_X86_64_32S against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: lookups/lookups.a(spf.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: lookups/lookups.a(readsock.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: auths/auths.a(cram_md5.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: auths/auths.a(dovecot.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: auths/auths.a(get_data.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: auths/auths.a(get_no64_data.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: auths/auths.a(plaintext.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: auths/auths.a(spa.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: auths/auths.a(xtextdecode.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: auths/auths.a(xtextencode.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: auths/auths.a(auth-spa.o): relocation R_X86_64_32S against `.bss' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: auths/auths.a(check_serv_cond.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: pdkim/pdkim.a(pdkim.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: pdkim/pdkim.a(signing.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:687: exim] Error 1
make[1]: Leaving directory '/usr/local/directadmin/custombuild/tmp/tmp.PdNlP96QuO.exim-4.98.2.tar.gz/build-Linux-x86_64'
make: *** [Makefile:37: all] Error 2
doExim: failed to compile '/usr/local/directadmin/custombuild/cache/exim-4.98.2.tar.gz' inside '/usr/local/directadmin/custombuild/tmp/tmp.PdNlP96QuO.exim-4.98.2.tar.gz'
failed to compile exim 4.98.2

The solution is to customize the Makefile as per https://docs.directadmin.com/other-hosting-services/exim/configuring-exim.html#how-to-compile-exim-from-source

cd /usr/local/directadmin/custombuild
mkdir -p custom/exim/
cp configure/exim/Makefile custom/exim/Makefile

then edit the Makefile in /usr/local/directadmin/custombuild/custom/exim

[root@myserver exim]# pwd
/usr/local/directadmin/custombuild/custom/exim
[root@server1 exim]# ls -la
total 76
drwxr-xr-x 2 root root  4096 Apr 17 12:06 .
drwxr-xr-x 5 root root  4096 Apr 17 11:41 ..
-rw-r--r-- 1 root root 69414 Apr 17 11:44 Makefile

Add the following line "CFLAGS += -fstack-protector-strong -fPIC" to the Makefile:

...
...
# DISABLE_CLIENT_CMD_LOG=yes

# End of EDITME for Exim 4.
CFLAGS += -fstack-protector-strong -fPIC

then re-run "da build exim" and you should be good :)

 

Read More

VirtualBox error NS_ERROR_INVALID_ARG (0X80070057) when adding an existing virtual machine

If you've ever encountered the following error when adding an existing VM to your host:

 

Failed to open virtual machine located in *********.vbox.
Callee RC: NS_ERROR_INVALID_ARG (0X80070057)

 

or from the commandline  VBoxManage registervm VirtualMachineNameSample.vbox

VBoxManage: error: Code NS_ERROR_INVALID_ARG (0x80070057) - Invalid argument value (extended info not available)
VBoxManage: error: Context: "OpenMachine(Bstr(szVMFileAbs).raw(), Bstr(strPassword).raw(), machine.asOutParam())" at line 153 of file VBoxManageMisc.cpp

One thing that you can check is see if there's a non-existing file. In my case, the solution is to edit the .vbox file manually (which is in XML format) and remove the following line:

      <DVDImages>
        <Image uuid="{a82fec76-40db-4b60-9054-4fd156c8982a}" location="/usr/share/virtualbox/VBoxGuestAdditions.iso"/>
      </DVDImages>

 

Some people say that it could also because of insufficient disk space. In my case, there was plenty of space, but this file no longer exists since it's from a different machine.

Read More

Tik Tok algorithm is interesting

I don't know how Tik Tok does it and honestly I don't know how its algorithm works. It can't be algorithm though.

I just went to get a quick bite outside and got myself a $2.99 Jamaican beef patty. I paid with cash, didn't use my credit card. By the way, I also didn't bring my cellphone with me since it was just a very short distance, just a short walk. I had no electronics with me at all. Somehow, when I opened Tik Tok on my wifi-only tablet with no cellular connectivity, which I left at home, a few minutes later it displayed a video about a Jamaican beef patty. It's really strange... can't be a coincidence.

Read More

How to upgrade Gitlab safely with zero downtime

GitLab is a complex piece of software. If you are planning on upgrading your self-hosted GitLab machine to a new major version, you need to follow this documentation: https://docs.gitlab.com/ee/update/

Also, use the Upgrade Path Toolbox from here: https://gitlab-com.gitlab.io/support/toolbox/upgrade-path/?edition=ce to ensure that the upgrade is smooth and safe.

For instance, if you currently have gitlab-ce version 15.11.10-ce.0 and want to upgrade to version 16.10.1, you have to perform the following upgrade one-by-one:

  • apt-get install gitlab-ce=15.11.13-ce.0
  • apt-get install gitlab-ce=16.0.8-ce.0
  • apt-get install gitlab-ce=16.1.6-ce.0
  • apt-get install gitlab-ce=16.2.9-ce.0
  • apt-get install gitlab-ce=16.3.7-ce.0
  • apt-get install gitlab-ce=16.4.5-ce.0
  • apt-get install gitlab-ce=16.5.8-ce.0
  • apt-get install gitlab-ce=16.6.7-ce.0
  • apt-get install gitlab-ce=16.7.7-ce.0
  • apt-get install gitlab-ce=16.8.5-ce.0
  • apt-get install gitlab-ce=16.9.3-ce.0
  • apt-get install gitlab-ce=16.10.1-ce.0

See - https://gitlab-com.gitlab.io/support/toolbox/upgrade-path/?current=15.11.10&edition=ce&downtime=true

 

Read More

How to reduce Proxmox VE guest machine backup size

To reduce a guest machine before you perform a backup, first set the discard flag on the guest machine (while turned off), then do a TRIM inside the machine.

Run this command inside the guest machine (assuming it's running Linux): fstrim -a -v

What it does is it emulates SSD TRIM facility, which blanks out free space, since deleting a file only removes a file but doesn't mark the space as free.

Read More

Proxmox and CSF - LAN vmbr2 not working

If somehow you have Proxmox & CSF for blocking outside traffic vmbr0 (WAN), and have a vmbr2 LAN interface, check your ETH_DEVICE abd ETH_DEVICE_SKIP settings in /etc/csf/csf.conf and add vmbr2 in ETH_DEVICE_SKIP so it won't block internal LAN traffic.

Read More

Scam text message from +1 (604) 339-2192

Today I got a scam text message from +1 (604) 339-2192, telling me to deposit email money transfer at et-lnterac-xxx (see screenshot). Notice how the scammer changed the letter I to lowercase l (L). I am not sure if the number is spoofed or not, or if the cellphone is compromised and used as a bot. Basically the scam message claims that CRA (Canada Revenue Agency) has sent me $297.00 and that I should deposit the money.

Text message from +1 (604) 339-2192

Then I checked the whois data, but it seems to be fake.

whois data

The address is in Toronto but the originating number is from Richmond, BC.

I'm usually too lazy to check it because I already know it's a scam. But this time I checked it because I'm bored, and when I checked the address, it goes to this site. Now, the only time somebody can create a subdomain record on a CPanel-based server is when they have access to the CPanel itself, so even if the application (e.g. Wordpress or any other script hosted there) is compromised, unless the person has the username & password for CPanel, they won't be able to create a subdomain record. Another possibility is if the scammer has compromised the whole server and got himself a root account. Who knows.

Then I proceeded to check the index files. Ahh, I can see now what the scammer has uploaded because he forgot to disable index in .htaccess.

More scam

Then I tried clicking the INTERAC e-Transfer_fichiers folder as I was just curious to see what's there.

Interac scam

Very interesting. Then I clicked td, rbc2, bmo, sco. Here's what came up - a fishing page trying to get users to post their credentials for TD, Royal Bank of Canada, Bank of Montreal, and ScotiaBank.

Here's the Scotia one (check out the URL in the address bar):

Scotia Bank scam

Here's the TD scam (check out the URL in the address bar):

TD Scam

There you go.

If I go to the main domain, apparently the site is from India (country code +91):

Hope this can help some people. Be careful and stay safe.

 

Read More

Disable free SSL from CPanel

Recently, CPanel has been providing domain validated SSL certificate for free. However, it is quite intrusive that it replaced my own Wildcard certificate with theirs. To disable it, login as root and type these two commands:

root@servername [~]# touch /var/cpanel/ssl/disable_auto_hostname_certificate

root@servername [~]# touch /var/cpanel/ssl/disable_service_certificate_management

 

 

Read More

Windows 2012 Server RC Evaluation ISO direct link

I've been wanting to download the latest version of Windows 2012 but for some reasons I keep getting errors so if anyone is experiencing the same thing here's the direct download link.

Read More

Latest

How to install Wan2GP with AMD Radeon 7600 XT (16GB) on Linux (Ubuntu 22.04) for local AI video generation

22.Aug.2025
So, I was curious about Wan2GP (I heard about WAN2.2) and found that all the install instructions a...

DirectAdmin - error when compiling Exim 4.98 on Oracle Linux 8

17.Apr.2025
I was trying to upgrade Exim to 4.98 from 4.97 (with a standard "da build exim" command), and someh...

VirtualBox error NS_ERROR_INVALID_ARG (0X80070057) when adding an existing virtual machine

1.Oct.2024
If you've ever encountered the following error when adding an existing VM to your host:   ...

Tik Tok algorithm is interesting

17.Apr.2024
I don't know how Tik Tok does it and honestly I don't know how its algorithm works. It can't be alg...

How to upgrade Gitlab safely with zero downtime

30.Mar.2024
GitLab is a complex piece of software. If you are planning on upgrading your self-hosted GitLab mac...