I'm sure there's a way to do this but haven't seen any real concise way documented either on the forums here (that I can find anyways) or in the docs. Having some moderate linux experience under my belt, I guess I can always mount the existing image (x86 ext4+EFI in this case), figure out how to resize it, then just toss everything in and modify the feed configs.
But I'm curious if there's an even easier way such as with the image builder and just tell it to add everything to the image instead of select packages?
Right now I'm working on trying to get an OWRT build on this Evolve Maestro laptop I got for a steal open box at my local Microcenter. I've dabbled with it using another OWRT fork (OpenMPTCPRouter) and it seems to work reasonably well as it includes a ton of useful modules out of the box and surprisingly the built in LTE card works straight away (at least on a newer snapshot of that fork).
But trying to migrate to a stock OWRT install, the prebuilt x86_64 images appear to be really lean in the package/kernel module department. This kind of creates an issue with this laptop as the built in Wifi chip (rtl8723du, USB connected internally) is currently unsupported, no built in ethernet, and the cellular drivers are obviously missing out of the box. And most Wifi and ethernet dongles I have on hand (I probably have about 5-6 in total) don't work out of the box.
Ultimately if I had my way, I'd love to just have every module be preinstalled and available for whatever hardware devices may come up. Even better just make my own custom compiled build and include every package and module. Given this is an x86 machine with 4GB ram and I'm intending to use the built in 64GB eMMC storage, I'm not really hurting for resources. But last time I dabbled in that some years back in a VM, it rapidly ate up the ~100GB of storage I had set for it and not quite sure how much storage to expect on a full scale build like this.
Impossible, and impractical...
Among the thousands of packages, there are conflicting packages and drivers, as well as e.g. several competing VoIP solutions, samba implementations, whatever.
Fair enough and I guess that was the more ambitious 'nice to have' part of my post.
Rolling back to the core of the post: What would be the easiest way to include a full local copy in the image that's ready to go and install what I need without requiring an internet connection? As noted, I have the basic concept down and if needed I can mess with trying to modify a stock image to add it in. I'm just curious if there's an easier way that's going to be MUCH less of a headache.
The firmware selector on the website only seems to care about actually installed packages when customizing. Haven't had a chance to look deep into the image builder yet but I do have that downloaded and will be taking a closer look after work. Looks like it MAY do what I want, but not sure if I'm able to tell it just to wildcard/include all available packages (and even then the documentation doesn't seem super clear if the packages are actually being installed into the image or just added as a local repo/folder).
Thanks. This is basically my original plan and seems like really one of the least messiest ways to do it after reviewing all the other options. I basically have a Mint LiveCD now so I can boot the laptop and flash the eMMC with new builds as needed (which I'm hoping I don't need to do too much further. Right now I'm trying to finalize a mobile router setup on this thing and once it's where I want it, I can figure out what packages/kernel modules are in use and create a cleaner image with those included) and while in there it gives me the opportunity to resize the rootfs with GParted and then mount that and copy over the packages and adjust the distfeeds.conf.
Just in case anyone else comes across this, some notes I have after my research for stuff that didn't seem too clear in the docs:
The Image Builder PACKAGES declaration fully installs the packages in the image. No way to just add them in for use later (though I guess you could use the FILES declaration for that. Not something I tried messing with in light of the above solution which I knew how to do already).
The documentation implies that doing this with the Image Builder through the buildroot can do this: https://openwrt.org/docs/guide-user/additional-software/imagebuilder#building_the_image_builder_with_all_packages_inside
However when attempting this it is unclear what specific make command is suitable for this use. I stuck with make download world (world might have been what tripped me up but couldn't find any better target for this) which seemed to still do a lot of compilation work related to the OWRT OS itself which I was hoping to avoid.