mirror of
https://github.com/rancher/os.git
synced 2025-10-08 18:33:29 +00:00
.github
assets
cmd
compose
config
dfs
docker
docs
hostname
images
init
log
netconf
scripts
hosting
images
installer
build
build-host
build-images
build-target
ci
clean
copy-latest.sh
copy-release.sh
create-installed
default
dev
docs
entry
global.cfg
hash-initrd
help
inline_schema.go
integration-test
isolinux.cfg
isolinux_label.cfg
layout
package
package-initrd
package-installer
package-iso
package-rootfs
prepare
release
ros
run
run-common
run-install
schema.json
schema_template
shell
ssh
tar-images
template
test
validate
version
selinux
tests
util
vendor
.dockerignore
.drone.yml
.gitignore
Dockerfile.dapper
LICENSE
Makefile
README.md
main.go
os-config.tpl.yml
trash.conf
72 lines
1.5 KiB
Plaintext
72 lines
1.5 KiB
Plaintext
![]() |
#!/bin/bash
|
||
|
|
||
|
|
||
|
# see https://forums.rancher.com/t/proposal-to-install-on-qemu/1236
|
||
|
|
||
|
set -x -e
|
||
|
|
||
|
cd $(dirname $0)/..
|
||
|
source ./scripts/version
|
||
|
BASE=$(pwd)
|
||
|
|
||
|
STATE=/tmp
|
||
|
DISK=${STATE}/rancheros.img
|
||
|
CONFIG=${STATE}/cloud-config.yml
|
||
|
export LOOPBACK=$(losetup -f)
|
||
|
PARTITION=$(echo "${LOOPBACK}p1" | sed 's/dev/dev\/mapper/')
|
||
|
DISPLAY_OPTS="-curses"
|
||
|
# default
|
||
|
#DISPLAY_OPTS="-nographic -serial stdio -display none"
|
||
|
|
||
|
function clean_up {
|
||
|
sudo umount mount || true
|
||
|
sudo kpartx -d ${DISK} || true
|
||
|
sudo losetup -d ${LOOPBACK} || true
|
||
|
sudo rm ${DISK} || true
|
||
|
}
|
||
|
trap "clean_up; exit" SIGHUP SIGINT SIGTERM EXIT
|
||
|
|
||
|
|
||
|
echo "writing to ${CONFIG} in ${STATE}"
|
||
|
echo "#cloud-config" > ${CONFIG}
|
||
|
echo "ssh_authorized_keys:" >> ${CONFIG}
|
||
|
echo "- $(<${BASE}/assets/rancher.key.pub)" >> ${CONFIG}
|
||
|
|
||
|
qemu-img create ${DISK} 1G
|
||
|
sudo losetup ${LOOPBACK} ${DISK}
|
||
|
|
||
|
echo "n
|
||
|
p
|
||
|
1
|
||
|
|
||
|
|
||
|
a
|
||
|
w" | sudo fdisk ${LOOPBACK} || true
|
||
|
|
||
|
sudo kpartx -a ${DISK}
|
||
|
|
||
|
docker run --privileged -it --rm \
|
||
|
-v /dev/mapper:/dev/mapper \
|
||
|
-v ${STATE}:/cluster \
|
||
|
rancher/os:${VERSION} \
|
||
|
--isoinstallerloaded=1 \
|
||
|
--force \
|
||
|
--no-reboot \
|
||
|
--debug \
|
||
|
-c /cluster/cloud-config.yml \
|
||
|
-t generic \
|
||
|
-d ${LOOPBACK} \
|
||
|
-p ${PARTITION} \
|
||
|
--append "rancher.autologin=tty1"
|
||
|
#-f /cluster/images.tar.xz:var/lib/system-docker/preload/images.tar.xz
|
||
|
|
||
|
|
||
|
sync
|
||
|
|
||
|
qemu-system-x86_64 -enable-kvm \
|
||
|
${DISPLAY_OPTS} \
|
||
|
-m 1024 \
|
||
|
-net nic,model=virtio \
|
||
|
-net user,hostfwd=tcp::2222-:22 \
|
||
|
-drive if=virtio,file=${DISK},format=raw
|