Opened 4 years ago

Last modified 18 months ago

#16409 new bug

google compute engine vps

Reported by: irtusb Owned by: nobody
Priority: normal Milestone: Unscheduled
Component: - General Version:
Keywords: boot-failure Cc: kallisti5
Blocked By: Blocking:
Platform: All

Description

Google offers a paid service called Compute Engine. It allow creation and management of virtual machines running inside Google's infrastructure.

I went a bit crazy and managed to boot haiku r1b2 and hrev54429 (x86_64) on the smallest machine they offer (f1-micro: 1vCpu + 600mb RAM)

  • Beta2 went kdl
  • hrev54429 showed full colored icons, but then nothing, it stopped there

attached serial output and last status screenshot

Attachments (6)

beta2-screen.jpg (92.2 KB ) - added by irtusb 4 years ago.
beta2-serial.txt (45.0 KB ) - added by irtusb 4 years ago.
54429-screen.jpg (8.5 KB ) - added by irtusb 4 years ago.
54429-serial1.txt (56.2 KB ) - added by irtusb 4 years ago.
54429-serial2.txt (39.7 KB ) - added by irtusb 4 years ago.
using dd
blacklist.jpg (53.4 KB ) - added by irtusb 4 years ago.
blacklisting scsi_periph

Download all attachments as: .zip

Change History (20)

by irtusb, 4 years ago

Attachment: beta2-screen.jpg added

by irtusb, 4 years ago

Attachment: beta2-serial.txt added

by irtusb, 4 years ago

Attachment: 54429-screen.jpg added

by irtusb, 4 years ago

Attachment: 54429-serial1.txt added

comment:1 by X512, 4 years ago

X86EMU_exec

bios_interrupt

vesa_init

Can you try to boot in EFI mode? Also you can try to disable BIOS calls in boot options.

in reply to:  1 comment:2 by irtusb, 4 years ago

Replying to X512:

X86EMU_exec

bios_interrupt

vesa_init

Can you try to boot in EFI mode? Also you can try to disable BIOS calls in boot options.

that is actually very difficult. there is no way to configure boot nor to attach keyboard or mouse to it. The only way to send command to the machine is via ssh. It is possible to see screen but not at realtime.

I gave it another try. This time i dd'ed hrev54429 into a disk instead of following a rather convoluted way to setup disk images and got a different result. The following KDL

PANIC: I/O operation would need to be cut.
Welcome to Kernel Debugging Land...
Thread 253 "scsi scheduler 1" running on CPU 0
stack trace for thread 253 "scsi scheduler 1"
    kernel stack: 0xffffffff812dc000 to 0xffffffff812e1000
frame                       caller             <image>:function + offset
 0 ffffffff812e0b28 (+  24) ffffffff8014fa1c   <kernel_x86_64> arch_debug_call_with_fault_handler + 0x16
 1 ffffffff812e0b40 (+  80) ffffffff800ae1b8   <kernel_x86_64> debug_call_with_fault_handler + 0x88
 2 ffffffff812e0b90 (+  96) ffffffff800afb41   <kernel_x86_64> kernel_debugger_loop(char const*, char const*, __va_list_tag*, int) + 0xf1
 3 ffffffff812e0bf0 (+  80) ffffffff800afe3e   <kernel_x86_64> kernel_debugger_internal(char const*, char const*, __va_list_tag*, int) + 0x6e
 4 ffffffff812e0c40 (+ 240) ffffffff800b01a7   <kernel_x86_64> panic + 0xb7
 5 ffffffff812e0d30 (+ 144) ffffffff817e66e6   <scsi_periph> read_write(scsi_periph_device_info*, scsi_ccb*, IOOperation*, unsigned long, unsigned long, physical_entry*, unsigned long, bool, unsigned long*) + 0xd6
 6 ffffffff812e0dc0 (+ 128) ffffffff817e7408   <scsi_periph> periph_io(scsi_periph_device_info*, IOOperation*, unsigned long*) + 0xa8
 7 ffffffff812e0e40 (+  64) ffffffff817e0fd5   <scsi_disk> do_io(void*, IOOperation*) + 0x25
 8 ffffffff812e0e80 (+ 304) ffffffff800dfd26   <kernel_x86_64> IOSchedulerSimple::_Scheduler() + 0x726
 9 ffffffff812e0fb0 (+  32) ffffffff8008af17   <kernel_x86_64> common_thread_entry(void*) + 0x37
10 ffffffff812e0fd0 (+2127687728) ffffffff812e0fe0   
kdebug> 

Attached full serial output

by irtusb, 4 years ago

Attachment: 54429-serial2.txt added

using dd

comment:3 by waddlesplash, 4 years ago

Cc: kallisti5 added

That seems strange, I would think Google Compute Engine would be using virtio here?

CC'ing kallisti5 as I know he has successfully run Haiku on GCE.

comment:4 by diver, 4 years ago

What happens if you blacklist scsi_periph by creating /system/settings/packages with this content:

Package haiku  {
	EntryBlacklist {
		add-ons/kernel/generic/scsi_periph
	}
}

For that you will probably need bfs_fuse working though.

by irtusb, 4 years ago

Attachment: blacklist.jpg added

blacklisting scsi_periph

comment:5 by mmlr, 4 years ago

It is using virtio SCSI and not virtio block devices, so that would be expected. The virtio SCSI interface is more advanced and allows for things like discard to work, which is why it is often used in virtual environments to free unused block storage.

The HaikuPorts builders at Hetzner also run on virtio SCSI and that hasn't been a problem so far.

There appear to be two disks of the same size, the first being empty and the second containing an anyboot image, is that correct?

comment:6 by irtusb, 4 years ago

@mmlr, short answer: no, a single disk was present

All of them x86_64

Before I forget. Procedures so far

  • beta2-screen and beta2-serial: beta anyboot from homepage unziped, renamed, targzed, uploaded to cloud storage, made a compute engine "image", created VM based on this image (google automagically created a hard disk for the instance) and run
  • 54429-screen and 54429-serial: same as above but using nightly hrev 54429
  • 54429-serial2: in a working debian VM downloaded, unziped, dd into empty disk. Shutdown, attached disk as boot image to a new VM and run
  • blacklist.jpg: in a working debian VM: git clone haiku and buildtools, jam '<build>bfs_fuse', losetup anyboot iso, bfs_fuse /dev/loop0p1, nano system/config/packages, umount and remove loop device, dd into new hard disk, use as boot into new VM and run.

comment:7 by irtusb, 4 years ago

As cloud based services are not a target of Haiku and this one specifically cannot be interacted with keyboard and mouse in realtime it is not really worth to keep this ticket open. Please close this

comment:8 by kallisti5, 4 years ago

I think there could be a valid story behind this one. We have discussed haikuporter auto starting and stopping Haiku compute instances for port builds... however historically not at GCP given their high costs.

There are alternatives like Vultr (which also successfully use virtio) I use for my Haiku machines, and our virtio drivers work well there.

I ran a Haiku machine under the Haiku, Inc. google account a while ago via building a custom disk image.

I personally am ok keeping this one open to do a bit of additional investigation into limitations of Haiku under GCP

comment:9 by kallisti5, 4 years ago

by the way, the biggest suspect issue here is the machine selection...

"f1-micro: 1vCpu + 600mb RAM"

Not sure our x86_64 machine will run in that. I think 512 MiB has been a bit too tight for me in the past. 256 MiB is *definitely* too small given my previous experiences.

The cloud is just someone elses computer... that 1 vCpu isn't any faster than an Intel Celeron server :-)

comment:10 by waddlesplash, 3 years ago

Keywords: boot-failure added

comment:11 by waddlesplash, 18 months ago

Please retest with a recent nightly.

comment:12 by kallisti5, 18 months ago

For any lurkers, the process to get Haiku running in GCE would be:

  • Install Haiku to a VMDK disk
  • Copy the VMDK disk to a Google Storage bucket
  • Import the disk image as an image
  • Create a machine image
  • Create a new VM with the machine image
    • make sure to enable a graphics device

comment:13 by kallisti5, 18 months ago

Actually... there is a mechanism for Haiku, Inc. to offer pre-built Haiku images on GCE via community images. After R1/beta4 is released, lets look at this to see how possible it is.

https://cloud.google.com/compute/docs/images?_ga=2.158162364.-743347290.1670334160#community_supported_images

comment:14 by kallisti5, 18 months ago

I've reserved the "haiku-inc" project in GCP under the Haiku, Inc. GCP account for this

Note: See TracTickets for help on using tickets.