You and your videos really have a unique vibe that I kinda got addicted to. Even though I am very familiar with embedded systems, you also always manage to teach me a lot of new stuff and to go deeper in fields that I thought I knew a lot about, like bootloaders.
I was trying to build Debian from scratch, then I notice the problem is Debian, not Linux. Now I'm a recovering addict, I only use Linux from scratch or Arch.
Also: making /boot read only after you finished is a nice touch of security, since if someone get in, the only way to mess with the kernel is became root somehow. I've managed servers, where the /usr/ was read-only by default, and you had to run a command as root (or sudo) to remount rw, and upgrade the system.
personnaly im of opinion that most of linux filesystem should be RO (with exception of /etc /var /home) and in fact should be updated trough images like android is
I have been running NixOS on my servers lately, where /nix/store is mounted as ro by default. I haven't thought of mounting those directories as ro, as I was always configuring my servers with the assumption that if anyone manages to escape the containers, the server is screwed anyway.
ahh yes this reminds me somewhat of the good old days of installing Gentoo linux while manually compiling the kernel with just the hardware you run on, and compiling all software....
Ooo! Impecable timing! I've somehow found myself designing two different custom SoM-esque boards at once that I'll eventually need to figure out how to run some form of embedded linux on. I have a bad habit of just going for it and hoping I'll be able to learn what I'm lacking on the way. xD
@@tomazzaman it does use 175GB after it's uncompressed. This is insane 😭 Tarkov is good but it demands a huge time investment if you want to fully complete a wipe / season
Is the plan to have a web interface on the router when its done to do configs? Or will it be command line only? I really hope you make a web interface like for ex Unifi
So, here we are: Linux. It wasn't that hard, at all, I only needed a Tomaz to make a 30 minute tutorial and post it on TH-cam, 15 years later than when I was breaking my system. Better later than never! 🎉 Jokes apart, nice job! I'm still eager to see more hardware hacking though :)
There is no need to compile anything if you download an ISO file that has a complete operating system on it ! Linux comes in many flavors, however, I would suggest starting with Linux Mint and learn from there. Google on how to install Linux Mint and you are on your way! Cheers
Absolutely. I think it entirely depends on you want to do. I feel like a person whose main computing experience consists of using a Webbrowser and a mail program will have an easier time switching than a person who is very experienced using Mac or windows
dont both of those basically force you to use binaries which you might need to build yourself, why going with something like debian, you can rely on already existing ecosystem
From my admittedly limited understanding Yocto is more meant for the use case where you need to target many different hardware architectures or configurations, so it's more flexible but requires much more upfront configuration and has a learning curve reminiscent of a cliff from my dabbling. Build root is essentially the other end of the spectrum, target a single platform and get from zero to a running system as fast as possible, it's also much easier to pick up. Another major difference is that neither of these tools use an existing distro as I understand it, they instead essentially make their own from the kernel and the packages of your choice giving you a lot of control but also more homework.
hmm at this point you should be able to have internet access and be able to run MII command for HW debug and even test Ethernet speed. Did you do this already? how are the preliminary results?
Here is a good question for you. JunOS from Juniper has this concept of snapshot partitions. Where the OS creates a snapshot of everything needed to run the OS. Should something go wrong with the primary partition it will boot from the secondary. This saves you from a bad update that wrecks the primary partition. However it also goes a step further allowing the creation of a bootable USB based snapshot partition. Can this kind of functionality be worked into your vision?
A good question indeed. This tutorial was a bit more, let's say _general_ in scope/approach, rather than highly specific for our board. We are reviewing how other devices of a similar class and functionality are solving this issue, because we need to support both, so tinkerers like myself, who prefer more hands on, as well as people that just want it to, well be a router, and don't care what's under the hood.
I miss working with junos, the snapshots were a nice feature if something happened to the main configuration. You can probably achieve something similar with lvm2 or xfs/btrfs. Snapshots should be thin anyway.
@@rnts08 agreed, I also recently learned that juniper devices have 2 different storage devices one for recovery based partition slices and your main storage where normal slices are contained. Should your primary fail it’ll try the backup flash chip. Should that fail theres a USB recovery slice.
@@tomazzaman i strongly recommend looking at JunOS / junipers SRX/MX series devices for sure they have some absolutely incredible hardware / software. Can pick up an srx-300 series device off of fleabay for a decent price.
@@tomazzaman i recommend also looking at how steamOS on steamdeck works and how coreOS and how android works. With CoreOS providing basically best customizability in conjunction with best recoverability/ability not to break RootFS
you really dont need to know how to put togehter a linux distro(or build your own rootFS from scratch) to be using it also debootstrap is correct way to build a debian system from scratch
While I am experienced with Linux and I understood every part of the video, I still got a headache. I had never realized how much of a pain it is to build an image for an embedded device.
Actually, We're using PCIe lanes for wifi support. CPU already comes with SerDes lanes that can be configured in certain ways, so we squeezed the max out of them: 3x GbE ports and 2x 10GbE SFP+ ones.
@@Yasen6275 Afaik not in this case, they have 1-2GB of RAM, using a few MB more isn't significant and not worth the tradeoff of losing systemd features. We are reaching a point where even routers have GBs of RAM, just because that's the smallest RAM chip they can buy at all.
I like Linux as a desktop, mobile and cloud OS. But for embedded applications I probably wouldn't use it everywhere, and look at different options per usecase.
For a few bucks per hour you can get something 2-3 times the size in the cloud. I've definitely learned my lesson from buying pricy workstations that spend 95% of their time doing nothing but running Emacs.
@@capability-snob cloud is the worst solution ever for compiling linux kernel. Must there be a reason for Torvaldis to have a threadripper system instead of going cloud
@@sasjadevries honestly slower idk (of the top op my head) how much but slower. There will always be some slowdown but depending on implementation of cross compilation can be extremely small
come on you really should build Linux From Scratch then you will know rock hard! normal Linux distributions are easy peasy! NB Android is a Linux Distrution!
The "easy" at the end caught me :D Awesome video! Already have quite a bit of knowledge about building Linux but learning here about Embedded stuff! Did you already work with yocto/yoctobuild? Hearing frequently it being used to build embedded system images
Nope, but it's been on my to-do list for a while. Afraid of starting, because it'll pull me in for sure! :) And buildroot is so easy to get started with :)
As Jeff Geering would say "It has been 0 days since i've recompiled the linux kernel"
You and your videos really have a unique vibe that I kinda got addicted to. Even though I am very familiar with embedded systems, you also always manage to teach me a lot of new stuff and to go deeper in fields that I thought I knew a lot about, like bootloaders.
Thank you for the kind comment. It's these that keep me going! 🙌
@@tomazzaman It's a pleasure :)
I want to establish the 80/30 rule. getting the feeling to understand a topic up to 80% after watching your 30 minute video. I love it. 😂
I built a whole linux once. I'm now on blood pressure medication and at increased risk for a stroke!
I was trying to build Debian from scratch, then I notice the problem is Debian, not Linux. Now I'm a recovering addict, I only use Linux from scratch or Arch.
Also: making /boot read only after you finished is a nice touch of security, since if someone get in, the only way to mess with the kernel is became root somehow. I've managed servers, where the /usr/ was read-only by default, and you had to run a command as root (or sudo) to remount rw, and upgrade the system.
personnaly im of opinion that most of linux filesystem should be RO (with exception of /etc /var /home) and in fact should be updated trough images like android is
@@bigpodI sometimes want to write to /tmp :)
@@grekiki yea kinda forgot about /tmp because of its ephemerality which means it is/can be a mount of some sort
I have been running NixOS on my servers lately, where /nix/store is mounted as ro by default. I haven't thought of mounting those directories as ro, as I was always configuring my servers with the assumption that if anyone manages to escape the containers, the server is screwed anyway.
This was the most informative video yet!
Linux+One of your videos it's just a perfect fit for me
ahh yes this reminds me somewhat of the good old days of installing Gentoo linux while manually compiling the kernel with just the hardware you run on, and compiling all software....
Your explanations and body language are top tier
You Sir are a star.
A little tip: use partition label and mount by label. you can skit the editing of fstab by hand.
Ooo! Impecable timing!
I've somehow found myself designing two different custom SoM-esque boards at once that I'll eventually need to figure out how to run some form of embedded linux on.
I have a bad habit of just going for it and hoping I'll be able to learn what I'm lacking on the way. xD
Same hahaha
I'm happy to keep to Linux use and playing with all the wonderful toys.
Wooping 200MB... While I'm downloading a 130GB game 😂
As long as it's not CoD, we can be friends. 😂
@@tomazzaman God of war Ragnarok 😂
I approve. Already bought it, but haven't had the time to play it yet. Trying to Escape from Tarkov ATM. 😅
@@tomazzaman it does use 175GB after it's uncompressed. This is insane 😭
Tarkov is good but it demands a huge time investment if you want to fully complete a wipe / season
My 6th wipe. But don't tell anyone. 🫡
Linux is as difficult as Windows. People want to compare their 20 years of Windows experience to 20 minutes of Linux and say "Linux is too hard."
Spot on.
Both systems are complex. You dont learn from one day to another all the combinations and outcomes of such conplex systems
"keep in mind we only have 3.5 GB lol that's an entire Debian Desktop system.
Awesome!!! Just one advice: use a larger terminal font size because its very difficult to resd from mobile device. Tks.
Noted, thank you for the suggestion!
are you Michael Horn's dad? Very good tutorial! I always learn something from Linux TH-camrs. (ETA: subbed)
Haha, thank you!
Up until centos i always had to make my own kernel. Since DLD 1.0 somewhere in the beginning of the 1990s.
"It has been 0 days since I recompiled the linux karnel"
Kernel*
@@MelroyvandenBerg Are you annoyed yet?
Arch users
@@shapelessed yes xD
@@AchievedZeus574 Linux Mint actually
Is the plan to have a web interface on the router when its done to do configs? Or will it be command line only? I really hope you make a web interface like for ex Unifi
Yes, actually it's the end goal for me, in a manner of speaking.
So, here we are: Linux. It wasn't that hard, at all, I only needed a Tomaz to make a 30 minute tutorial and post it on TH-cam, 15 years later than when I was breaking my system. Better later than never! 🎉
Jokes apart, nice job! I'm still eager to see more hardware hacking though :)
Great vid, well done!
LinuxFromScratch ♥♥♥
There is no need to compile anything if you download an ISO file that has a complete operating system on it ! Linux comes in many flavors, however, I would suggest starting with Linux Mint and learn from there. Google on how to install Linux Mint and you are on your way! Cheers
I still reckon anybody can learn Linux. Avoid Arch for a couple years, and figure out package-managers/CUPS and you're set.
Absolutely. I think it entirely depends on you want to do. I feel like a person whose main computing experience consists of using a Webbrowser and a mail program will have an easier time switching than a person who is very experienced using Mac or windows
That time would be better spent mastering illumos and one of the distributions based upon it.
Why not use buildroot, or perhaps yocto? I'd love to see tutorials for either or both
dont both of those basically force you to use binaries which you might need to build yourself, why going with something like debian, you can rely on already existing ecosystem
From my admittedly limited understanding Yocto is more meant for the use case where you need to target many different hardware architectures or configurations, so it's more flexible but requires much more upfront configuration and has a learning curve reminiscent of a cliff from my dabbling.
Build root is essentially the other end of the spectrum, target a single platform and get from zero to a running system as fast as possible, it's also much easier to pick up.
Another major difference is that neither of these tools use an existing distro as I understand it, they instead essentially make their own from the kernel and the packages of your choice giving you a lot of control but also more homework.
@@oliverer3 I'm pretty sure that buildroot allows you to create a customized Debian install.
Why use buildroot or yocto when you can just use Debian? There is a reason if not a lot of people do buildroot and yocto tutorials
@@jhirschma the point of buildroot is to automate the creation of a LFS (linux from scratch) system. Debian has its own image building infrastructure
hmm at this point you should be able to have internet access and be able to run MII command for HW debug and even test Ethernet speed.
Did you do this already? how are the preliminary results?
Can you clarify? Preliminary results of?
@@tomazzaman as in test those special fancy package routing periferals in your mpu. Or if you can get an acceptable speed in practice with x sfp.
"Linux, it's easy!"
then spends 3 hours troubleshooting one of the many issues when building a distro from scratch
I run Debian btw
I run Linux Mint btw
waiting for new video
Here is a good question for you. JunOS from Juniper has this concept of snapshot partitions. Where the OS creates a snapshot of everything needed to run the OS. Should something go wrong with the primary partition it will boot from the secondary. This saves you from a bad update that wrecks the primary partition. However it also goes a step further allowing the creation of a bootable USB based snapshot partition.
Can this kind of functionality be worked into your vision?
A good question indeed. This tutorial was a bit more, let's say _general_ in scope/approach, rather than highly specific for our board. We are reviewing how other devices of a similar class and functionality are solving this issue, because we need to support both, so tinkerers like myself, who prefer more hands on, as well as people that just want it to, well be a router, and don't care what's under the hood.
I miss working with junos, the snapshots were a nice feature if something happened to the main configuration. You can probably achieve something similar with lvm2 or xfs/btrfs. Snapshots should be thin anyway.
@@rnts08 agreed, I also recently learned that juniper devices have 2 different storage devices one for recovery based partition slices and your main storage where normal slices are contained. Should your primary fail it’ll try the backup flash chip. Should that fail theres a USB recovery slice.
@@tomazzaman i strongly recommend looking at JunOS / junipers SRX/MX series devices for sure they have some absolutely incredible hardware / software. Can pick up an srx-300 series device off of fleabay for a decent price.
@@tomazzaman i recommend also looking at how steamOS on steamdeck works and how coreOS and how android works. With CoreOS providing basically best customizability in conjunction with best recoverability/ability not to break RootFS
you really dont need to know how to put togehter a linux distro(or build your own rootFS from scratch) to be using it
also debootstrap is correct way to build a debian system from scratch
While I am experienced with Linux and I understood every part of the video, I still got a headache. I had never realized how much of a pain it is to build an image for an embedded device.
Actually, We're using PCIe lanes for wifi support. CPU already comes with SerDes lanes that can be configured in certain ways, so we squeezed the max out of them: 3x GbE ports and 2x 10GbE SFP+ ones.
Agree 100% with you about Linux. 😂
The video title is true.
What does 0x80000000 represent in your tftp command?
Memory address where I store the file into. See my previous video, it's all explained there.
👍
Why not use something like armbian
You could, definitely. It's not one or the other, both are equally valid options.
Why use systemd on embeded system? Why not using Devuan, which is Debian with good old systemV init scripts?
Perfectly valid choice too!
Why use a downstream distro when you can use Debian? Who cares about the init system
@@marcogenovesi8570 Because of less resources used. While on PC it's less relevant, on embedded it is a valid concern.
@@Yasen6275 Afaik not in this case, they have 1-2GB of RAM, using a few MB more isn't significant and not worth the tradeoff of losing systemd features.
We are reaching a point where even routers have GBs of RAM, just because that's the smallest RAM chip they can buy at all.
@@marcogenovesi8570 What features exactly are so important on embedded system?
Copying 252GB of nothing sounds fun :D
I prefer eating pizza as a way of having fun :D
I like Linux as a desktop, mobile and cloud OS. But for embedded applications I probably wouldn't use it everywhere, and look at different options per usecase.
man if you buy a threadripper you could compile this stuff in a quarter of the time your m1 studio does, just use vscode remotely to it
For a few bucks per hour you can get something 2-3 times the size in the cloud. I've definitely learned my lesson from buying pricy workstations that spend 95% of their time doing nothing but running Emacs.
@@capability-snob cloud is the worst solution ever for compiling linux kernel. Must there be a reason for Torvaldis to have a threadripper system instead of going cloud
@@PuOop-j9l because he is building them all the time and by all the time i do mean all the time
How does crosscompiling an ARM kernel on an AMD CPU compare to compiling an X86 kernel on the same CPU?
@@sasjadevries honestly slower idk (of the top op my head) how much but slower.
There will always be some slowdown but depending on implementation of cross compilation can be extremely small
Zaman OS
come on you really should build Linux From Scratch then you will know rock hard! normal Linux distributions are easy peasy! NB Android is a Linux Distrution!
beyond disappointed in debians latest bs
Linux isn't friendly to any one it is designed that way
what a nightmare
The "easy" at the end caught me :D
Awesome video! Already have quite a bit of knowledge about building Linux but learning here about Embedded stuff!
Did you already work with yocto/yoctobuild? Hearing frequently it being used to build embedded system images
Nope, but it's been on my to-do list for a while. Afraid of starting, because it'll pull me in for sure! :) And buildroot is so easy to get started with :)