erigones / esdc-ce

Danube Cloud :: Community Edition
https://danubecloud.org
Apache License 2.0
125 stars 28 forks source link

Error 28: Selected item cannot fit into memory #447

Closed tanhueco closed 4 years ago

tanhueco commented 5 years ago

USB installed failed on all latest, hn, and cn images while successfully installing SmartOS images on the same hardware. Upon boot from USB, the screen stops right before the setup after Grub and displays "Error 28: Selected item cannot fit into memory".

Some Linux users have success disabling memory hole at 15M-16M but those are from older hardware. Some also had success after updating GRUB. Since the install is remote (hetzner.com), GRUB update is almost impossible.

The following is what I have done to date:

The hardware consist of:

First Compute Node

2019-08-17 13_44_46-XnView Classic

First Compute Node Rescue (root/root)

2019-08-17 13_40_29-BIOS Setup - OneNote
YanChii commented 5 years ago

Hi @Tanhueco,

Thank you for your report. In the upcoming release, we plan to switch from GRUB to BSD loader on the USB key. This will involve also an UEFI boot from the USB.

I'll let you know when the testing build becomes available. Will you be able to test it in several weeks?

Jan

tanhueco commented 5 years ago

Hi Jan,

That sounds great. I have no problem testing it in the next several weeks. Please let me know when it is ready for testing.

YanChii commented 5 years ago

Hi @tanhueco

I have a testing image with the new loader for you. You can download it from here.

Please let me know if this resoved your problem. This work is related to #450 .

The new USB image has also new SmartOS platform included. It is not fully tested yet so be careful with deploying this one in production (until the release comes out).

Thank you for your help.

Cheers.

Jan

tanhueco commented 5 years ago

Hi Jan,

I was able to boot this version to the danubecloud root. It did not take me to the network setup process but, instead, went to the maintenance prompt directly despite the absence of a pool. As such, there is no access to the internet and no management console. I hope this is what you aimed for this version. I included screenshots for reference.

2019-09-17 01_07_30-Lantronix SLSLP KVM Console - fsn1-kvm47 hetzner com 2019-09-17 01_11_26-Lantronix SLSLP KVM Console - fsn1-kvm47 hetzner com

Rgds.

YanChii commented 5 years ago

Hi @tanhueco

This looks like a recovery mode. Did you enable Recovery boot option in the loader menu?

The image should take you to the install screen, I've just re-tested it to be sure.

Jan

tanhueco commented 5 years ago

Hi Jan,

You are right. I must have left it at recovery when cleaning the pools. The install completed where it presented the cloud URL's, username, and password for Danube and Zabbix. So it is working well.

I just ran into problems with accessing the subnet due to the way Hetzner has their network setup so I was not able to login to the admin panel yet. The advance installation process was used to add the external subnet. This does not have anything to do with Danube Cloud. I should be able to resolve this matter in due time. It is looking very good as it is now.

Rgds. Reinon

YanChii commented 5 years ago

We have experience with Hetzner deployments. You have to keep MAC address on the external interface (advanced instalation option) and then you can run this script /opt/custom/bin/create-router-from-gz.sh. It will nat-route traffic from your admin network to the internet.

You just need to add IP address of default gw of admin nework to the node (so you will have two IPs on the node's admin interface).

And in /etc/ipf/ipnat.conf you can define nat lines to forward port 443 to the mgmt01 VM.

tanhueco commented 5 years ago

I can't get mine right. The main ip is, 5.5.5.227 (gw: 5.5.5.225, nm: 255.255.255.224) for example.

The subnet ips are 8.8.8.112/29 (gw: 5.5.5.5.227, nm: 255.255.255.248):

{
    "config_console": "vga",
    "skip_instructions": true,
    "simple_headers": true,
    "accept_eula": false,
    "advanced_install": true,
    "datacenter_name": "My datacenter",
    "etherstubs": "adminstub0",    <<<automatically generated
    "admin_ip": "5.5.5.227",
    "admin_netmask": "255.255.255.224",
    "admin_gateway": "5.5.5.225",
    "admin_vlan_id": "",
    "add_nictags": true,
    "external_add_nictag": true,
    "external_add_ip": true,
    "external_ip": "8.8.8.113",
    "external_netmask": "8.8.8.248",
    "external_preserve_mac": false,  <<<it fails everytime if true
    "internal_add_nictag": false,
    "storage_add_nictag": false,
    "headnode_default_gateway": "5.5.5.227",  <<<this is more like external ip gateway)
    "dns_resolver1": "<default>",
    "dns_resolver2": "<default>",
    "dns_search": "<default>",
    "ntp_host": "<default>",
    "skip_ntp_check": false,
    "install_to_hdd": false,
    "disk_layout": "<default>",
    "root_password": "Passw0rd",
    "hostname": "<default>",
    "remote_node": false,
    "mgmt_admin_ip": "8.8.8.114",
    "cfgdb_admin_ip": "8.8.8.115",
    "esdc_install_password": "nbusr123",
    "admin_email": "root@example.com",
    "skip_final_confirm": true
}

May I know at what point were you able to run the /opt/custom/bin/create-router-from-gz.sh script? Shouldn't it be run before the Danube Cloud install script so the gateways for the admin and zabbix VM's are correctly addressed?

YanChii commented 5 years ago

Hi @tanhueco

A few points:

"etherstubs": "adminstub0",    <<<automatically generated

If this is autogenerated, then there's probably a problem. It should give you choice between your physical NIC and the etherstub. No choice suggests that your real NIC was not found by SmartOS itself.

"external_preserve_mac": false,  <<<it fails everytime if true

How does it fail? Where? Might be connected to the first problem (it it cannot find external NIC, there's no MAC to preserve). I've tested it now and it works as intended, no error shown.

"headnode_default_gateway": "5.5.5.227",

Yes, this should be your external GW (when installer asks you for a GW, enter external one first. Then it asks for admin_gateway). Entering only admin GW makes sense only when you already have some network infrastructure that can route traffic for you from admin network to the internet.

"mgmt_admin_ip": "8.8.8.114",
"cfgdb_admin_ip": "8.8.8.115",

should be all on the admin network, not on the external.

Are you testing an unattended install? If there are errors, pls try normal, interactive install because then you can hit Ctrl+C any time and get a shell - to see what's happening. Useful commands:

diskinfo
dladm show-phys -m
ipadm show-addr
netstat -rn
grep usbkey /etc/mnttab

Jan

YanChii commented 5 years ago

And you run the /opt/custom/bin/create-router-from-gz.sh script only after the installation.

tanhueco commented 5 years ago

I cannot access the root after a successful install. Could there be keys left behind that were supposedly removed in this version?

YanChii commented 5 years ago

Yes, this is problem with this test platform - the root password is not changed properly. It will be fixed in the release. Currently you can change the password using the recovery boot. Jan

tanhueco commented 4 years ago

Closing this issue. UEFI install works. The rest of the issues are not related to the subject.

YanChii commented 4 years ago

Thank you Reinon for your help with testing. I'll let you know when the new and tested release is out so you can use the Danube Cloud fluently. Jan

YanChii commented 4 years ago

I've just realized that you can also install Hetzner server using PXE ISO image. More info here http://pxe.danubecloud.org/pxe/

This way you don't have to wait for the new release and you can start now.

YanChii commented 4 years ago

Hi @tanhueco. The new version of Danube Cloud is out. With new bootloader. Download new installers from here https://github.com/erigones/esdc-ce/wiki/Download#42 Or use esdc-platform-upgrade command to upgrade existing installations. Cheers. Jan

tanhueco commented 4 years ago

I created a gist of Danube Cloud v4.2 for installs at Hetzner:

https://gist.github.com/tanhueco/ffab0cdb5289792ef7fe07905f16853e

YanChii commented 4 years ago

Hi @tanhueco

thank you. It is really cool and valuable to have such howto.

Let me write some comments on that from my experience:

  1. it is strongly recommended to have all management VMs on admin network separate from internet. You can add the external network later as their second interface. Not everything should be accessible from outside (there are some interfaces that expect safe environment, e.g. image server).
    • if you have only one physical nic and you are in Hetzner, you can (besides adminstub0) use their new vswitch function to separate admin network - just select admin network and VLAN 4000 or simillar when setting admin_ip and then set web interface address from that admin IP range. You can then route them using NAT (see next point). And using this approach, you are not restricted to one node install because admin network can be seen by other physical servers in the same vswitch.
    • And as long as you are using create-router-from-gz.sh, you can even save public IPs completely and use /etc/ipf/ipnat.conf to use node's IP address to forward ports to appropriate mgmt VMs - see example config for this. If you are using USB boot, the /etc directory is not persistent. To persist firewall configuration, write the files to /opt/custom/etc/ipf.d/ and run /opt/custom/etc/rc-pre-network.d/020-ipsec-restore.sh refresh. To use global zone as a router for admin VMs, you set admin_gateway to node's admin_ip and headnode_default_gateway to Hetzner's external IP subnet gateway. But don't forget to set "external_preserve_mac": true, (this option is specifically for Hetzner, OVH and simmilar installs because it allows you to use external node interface within the MAC restricted environment. Plain SmartOS does not have this functionality).
  2. You can install DC also without USB key if you want. Here's the hack. Boot to rescue, make sure all disks are non-bootable, use dd to write ESDC USB image to second disk (possibly with answers.json), reboot. This way the installer boots from the second disk (because the first one is unbootable) and you can select "install_to_hdd": true which installs DC on the first disk. After next reboot, you can add the second disk to zones zpool as a mirror using zpool attach zones ....
  3. It is better to avoid manual changes in VM configs using vmadm because DC is not aware of them. You can do any kind of update_nics stuff from the DC GUI/API (create network, add IP addresses, add vnic, update VM config, reboot VM).
  4. cfgdb_admin_ip in answers.json is only for next compute nodes to know where to find management cfgdb VM to pull config from. The entry is ignored during first compute node install.

If you have any questions, feel free to ask. And you can safely publish also this info I've written if you want.

Cheers.

Jan

tanhueco commented 4 years ago

Hi Jan,

Very good information. Lots to digest. Interesting information on vSwitch. I am starting to learn now what DC is capable of and it is quite powerful. Unfortunately, for network setup, Hetzner limits the amount of time on their KVM since it is manually attached to the server every time a request is made.

As I go through DC, I will add my experience and create more how to's. In the meantime, I will add the information above to the gist. If I am stuck at a certain setup, I will seek your help.

Where is the best time to contact you without adding more to this thread since discussions from here is no longer related to the subject?

Rgds, Reinon

YanChii commented 4 years ago

The best way to talk is to reach us on Gitter chat. Jan