this post was submitted on 27 Dec 2023
51 points (96.4% liked)

Linux

48061 readers
717 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

I'm playing with a couple of routers and comparing proprietary to open source on the same hardware. I miss my .bashrc functions and aliases... and compgen, tree, manpages, detailed help, etc; the little things that get annoying when they are missing.

I was thinking about trying to mount the embedded system on my workstation (while it is running?), but I'm not clear how this would work in practice with permissions, users, groups, root, etc. I'm curious how others do this kind of development/screwing around, or if this is a crazy idea.

all 20 comments
sorted by: hot top controversial new old
[–] [email protected] 20 points 10 months ago

I normally SSH in and do what I need or scp a script or whatever over .

[–] [email protected] 18 points 10 months ago

If you have ssh/SCP you can use sshfs to mount the remote host as a fuse filesystem. That would let you edit files on your workstation, but more or less all other commands would still need to happen on the remote system.

[–] [email protected] 10 points 10 months ago (1 children)

I edit everything in my local copy of the repository and then push the changes to my devices with ansible.

[–] [email protected] 1 points 10 months ago

Same, but I’ve got Ansible (or Puppet) powered off of a git repo. So I make my changes, commit/push to fit and then Ansible takes it from there.

[–] [email protected] 8 points 10 months ago* (last edited 10 months ago)

There isn't usually much to do on an embedded router other than use its own commands to change settings or manage packages. And if it has enough juice to run more advanced stuff it probably has bash available too.

Anyway, there's NFS for mounting filesystems remotely. It's not very complicated, the catch is that the same UIDs and GUIDs on the host must exist on the guest, because it doesn't do any uid translation. On an embedded system most stuff is owned by root, meaning you'd have to use root on guest too, which may not be a great idea.

Secondly, you can't run commands over NFS, just manipulate files and I'm not sure that's something you really need to do a lot of on a router.

[–] [email protected] 7 points 10 months ago* (last edited 10 months ago) (2 children)

This is probably not a solution you would want, but I will mention it anyway...

Emacs has a built-in app called "TRAMP mode", what it does is it works as back-end for all of Emacs's own built-in text editing and file browsing commands, then it uses ordinary SSH and POSIX shell commands on a remote host as the primitive APIs for this back-end. You could say it uses SSH and a POSIX shell as a RPC mechanism.

What this means is you can use the ordinary Emacs editor with the entirety of your usual Emacs configuration, but all filesystem changes (including editing files, directories, and running shell processes) occur on the remote host via SSH. In order to activate it, you just use Emacs's special TRAMP URL scheme as the file path you want to edit, and it works seamlessly, (especially if you setup your SSH agent so you don't need a password). An example of such a URL would be /ssh:user@remote-host:/etc/hosts.

[–] [email protected] 9 points 10 months ago (4 children)
[–] [email protected] 5 points 10 months ago

We're gonna get through this

[–] [email protected] 3 points 10 months ago

Vim has it's own way to edit/brows remote files. Checkout netrw:

https://www.vim.org/scripts/script.php?script_id=1075

[–] [email protected] 2 points 10 months ago* (last edited 10 months ago)

There are Vim emulator apps for Emacs, and you can use them with TRAMP mode for remote file editing as well. Doom Emacs and Spacemacs both provide extremely good Vim emulation that work consistently throughout all Emacs modes, including TRAMP mode.

[–] [email protected] 1 points 10 months ago

Vim supports editing files through scp as well, no reason to cry here xD

[–] [email protected] 2 points 10 months ago

I've discovered this not long ago and it makes my work way easier. Also, using the dired mode on the remote is useful.

[–] [email protected] 5 points 10 months ago* (last edited 10 months ago) (1 children)

People with PhDs in Vim will laugh at this, but I sometimes connect to remote systems through VS Code SSH connections when I'm working on a project with multiple files on a remote system.

[–] [email protected] 2 points 10 months ago* (last edited 10 months ago)

I've used mirror.vim for this. Pretty much similar UX as remote workspaces. Forone off editing, you can do vim ssh://remote/<abs or ~ location>

Sometimes, VS Code-ium is piss poor especially over bad connections but otherwise the remote management is quite awesome

And ofc, there's emacs with TRAMP mode

[–] [email protected] 4 points 10 months ago

I am not quite yet st the level where I have a ton of user scripts I'd be lost without, so SSHing into a box is hardly a speed bump for me.

[–] [email protected] 3 points 10 months ago

I don't recommend using the shell on routers for day-to-day management. Instead, consider using a network configuration management system like rconfig. I've used RANCID in the past, but I suspect something more modern like rconfig will be useful to you.

[–] [email protected] 3 points 10 months ago

You can use something like Nix + home-manager & take your environment with you.

[–] [email protected] 2 points 10 months ago
[–] [email protected] 1 points 10 months ago

i open vscode on the server through the ssh tunnel