Commit Graph
293 Commits
Author SHA1 Message Date
Joachim WibergandTobias Waldekranz cd00a3d2be package/net: new package
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-20 21:14:54 +02:00
Tobias WaldekranzandJoachim Wiberg 09751fdd96 x86_64: Harmonize GRUB's behavior with that of U-Boot
This means that:

- The full boot order is now respected, using the magic "fallback"
  varible in GRUB. This means that if an entry fails to load, we move
  on to the next one in the defined order.

- Netbooting is supported. In this mode, GRUB will acquire an IP
  address using DHCP, after which it downloads an image using TFTP.

- If we run out of valid entries, we always make sure to reboot. This
  ensures that, e.g., a temporary TFTP server outage does not cause an
  Infix device to get stuck in GRUB.

At the moment, the image handling is excruciatingly inefficient when
netbooting, as the image is downloaded multiple times behind the
scenes. Ideally, downloads would be cached, but a quick investigation
indicates that an implementation of this would take more time than we
can spare at the moment. Therefore, we settle for the working, though
wasteful, implementation.
2023-04-19 10:47:54 +02:00
Joachim WibergandTobias Waldekranz 95a4b43091 configs: drop currently unused packages to save build time + size
Things we really want later, but don't use right now:

 - MRP
 - MSTP

Neat to have in a networking product, but not used at all by us atm:

 - ttyd
 - tmux

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-13 12:22:29 +02:00
Tobias Waldekranz f2aaf4a558 Merge branch 'sysrepo' 2023-04-13 10:21:23 +02:00
Henrik Nordstrom dc8f1c344e cn9130_crb_boot: Add required host tools for build 2023-04-06 15:44:17 +02:00
Joachim Wiberg 2943922b4c configs: add dosfstools and mtools for disk image generation + gns3
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-04 15:11:55 +02:00
Joachim Wiberg 32e55d3562 configs: update defconfigs post e729c82
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-03 06:32:17 +02:00
Joachim Wiberg 7079a35088 configs: disable nginx temporarily while evaluating sysrepo
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-02 16:24:08 +02:00
Joachim Wiberg 3bef1eec16 Disable rauc streaming and kernel nbd, not used atm.
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-04-02 16:24:08 +02:00
Tobias Waldekranz e729c82c32 klinfix: Initial add
Infix integration of klish and klish-plugin-sysrepo.

Initially we add:

More flexible management of running vs. startup: Instead of always
committing changes both to running and startup, commit only modifies
running. To persist changes to startup, the copy command is
introduced. This lets the user copy from factory/startup/running to
startup/running at any time.

Well-known verbs like abort, leave, end, etc.
2023-03-31 17:31:34 +02:00
Joachim Wiberg cfef79bbf9 configs: enable netopeer2-cli and add klish to defconfigs
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-03-31 11:02:45 +02:00
Joachim Wiberg 7a69c21e9d configs: change default NETCONF to use sysrepo instead of clixon
Extended evaluation of sysrepo due to problems parsing yang v1.1 models
with the built-in yang parser in Clixon.  Problems not seen with libyang

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-03-28 20:27:18 +02:00
Tobias Waldekranz 19672fcc58 rauc: Initial support
Add support for firmware updates via RAUC on aarch64. The created RAUC
bundle (images/infix-$BR2_ARCH.pkg) is signed with the same key used
to sign the raw FIT image.
2023-03-13 14:46:37 +01:00
Tobias Waldekranz 162f019574 aarch64: Remove U-Boot envimage generation from defconfig
This created a circular dependency that caused the build to fail. This
is now handled by the mkdisk.sh script instead.
2023-03-13 10:21:08 +01:00
Tobias Waldekranz 3c720892dc aarch64: Cleanup unused stuff from defconfig
Config options are now loaded internally by the post-image script.

We never use the EXT image for anything.
2023-03-13 09:57:04 +01:00
Tobias Waldekranz f3304a6539 common: Unify disk image generation across aarch64 and amd64
On amd64, we use grub instead of U-Boot, because yours truly can't
figure out how to handle ACPI handover to the kernel.

The resulting image is now called disk.img instead of the old mmc.img,
since we can use it over any interface (e.g. virtio or SCSI).
2023-03-13 09:57:03 +01:00
Tobias Waldekranz 515d9f6e84 config: Replace $() with ${}
This lets us source .config from shell scripts
2023-03-13 09:56:37 +01:00
Joachim Wiberg 67727e3050 configs: enable PROFINET support in default builds
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-03-09 05:58:09 +01:00
Joachim Wiberg 759f8aa589 aarch64: add missing $BR2_ARCH arg to post-image.sh
Needed by sign.sh when creating the image.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-02-28 11:33:08 +01:00
Tobias WaldekranzandJoachim Wiberg d8c529a2a7 common: Make U-Boot's auxiliary environment accessable from Infix
This is not the full environment used by U-Boot, just the bits needed
for U-Boot to know which slot to boot and for Infix to know how the
boot process went.

U-Boot will selectively import/export only these keys during boot,
which avoids a malicious user from altering the boot in a way that
might bypass signature validation.
2023-02-28 11:01:04 +01:00
Joachim Wiberg c94c360d4a configs: sync aarch64 with amd64 to get Clixon, Frr, nginx, etc.
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-02-28 10:49:27 +01:00
Joachim Wiberg 513316f19e configs: drop qemu tap settings, default should bet user
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-02-27 15:56:38 +01:00
Joachim Wiberg 48a64a39f2 amd64,aarch64: disable udev hwdb, not needed currently
Saves 18 MiB from /etc

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-02-23 09:41:38 +01:00
Joachim Wiberg 0c07f10062 board/amd64: minor fixups to isolinux.cfg
- Drop unused com32 modules
 - Fix duplicate prompt output (serial not needed)
 - Reduce timeout before booting default to 0.5 sec
 - UI or DEFAULT must be set, otherwise isolinux complains
   so replace ONTIMEOUT with DEFAULT
 - Increase user-walked-away timeout to 5 minutes
 - Always show the prompt

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-02-23 09:37:40 +01:00
Joachim Wiberg fc6a793269 configs/amd64_defconfig: simplify syslinux, drop graphical menu
Not required and often just looks garbled, better to drop it for now.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-02-22 18:56:28 +01:00
Joachim Wiberg 0bd3acd361 setup: add support for easily switching system boot mode
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-02-21 22:28:42 +01:00
Joachim Wiberg 7733f18179 configs/amd64: enable squashfs images as well as kernel support
Now that we only support mmc and squash in `make run` we should make
sure the reference platform works as well as aarch64.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-02-21 20:12:12 +01:00
Tobias Waldekranz ca3966db62 common: Create signature of root filesystem
mkimage will generate an FIT image containing a signature of the
rootfs, where the data is kept out of the DTB data structure, i.e.:

.---------.
|   DTB   |
:---------:
| Padding |
:---------:
|         |
|         |
| rootfs  |
|         |
|         |
'---------'

This is the on-disk format of Infix. At boot, we extract kernel and
device trees from the rootfs, and then use Linux's device mapper to
create a virtual block device that exposes the rootfs (squash).
2023-02-20 10:45:51 +01:00
Tobias Waldekranz 40f55058c6 common: Enable required U-Boot options in fragment file
This ensures that U-Boot images that we build can always:

- Rely on the environment extensions in env.dtsi being available
- Access the configured signing keys
- Use SD/eMMC cards
- Extract files from SquashFS filesystems

All of which are foundations that we intend to design our image
loading around.
2023-02-20 09:57:31 +01:00
Joachim Wiberg df6a19bac4 configs; enable nginx and clixon restconf over fcgi
Also add libcurl so all Clixon utility functions and apps are build with
full support for RESTCONF.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-02-15 19:15:57 +01:00
Joachim Wiberg efb4efc0a0 Add support for Frr and SMCRoute
Primarily for evaluating OSPF in customer's use-case.  Preparing for
some (static) multicast routing tests as well.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-02-15 19:03:05 +01:00
Tobias Waldekranz 581c0946b7 defconfig: Build mech by default
Clixon is the future :)
2023-02-10 16:11:34 +01:00
Joachim Wiberg 4cc1a14a87 configs: fix .gns3a file generation, missing rw.ext4
Sync amd64 build with genimage support from aarch64.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-01-26 15:58:04 +01:00
Joachim Wiberg 2872227ec1 configs: add ttyd to all builds for sharing terminal over web
Experimental, may be reverted later after evaluation.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-01-25 20:50:27 +01:00
Joachim Wiberg b3c08d3503 configs: add irqbalance and the full kmod tools, for evaluation
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-01-25 20:49:19 +01:00
Joachim Wiberg 4aec9bf8cb configs: add pdmenu, neofetch, and pwgen to all builds
- pdmenu for the made-easy management tool for Infix
 - neofetch is just for demo purposes, we can add KernelKit logo
 - pwgen is for basic help, like netcalc

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-01-25 20:47:11 +01:00
Joachim Wiberg 05d86832f0 configs: enable fping and netcat for all builds
- fping is better for checking multiple hosts
 - OpenBSD netcat has more features and is generally better for multiple
   network testing scenarios

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-01-25 20:44:45 +01:00
Joachim Wiberg 45a03f17f8 configs: enable stress-ng, for stressing SoC, kernel, etc.
For board bringup, burn in testing, compliance testing, and general
troubleshooting.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-01-25 20:42:58 +01:00
Joachim Wiberg e7fad6fc7f We have terminfo for more terminals, let's default to TERM=linux
This gives us much better rendering of help system and other
console mode tools.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-01-25 20:41:40 +01:00
Joachim Wiberg 683e16cba2 configs: enable text-mode browser lynx
For debugging and external viewing of, e.g., man pages.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-01-25 20:40:18 +01:00
Joachim Wiberg df1cf36437 Change help viewer to 'most', more helpful to newbies
- Default to start pager (most), fall back to less/more/cat
 - Drop : from sub-headings
 - Repeat 'See Also' section
 - Relocate network section's Interesting Files to end
 - Add dhcpcd.conf to list of interesting files

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-01-25 20:36:55 +01:00
Joachim Wiberg 08cd175cfc package/tetris: new package
Small easter egg for presentations, demos, etc.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-01-25 19:57:32 +01:00
Joachim Wiberg 028298714a configs: add conntrack tools to default build
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-01-25 19:02:40 +01:00
Joachim Wiberg 579d0b5789 configs: add universal nework logging daemon (netfilter logging)
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-01-25 19:01:52 +01:00
Joachim Wiberg fdd94a5943 configs: add nftables, with iptables compat, to default build
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-01-25 19:00:05 +01:00
Joachim Wiberg 36ccea2ab0 configs: enable a few more network debugging tools
- traceroute + mtr
 - nmap et al

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-01-25 17:52:06 +01:00
Joachim Wiberg 2730c87772 configs: udev + dbus + avahi
This patch drops our use of mdnsd and mdev in regular Infix builds, yet
keeping them in the config and repo for smaller builds, e.g. endpoints.

Also, enable dbus to increase level of integration between compoents.
The dbus-test-tool is included for debugging connections.

Since it's about the tenth time I've been missing strace on target, it
too is added in this commit.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-01-25 17:41:13 +01:00
Joachim Wiberg fef42eb45b configs: switch from ifupdown2 to ifupdown-ng
- Replace ISC dhclient with dhcpcd => IPv4 link-local address
 - Enable openresolv to handle /etc/resolv.conf for us
 - iproute2 was a dependency of ifupdown2, but now we need to
   enable it explicitly
 - Ensure we have the same default system interface in infix
 - Reenable BusyBox applets disabled when enabling ifupdown2, for
   infix derivatives that may prefer a smaller base image.

Note: ifupdown-ng prefers dhcpcd over udhcpc, so no risk for conflict by
      reenabling udhcpc.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-01-19 18:09:26 +01:00
Joachim Wiberg 9018024ca9 Add support for generating GNS3 appliance file for amd64 builds
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-01-16 19:15:40 +01:00
Joachim Wiberg bc21f93ec2 Add support for returning a device to factory defaults
This change adds a `factory` tool, and login shell, that schedules a
reset of all writable (overlay) filesystems.  The tool is set up with
the suid gid flag to allow all members of the wheel group to perform
the reset.

The login method only allows reset from /dev/console, to prevent any
malicious reset over SSH.  This should be further constrained later
when PAM is introduced.

To initiate factory reset from the login prompt, use login/pass:

    factory/reset

To initiate factory reset from the shell, call

    factory

Both methods are interactive by default, but two command line options
can be used to modify the behavior:

  -r  Skip reboot, and "reboot now?" question
  -y  Assume yes to all questions, for non-interactive use

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-01-04 15:24:36 +01:00