Tiny Core Linux
General TC => Tiny Core on Virtual Machines => Topic started by: as on October 23, 2015, 07:15:00 AM
-
I'm booting on Google Compute Engine which uses KVM virtualisation.
I'm booting only to ram with a grub.cfg that looks like this:
menuentry 'tinycore64' {
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
linux /boot/vmlinuz64 tce=/opt/tce modules=ext4 console=ttyS0,115200 waitusb=10
initrd /boot/corepure64.gz /boot/ug_initramfs.gz
echo 'Loading tinycore64...'
}
The system boots up fine but strangely I can't find the block device that the operating system booted from. My objective is to get it mounted but there's no sign of it.
Below is the boot messages and at the bottom I got bootlocal.sh to run a number of commands to show me what is going on in the system.
blkid outputs this:
/dev/zram0: UUID="bdad4331-1072-45f5-b1be-4290579384de" TYPE="swap"
/dev/loop0: TYPE="squashfs"
/dev/loop1: TYPE="squashfs"
/dev/loop2: TYPE="squashfs"
/dev/loop3: TYPE="squashfs"
/dev/loop4: TYPE="squashfs"
/dev/loop5: TYPE="squashfs"
/dev/loop6: TYPE="squashfs"
It's strange - if I run the same image on Xen then I can see the boot volume as /dev/xvda1 I would have expected on KVM it would be at /dev/sda1
Any ideas would be much appreciated.
Start bios (version 1.7.2-20150226_170051-google)
Unable to unlock ram - bridge not found
Ram Size=0x26600000 (0x0000000000000000 high)
Relocating low data from 0x000e5810 to 0x000ef780 (size 2161)
Relocating init from 0x000e6081 to 0x265d3540 (size 51612)
CPU Mhz=2510
=== PCI bus & bridge init ===
PCI: pci_bios_init_bus_rec bus = 0x0
=== PCI device probing ===
Found 4 PCI devices (max PCI bus is 00)
=== PCI new allocation pass #1 ===
PCI: check devices
=== PCI new allocation pass #2 ===
PCI: map device bdf=00:03.0 bar 0, addr 0000c000, size 00000040 [io]
PCI: map device bdf=00:04.0 bar 0, addr 0000c040, size 00000040 [io]
PCI: map device bdf=00:03.0 bar 1, addr febfe000, size 00001000 [mem]
PCI: map device bdf=00:04.0 bar 1, addr febff000, size 00001000 [mem]
PCI: init bdf=00:01.0 id=8086:7110
PIIX3/PIIX4 init: elcr=00 0c
PCI: init bdf=00:01.3 id=8086:7113
Using pmtimer, ioport 0xb008, freq 3579 kHz
PCI: init bdf=00:03.0 id=1af4:1004
PCI: init bdf=00:04.0 id=1af4:1000
Found 1 cpu(s) max supported 1 cpu(s)
MP table addr=0x000fdaf0 MPC table addr=0x000fdb00 size=240
SMBIOS ptr=0x000fdad0 table=0x000fd990 size=314
Memory hotplug not enabled. [MHPE=0xffffffff]
ACPI DSDT=0x265fe070
ACPI tables: RSDP=0x000fd960 RSDT=0x265fe030
Scan for VGA option rom
Machine UUID 0ede7055-3661-82dd-b295-f5c92a7fa5b5
Found 4 serial ports
found virtio-scsi at 0:3
Searching bootorder for: /pci@i0cf8/*@3/*@0/*@0,0
Searching bootorder for: /pci@i0cf8/*@3/*@0/*@1,0
virtio-scsi vendor='Google' product='PersistentDisk' rev='1' type=0 removable=0
virtio-scsi blksize=512 sectors=2097152
Searching bootorder for: /pci@i0cf8/*@3/*@0/*@2,0
edited - Searching bootorder.... REPEATS
Searching bootorder for: /pci@i0cf8/*@3/*@0/*@252,0
Searching bootorder for: /pci@i0cf8/*@3/*@0/*@253,0
KBD: int09 handler: AL=0
PS2 keyboard initialized
All threads complete.
Scan for option roms
Searching bootorder for: HALT
drive 0x000fd920: PCHS=0/0/0 translation=lba LCHS=1024/32/63 s=2097152
Space available for UMB: 000c0000-000eb800
Returned 122880 bytes of ZoneHigh
e820 map has 6 items:
0: 0000000000000000 - 000000000009fc00 = 1 RAM
1: 000000000009fc00 - 00000000000a0000 = 2 RESERVED
2: 00000000000f0000 - 0000000000100000 = 2 RESERVED
3: 0000000000100000 - 00000000265fe000 = 1 RAM
4: 00000000265fe000 - 0000000026600000 = 2 RESERVED
5: 00000000fffbc000 - 0000000100000000 = 2 RESERVED
Unable to lock ram - bridge not found
KBD: int09 handler: AL=0
enter handle_19:
NULL
Booting from Hard Disk 0...
Booting from 0000:7c00
[H[J[1;1H[?25l[m[H[J[1;1H[2;21HGNU GRUB version 2.02~beta2-22ubuntu1.1
[m[4;2H+----------------------------------------------------------------------------+[5;2H|[5;79H|[6;2H|[6;79H|[7;2H|[7;79H|[8;2H|[8;79H|[9;2H|[9;79H|[10;2H|[10;79H|[11;2H|[11;79H|[12;2H|[12;79H|[13;2H|[13;79H|[14;2H|[14;79H|[15;2H|[15;79H|[16;2H|[16;79H|[17;2H+----------------------------------------------------------------------------+[m[18;2H[19;2H[m Use the ^ and v keys to select which entry is highlighted.
Press enter to boot the selected OS, `e' to edit the commands
before booting or `c' for a command-line. [5;80H [7m[5;3H*tinycore64 [m[5;78H[m[m[6;3H [m[6;78H[m[m[7;3H [m[7;78H[m[m[8;3H [m[8;78H[m[m[9;3H [m[9;78H[m[m[10;3H [m[10;78H[m[m[11;3H [m[11;78H[m[m[12;3H [m[12;78H[m[m[13;3H [m[13;78H[m[m[14;3H [m[14;78H[m[m[15;3H [m[15;78H[m[m[16;3H [m[16;78H[m[16;80H [5;78H[22;1H The highlighted entry will be executed automatically in 1s. [5;78H[22;1H The highlighted entry will be executed automatically in 0s. [5;78H[?25h[H[J[1;1H[H[J[1;1HLoading tinycore64...
Initializing cgroup subsys cpuset
Initializing cgroup subsys cpu
Initializing cgroup subsys cpuacct
Linux version 3.16.6-tinycore64 (tc@box) (gcc version 4.9.1 (GCC) ) #777 SMP Thu Oct 16 10:21:00 UTC 2014
Command line: BOOT_IMAGE=/boot/vmlinuz64 tce=/opt/tce modules=ext4 console=ttyS0,115200 waitusb=30
Disabled fast string operations
e820: BIOS-provided physical RAM map:
<snip>
Freeing unused kernel memory: 1224K (ffff8800014ce000 - ffff880001600000)
Freeing unused kernel memory: 720K (ffff88000174c000 - ffff880001800000)
[H[J[1;32mBooting [1;33mCore 6.4 [0;39m
[1;32mRunning Linux Kernel [1;33m3.16.6-tinycore64[1;32m.[0;39m
[1;34mChecking boot options...[0;39m[1;32m Done.[0;39m
[1;34mStarting udev daemon for hotplug support...[0;39m/input: PC Speaker as /devices/platform/pcspkr/input/input3
ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 11
ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 10
[1;32m Done.[0;39m
ppdev: user-space parallel port driver
input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input2
psmouse serio1: alps: Unknown ALPS touchpad: E7=10 00 64, EC=10 00 64
tsc: Refined TSC clocksource calibration: 2500.002 MHz
input: ImPS/2 Generic Wheel Mouse as /devices/platform/i8042/serio1/input/input5
floppy0: no floppy controllers found
work still pending
loop: module loaded
zram0: detected capacity change from 0 to 137347072
random: mkswap urandom read with 5 bits of entropy available
Adding 134124k swap on /dev/zram0. Priority:-1 extents:1 across:134124k SSFS
[1;34mScanning hard disk partitions to create [1;33m/etc/fstab [0;39m
[1;32mSetting Language to [1;35mC[1;32m Done.[0;39m
squashfs: version 4.0 (2009/01/31) Phillip Lougher
[1;32mPossible swap partition(s) enabled.[0;39m
[1;34mLoading extensions...[0;39m/-/[1;32m Done.[0;39m
[1;32mSetting keymap to [1;35mus[1;32m Done.[0;39m
[1;32mSetting hostname to [1;35mbox[0;39m [1;32mDone.[0;39m
login[552]: root login on 'tty1'
/opt/bootlocal.sh: line 1: !#/bin/sh: not found
udhcpc (v1.23.1) started
Sending discover...
Sending select for 10.240.0.2...
Lease of 10.240.0.2 obtained, lease time 268435455
deleting routers
route: SIOCDELRT: No such process
route: SIOCADDRT: Network is unreachable
adding dns 169.254.169.254
adding dns 10.240.0.1
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.240.0.1 0.0.0.0 UG 0 0 0 eth0
10.240.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
127.0.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 lo
search bad
nameserver 169.254.169.254
nameserver 10.240.0.1
/opt/bootlocal.sh: line 9: host: not found
search bad
nameserver 169.254.169.254
nameserver 10.240.0.1
major minor #blocks name
251 0 134128 zram0
7 0 72 loop0
7 1 16 loop1
7 2 2088 loop2
7 3 476 loop3
7 4 5852 loop4
7 5 364 loop5
7 6 916 loop6
fdisk
blkid
/dev/zram0: UUID="bdad4331-1072-45f5-b1be-4290579384de" TYPE="swap"
/dev/loop0: TYPE="squashfs"
/dev/loop1: TYPE="squashfs"
/dev/loop2: TYPE="squashfs"
/dev/loop3: TYPE="squashfs"
/dev/loop4: TYPE="squashfs"
/dev/loop5: TYPE="squashfs"
/dev/loop6: TYPE="squashfs"
ls /
[1;34mbin[0m [1;34metc[0m [1;34mhome[0m [1;34mlib[0m [1;34mmnt[0m [1;34mproc[0m [1;34mrun[0m [1;34msys[0m [1;34musr[0m
[1;34mdev[0m [1;34mextras[0m [1;32minit[0m [1;36mlinuxrc[0m [1;34mopt[0m [1;34mroot[0m [1;34msbin[0m [1;34mtmp[0m [1;34mvar[0m
mount: mounting /dev/sda1 on /mnt/sda1 failed: No such device or address
mount: mounting /dev/hda1 on /mnt/hda1 failed: No such device or address
mount: mounting /dev/xvda1 on /mnt/xvda1 failed: No such file or directory
.
./xvda1
./hda1
./sda1
ls /dev
[1;35magpgart[0m [1;35mloop4[0m [1;35msr0[0m [1;35mtty5[0m
[1;35matibm[0m [1;35mloop5[0m [1;35msr1[0m [1;35mtty50[0m
[1;35maudio[0m [1;35mloop6[0m [1;36mstderr[0m [1;35mtty51[0m
[1;35mbeep[0m [1;35mloop7[0m [1;36mstdin[0m [1;35mtty52[0m
[1;34mblock[0m [1;35mmcelog[0m [1;36mstdout[0m [1;35mtty53[0m
[1;34mchar[0m [1;35mmem[0m [1;35mtgt[0m [1;35mtty54[0m
[1;35mconsole[0m [1;34mnet[0m [1;35mtty[0m [1;35mtty55[0m
[1;36mcore[0m [1;35mnetwork_latency[0m [1;35mtty0[0m [1;35mtty56[0m
[1;35mcpu_dma_latency[0m [1;35mnetwork_throughput[0m [1;35mtty1[0m [1;35mtty57[0m
[1;35mfb0[0m [1;35mnull[0m [1;35mtty10[0m [1;35mtty58[0m
[1;36mfd[0m [1;35mnvram[0m [1;35mtty11[0m [1;35mtty59[0m
[1;35mfd0[0m [1;34mpktcdvd[0m [1;35mtty12[0m [1;35mtty6[0m
[1;35mfd0D360[0m [1;35mport[0m [1;35mtty13[0m [1;35mtty60[0m
[1;35mfd0D720[0m [1;35mppp[0m [1;35mtty14[0m [1;35mtty61[0m
[1;35mfd0H1440[0m [1;35mpsaux[0m [1;35mtty15[0m [1;35mtty62[0m
[1;35mfd0H1722[0m [1;35mptmx[0m [1;35mtty16[0m [1;35mtty63[0m
[1;36mflash[0m [1;34mpts[0m [1;35mtty17[0m [1;35mtty7[0m
[1;35mfull[0m [1;36mram[0m [1;35mtty18[0m [1;35mtty8[0m
[1;35mfuse[0m [1;35mram0[0m [1;35mtty19[0m [1;35mtty9[0m
[1;35mhda[0m [1;35mram1[0m [1;35mtty2[0m [1;35mttyS0[0m
[1;35mhda1[0m [1;35mram2[0m [1;35mtty20[0m [1;35mttyS1[0m
[1;35mhda2[0m [1;35mram3[0m [1;35mtty21[0m [1;35mttyS2[0m
[1;35mhda3[0m [1;35mram4[0m [1;35mtty22[0m [1;35mttyS3[0m
[1;35mhda4[0m [1;35mram5[0m [1;35mtty23[0m [1;35murandom[0m
[1;35mhda5[0m [1;35mram6[0m [1;35mtty24[0m [1;34musb[0m
[1;35mhda6[0m [1;35mram7[0m [1;35mtty25[0m [1;35mvcs[0m
[1;35mhda7[0m [1;35mrandom[0m [1;35mtty26[0m [1;35mvcs0[0m
[1;35mhda8[0m [1;35mrfkill[0m [1;35mtty27[0m [1;35mvcs1[0m
[1;35mhda9[0m [1;36mrtc[0m [1;35mtty28[0m [1;35mvcs2[0m
[1;35mhdb[0m [1;35mrtc0[0m [1;35mtty29[0m [1;35mvcs3[0m
[1;35mhdb1[0m [1;35msda[0m [1;35mtty3[0m [1;35mvcs4[0m
[1;35mhdb2[0m [1;35msda1[0m [1;35mtty30[0m [1;35mvcs5[0m
[1;35mhdb3[0m [1;35msda2[0m [1;35mtty31[0m [1;35mvcs6[0m
[1;35mhdb4[0m [1;35msda3[0m [1;35mtty32[0m [1;35mvcs7[0m
[1;35mhdb5[0m [1;35msda4[0m [1;35mtty33[0m [1;35mvcsa[0m
[1;35mhdb6[0m [1;35msda5[0m [1;35mtty34[0m [1;35mvcsa0[0m
[1;35mhdb7[0m [1;35msda6[0m [1;35mtty35[0m [1;35mvcsa1[0m
[1;35mhdb8[0m [1;35msda7[0m [1;35mtty36[0m [1;35mvcsa2[0m
[1;35mhdb9[0m [1;35msda8[0m [1;35mtty37[0m [1;35mvcsa3[0m
[1;35mhdc[0m [1;35msda9[0m [1;35mtty38[0m [1;35mvcsa4[0m
[1;35mhdd[0m [1;35msdb[0m [1;35mtty39[0m [1;35mvcsa5[0m
[1;35mhpet[0m [1;35msdb1[0m [1;35mtty4[0m [1;35mvcsa6[0m
[1;35minportbm[0m [1;35msdb2[0m [1;35mtty40[0m [1;35mvcsa7[0m
[1;34minput[0m [1;35msdb3[0m [1;35mtty41[0m [1;34mvfio[0m
[1;35mkmem[0m [1;35msdb4[0m [1;35mtty42[0m [1;35mvga_arbiter[0m
[1;35mkmsg[0m [1;35msdb5[0m [1;35mtty43[0m [1;35mwatchdog[0m
[1;35mlogibm[0m [1;35msdb6[0m [1;35mtty44[0m [1;35mwatchdog0[0m
[1;35mloop-control[0m [1;35msdb7[0m [1;35mtty45[0m [1;35mzero[0m
[1;35mloop0[0m [1;35msdb8[0m [1;35mtty46[0m [1;35mzram0[0m
[1;35mloop1[0m [1;35msdb9[0m [1;35mtty47[0m
[1;35mloop2[0m [1;34mshm[0m [1;35mtty48[0m
[1;35mloop3[0m [1;35msnapshot[0m [1;35mtty49[0m
-
tce=/opt/tce is not really a supported option, but shouldn't affect this. Try "dmesg | grep -i scsi".
-
tc@box:/$ dmesg | grep -i scsi
SCSI subsystem initialized
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
VMware PVSCSI driver - version 1.0.5.0-k
scsi0 : pata_legacy
scsi1 : pata_legacy
tc@box:/$
Doing grep -i scsci on the serial console output from bootup give slightly more information
found virtio-scsi at 0:3
virtio-scsi vendor='Google' product='PersistentDisk' rev='1' type=0 removable=0
virtio-scsi blksize=512 sectors=2097152
virtio-scsi vendor='Google' product='PersistentDisk' rev='1' type=0 removable=0
virtio-scsi blksize=512 sectors=20971520
SCSI subsystem initialized
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
VMware PVSCSI driver - version 1.0.5.0-k
scsi0 : pata_legacy
scsi1 : pata_legacy
-
A few more bits of information:
Google specifies here the requirements for a machine running as a guest VM, I'm not sure to what extent tinycore meets their requirements.
https://cloud.google.com/compute/docs/tutorials/building-images
The link says:
Required Linux Kernel Options
# to enable paravirtualization functionality.
CONFIG_KVM_GUEST=y
# to enable the paravirtualized clock (if applies to your kernel version).
CONFIG_KVM_CLOCK=y
# to enable paravirtualized PCI devices.
CONFIG_VIRTIO_PCI=y
# to enable access to paravirtualized disks.
CONFIG_SCSI_VIRTIO=y
# to enable access to the networking.
CONFIG_VIRTIO_NET=y
Recommended Linux Kernel Options
# to enable high performance interrupt delivery (needed for Local SSD)
CONFIG_PCI_MSI=y
Wild guessing in the dark here whether this might be related somehow:
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Virtualization_Administration_Guide/sect-Managing_storage_controllers_in_a_guest.html
Also if it is any help:
tc@box:/$ lspci
00:01.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 03)
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:03.0 Non-VGA unclassified device: Red Hat, Inc Virtio SCSI
00:04.0 Ethernet controller: Red Hat, Inc Virtio network device
tc@box:/$
-
Hi as
If you unpack the linux-3.16 file found here:
http://tinycorelinux.net/6.x/x86_64/release/src/toolchain/
you can check the config file to see if it meets your requirements.
-
Hi Rich
I've unpacked it. Which file specifically should I be looking at?
thanks
as
-
I did "make menuconfig" which created a .config I think
The setting that looks suspicious in .config is
CONFIG_SCSI_VIRTIO=m
whereas the Google docs say it should be CONFIG_SCSI_VIRTIO=y
Does this mean I need to do something to activate the SCSI_VIRTIO driver?
-
Hi as
My mistake, try the one of the config files here:
http://tinycorelinux.net/6.x/x86/release/src/kernel/
-
All those entries are enabled. Hm, maybe "dmesg | grep -i sd" has something more.
-
OK here it is - I'm really hoping someone has some idea of what has happened to the boot disk because I'm stuck at this stage. My only suspicion was that there was some sort of driver not loaded.
tc@box:/$ dmesg | grep -i sd
ACPI: RSDP 0x00000000000FD960 000014 (v00 Google)
ACPI: RSDT 0x00000000265FE030 000034 (v01 Google GOOGRSDT 00000001 GOOG 00000001)
ACPI: DSDT 0x00000000265FE070 0015B6 (v01 GOOG GODSDT 00000001 INTL 20140214)
ACPI: SSDT 0x00000000265FF780 00073D (v01 Google GOOGSSDT 00000001 GOOG 00000001)
usbcore: registered new interface driver ums-isd200
usbcore: registered new interface driver ums-sddr09
usbcore: registered new interface driver ums-sddr55
tc@box:/$
-
Testing in Qemu, I get a /dev/vda disk:
qemu -cdrom TinyCore-current.iso -drive file=kovo,if=virtio
-
After further investigation I'm edging towards convinced that the problem is that Google Compute Engine requires the Virtio-SCSI driver for virtual block device disk access as specified here: https://cloud.google.com/compute/docs/disks/ and also requires the NVMe driver for accessing locally attached SSDs https://en.wikipedia.org/wiki/NVM_Express - I haven't done any investigation of NVMe because for my immediate purposes I don't need it, but it would be good if it came out of the box with TinyCore so that TinyCore ran on Google Compute Engine without need for fiddling with drivers.
The hardware manifest bears out this line of investigation https://cloud.google.com/compute/docs/tutorials/building-images where it specifies that the machine contains "Virtio-SCSI Storage Controller"
I believe that virtio_blk won't do the job, virtio_scsi is required
Unfortunately it appears that 64 bit tinycore does not include a compiled virtio_scsi driver.
I'm a bit puzzled because the messages from Rich above refer to the config for both 64 and 32 bit tinycore, Curaga says that "all those entries are enabled" but as far as I can tell in 64 bit tinycore there's no virtio_scsi driver.
What's the most effective way for me to get a 64 bit virtio_scsi driver to test?
Thanks for all help!
-
You can double-check if config-3.16.6-tinycore64 has virtio_scsi enabled or not and, if not, re-compile the kernel to get virtio_scsi compiled in or available as a module.
-
The 64-bit config has scsi_virtio as a module, right - will be changed for 7.x. For this you'll need to remaster the module into base, if using the 64-bit kernel. NVME is enabled in both.
-
OK I'm setting out to compile the drivers/virtio_scsi module
I have downloaded the source from here: http://www.gtlib.gatech.edu/pub/tinycore/6.x/x86_64/release/src/toolchain/linux-3.16.2.tar.xz
I believe step one is to do "make oldconfig"
Where can I find the old .config file? I've dug around but can't see it.
thanks
-
You need to use linux-3.16.6-patched.txz and config-3.16.6-tinycore64 from 6.x/x86/release/src/kernel
-
You don't need to compile a new kernel - just remaster the module from scsi-3.16.6-tinycore64.tcz into your initrd.
Unpack the scsi extension, copy the virtio module into place, update depmod files. The wiki has more detail on this.
-
>> just remaster the module from scsi-3.16.6-tinycore64.tcz into your initrd.
OK great this worked thanks. I can now see the hard disk on Google Compute Engine.
Currently however it only recognises the disk is I manually load the virtio_scsi module with insmod. It doesn't seem to automatically get loaded.
What is the correct way to ensure the module is loaded at boot time?
-
If you updated the depmod files, it would get loaded if a device matching it was present.
Otherwise, load it in bootsync.sh.