Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

x86 - no support for SMP or large RAM (add 686-pae flavour?) #471

Closed
keriszafir opened this issue May 15, 2017 · 1 comment
Closed

x86 - no support for SMP or large RAM (add 686-pae flavour?) #471

keriszafir opened this issue May 15, 2017 · 1 comment
Labels

Comments

@keriszafir
Copy link

keriszafir commented May 15, 2017

I'm running Chaos Calmer on a Nokia Checkpoint IP690 enterprise firewall. A very nice platform with a Xeon LV 2x2GHz (codename Sossaman, CPUID 06Ex) + 2GB RAM, upgradeable to 8GB, and a CF card, two SATA 2.5" HDDs and 4 slots for proprietary NICs (typical one has two or four Intel e1000 interfaces which work like a charm).

The problem is that the CPU is 32-bit, so I can't use x86-64 and have to do with x86-generic... which doesn't support PAE or SMP. And it means being limited to a single core and 1GB of RAM.

I tried building an image myself, but it looks like some download links for library code are defunct and the compilation breaks. I'd rather do with Chaos Calmer until the next release (merged with LEDE?) comes out.

Looks like someone made an alternative build at https://ieuse.com/xeon - SMP and PAE is working, but there's no btrfs support... tough luck.

Any chance of building an image for newer i686? (or is there a way of recompiling a kernel while leaving all packages intact?) Since I have plenty of disk space on the target platform, I can build it there, without a need for making a new toolchain.

@keriszafir keriszafir changed the title x86 - no support for SMP or large RAM (add 686 flavour?) x86 - no support for SMP or large RAM (add 686-pae flavour?) May 15, 2017
@keriszafir
Copy link
Author

Temporary hackaround: I used the LEDE snapshots kernel (currently 4.9.20).
Stable/release kernel won't do as it doesn't support PAE.

Caveat: all necessary modules (i.e. those currently installed on OpenWRT) need to come from the new kernel, otherwise it'll panic on loading an older module.
You must be sure that your OpenWRT installation has all modules you need and you won't add new ones with opkg (unless you download the package from LEDE snapshot).
Keep in mind that installing any module will load it automatically and unconditionally. Installing them all is not an option, it'll hog the RAM and lead to very long startup times. Know what you need and keep it simple.

You need a computer with a card reader (or IDE/SATA USB interface, if OpenWRT is on a HDD) and you're strongly advised to use a local console on the target system, whether VGA+keyboard or a serial port.

If you have a single disk/CF card:

  1. get a list of all installed kmod-* packages and extract the package names:
    opkg list-installed | grep kmod > /root/installed_modules then do some scripting magic (I used Python for that)
  2. shutdown the router, take the card out and into the card reader, back up the current OpenWRT installation (and I mean the full disk image, not configuration backup): sudo dd if=/dev/sdc of=openwrt_backup.img
  3. download and flash a LEDE snapshot image and flash it:
    sudo dd if=/tmp/lede_image.img of=/dev/sdd, then put it into the target device and boot
  4. install modules from the list and copy them, together with the newer kernel, to some directory (e.g. /root): cp -r /lib/modules /root/
  5. restore the current OpenWRT installation to the disk
  6. copy vmlinuz to the boot directory on partition 1 and modules to the root filesystem on partition 2
  7. put the disk in the router and boot, then cat /proc/cpuinfo and cat /proc/meminfo...

If you have an additional card or disk, you can flash it with LEDE (p. 3), then boot it, install required modules, copy them back to the OpenWRT installation et voila.
You may as well install LEDE on a virtual machine, then all you need is to get the packages list in and kernel+modules out. Bonus points if you can do that on the router itself.

@aparcar aparcar closed this as completed Feb 9, 2022
@aparcar aparcar added the legacy label Feb 9, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants