This procedure was tested on FreeBSD-CURRENT build from d8819d88af52.
-
Enable linuxulator and install linux userland:
# sysrc linux_enable="YES" # service linux start # pkg install linux_base-c7Test it:
$ /compat/linux/usr/bin/uname -a Linux monster-1 4.4.0 FreeBSD 14.0-CURRENT #1 main-n254392-d8819d88af52: Wed Apr 6 22 x86_64 x86_64 x86_64 GNU/LinuxFor more details on linuxulator setup please refer to handbook.
-
remote-ssh seem to ignore bash config files so we need to change
$PATHin/etc/login.confor send custom env withSetEnvdirective inssh_config. Choose which fits you better.By default it's class
default, we need to give priority to linux binaries::path=/compat/linux/usr/sbin /compat/linux/usr/bin /sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin ~/bin:\rebuild CAP database:cap_mkdb /etc/login.confHost your-freebsd.box SetEnv PATH="/compat/linux/usr/sbin:/compat/linux/usr/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" -
Set you normal PATH for your every day use in your shell's config file (.bashrc od .zshrc, etc)
-
Connect to your FreeBSD box with VScode's remote SSH extension!
@morganwdavis Thanks for the write-up 'vscode-server-freebsd'. I used it to access a remote FreeBSD-15 but run into 2 issues, one with the detection of the remote and one with vscode-1.107.1 (on windows).
To make it work, add
RemoteCommand /compat/linux/usr/bin/bashto ssh config for FreeBSD, and because of this line a few knobs in the windows vscode settings.json file must be checked for the remote-ssh extension: [explicit in the settings.json file, since the setting it in the gui has an issue]:"remote.SSH.useLocalServer": true"remote.SSH.enableRemoteCommand": truewhich requires the"remote.SSH.useLocalServer": trueand"remote.SSH.remotePlatform": { "NB4029": "linux", "RHEL9": "linux", }does NOT list the remote for FreeBSD using theRemoteCommandOnce this was in place, the connection initializes selecting
linuxas the remote, however the terminal shell in vscode refers the native FreeBSD shell, but the shell used for various vscode extensions uses /compat/linux/usr/bin/bash shellchroot'edto/compat/linux.Vscode reports an issue with the
useLocalServerprobably because in the/compat/linuxchroot there is no ssh available...