diff options
Diffstat (limited to 'archiso')
19 files changed, 312 insertions, 115 deletions
diff --git a/archiso/Makefile b/archiso/Makefile deleted file mode 100644 index 28868bf..0000000 --- a/archiso/Makefile +++ /dev/null @@ -1,62 +0,0 @@ -all: - -install: install-program install-hooks install-examples install-doc - -install-program: - # install to sbin since script only usable by root - install -D -m 755 mkarchiso $(DESTDIR)/usr/sbin/mkarchiso - # testiso can be used by anyone - install -D -m 755 testiso $(DESTDIR)/usr/bin/testiso - -install-hooks: - # hooks/install are needed by mkinitcpio - install -D -m 644 hooks/archiso $(DESTDIR)/usr/lib/initcpio/hooks/archiso - install -D -m 644 install/archiso $(DESTDIR)/usr/lib/initcpio/install/archiso - install -D -m 755 archiso_shutdown $(DESTDIR)/usr/lib/initcpio/archiso_shutdown - install -D -m 644 hooks/archiso_shutdown $(DESTDIR)/usr/lib/initcpio/hooks/archiso_shutdown - install -D -m 644 install/archiso_shutdown $(DESTDIR)/usr/lib/initcpio/install/archiso_shutdown - install -D -m 644 archiso_pxe_nbd $(DESTDIR)/usr/lib/initcpio/archiso_pxe_nbd - install -D -m 644 hooks/archiso_pxe_common $(DESTDIR)/usr/lib/initcpio/hooks/archiso_pxe_common - install -D -m 644 install/archiso_pxe_common $(DESTDIR)/usr/lib/initcpio/install/archiso_pxe_common - install -D -m 644 hooks/archiso_pxe_nbd $(DESTDIR)/usr/lib/initcpio/hooks/archiso_pxe_nbd - install -D -m 644 install/archiso_pxe_nbd $(DESTDIR)/usr/lib/initcpio/install/archiso_pxe_nbd - install -D -m 644 hooks/archiso_pxe_http $(DESTDIR)/usr/lib/initcpio/hooks/archiso_pxe_http - install -D -m 644 install/archiso_pxe_http $(DESTDIR)/usr/lib/initcpio/install/archiso_pxe_http - install -D -m 644 hooks/archiso_pxe_nfs $(DESTDIR)/usr/lib/initcpio/hooks/archiso_pxe_nfs - install -D -m 644 install/archiso_pxe_nfs $(DESTDIR)/usr/lib/initcpio/install/archiso_pxe_nfs - install -D -m 644 hooks/archiso_loop_mnt $(DESTDIR)/usr/lib/initcpio/hooks/archiso_loop_mnt - install -D -m 644 install/archiso_loop_mnt $(DESTDIR)/usr/lib/initcpio/install/archiso_loop_mnt - install -D -m 644 install/archiso_kms $(DESTDIR)/usr/lib/initcpio/install/archiso_kms - -install-examples: - # install examples - install -d -m 755 $(DESTDIR)/usr/share/archiso/ - cp -r ../configs $(DESTDIR)/usr/share/archiso/ - -install-doc: - install -d -m 755 $(DESTDIR)/usr/share/archiso/ - install -D -m 644 ../README $(DESTDIR)/usr/share/doc/archiso/README - -uninstall: - rm -f $(DESTDIR)/usr/sbin/mkarchiso - rm -f $(DESTDIR)/usr/bin/testiso - rm -f $(DESTDIR)/usr/lib/initcpio/hooks/archiso - rm -f $(DESTDIR)/usr/lib/initcpio/install/archiso - rm -f $(DESTDIR)/usr/lib/initcpio/archiso_shutdown - rm -f $(DESTDIR)/usr/lib/initcpio/hooks/archiso_shutdown - rm -f $(DESTDIR)/usr/lib/initcpio/install/archiso_shutdown - rm -f $(DESTDIR)/usr/lib/initcpio/archiso_pxe_nbd - rm -f $(DESTDIR)/usr/lib/initcpio/hooks/archiso_pxe_common - rm -f $(DESTDIR)/usr/lib/initcpio/install/archiso_pxe_common - rm -f $(DESTDIR)/usr/lib/initcpio/hooks/archiso_pxe_nbd - rm -f $(DESTDIR)/usr/lib/initcpio/install/archiso_pxe_nbd - rm -f $(DESTDIR)/usr/lib/initcpio/hooks/archiso_pxe_http - rm -f $(DESTDIR)/usr/lib/initcpio/install/archiso_pxe_http - rm -f $(DESTDIR)/usr/lib/initcpio/hooks/archiso_pxe_nfs - rm -f $(DESTDIR)/usr/lib/initcpio/install/archiso_pxe_nfs - rm -f $(DESTDIR)/usr/lib/initcpio/hooks/archiso_loop_mnt - rm -f $(DESTDIR)/usr/lib/initcpio/install/archiso_loop_mnt - rm -f $(DESTDIR)/usr/lib/initcpio/install/archiso_kms - rm -rf $(DESTDIR)/usr/share/archiso/ - -.PHONY: install install-program install-hooks install-examples install-doc uninstall diff --git a/archiso/hooks/archiso b/archiso/initcpio/hooks/archiso index 9445498..9445498 100644 --- a/archiso/hooks/archiso +++ b/archiso/initcpio/hooks/archiso diff --git a/archiso/hooks/archiso_loop_mnt b/archiso/initcpio/hooks/archiso_loop_mnt index a02cfac..a02cfac 100644 --- a/archiso/hooks/archiso_loop_mnt +++ b/archiso/initcpio/hooks/archiso_loop_mnt diff --git a/archiso/initcpio/hooks/archiso_pxe_common b/archiso/initcpio/hooks/archiso_pxe_common new file mode 100644 index 0000000..d8ac709 --- /dev/null +++ b/archiso/initcpio/hooks/archiso_pxe_common @@ -0,0 +1,50 @@ +# vim: set ft=sh: + +run_hook () { + local i net_mac bootif_mac bootif_dev + # These variables will be parsed from /tmp/net-*.conf generated by ipconfig + local DEVICE + local IPV4ADDR IPV4BROADCAST IPV4NETMASK IPV4GATEWAY IPV4DNS0 IPV4DNS1 + local HOSTNAME DNSDOMAIN NISDOMAIN ROOTSERVER ROOTPATH + local filename + # /tmp/net-*.conf + + if [[ -n "${ip}" ]]; then + if [[ -n "${BOOTIF}" ]]; then + bootif_mac=${BOOTIF#01-} + bootif_mac=${bootif_mac//-/:} + for i in /sys/class/net/*/address; do + read net_mac < ${i} + if [[ "${bootif_mac}" == "${net_mac}" ]]; then + bootif_dev=${i#/sys/class/net/} + bootif_dev=${bootif_dev%/address} + break + fi + done + ip="${ip}::${bootif_dev}" + fi + + # setup network and save some values + ipconfig "ip=${ip}" + + . /tmp/net-*.conf + + pxeserver=${ROOTSERVER} + + # setup DNS resolver + if [[ "${IPV4DNS0}" != "0.0.0.0" ]]; then + echo "nameserver ${IPV4DNS0}" > /etc/resolv.conf + fi + if [[ "${IPV4DNS1}" != "0.0.0.0" ]]; then + echo "nameserver ${IPV4DNS1}" >> /etc/resolv.conf + fi + fi +} + +run_latehook () { + [[ -z "${copy_resolvconf}" ]] && copy_resolvconf="y" + + if [[ "${copy_resolvconf}" != "n" && -f /etc/resolv.conf ]]; then + cp /etc/resolv.conf /new_root/etc/resolv.conf + fi +} diff --git a/archiso/initcpio/hooks/archiso_pxe_http b/archiso/initcpio/hooks/archiso_pxe_http new file mode 100644 index 0000000..32e8ab0 --- /dev/null +++ b/archiso/initcpio/hooks/archiso_pxe_http @@ -0,0 +1,61 @@ +# vim: set ft=sh: + +run_hook() { + if [[ -n "${ip}" && -n "${archiso_http_srv}" ]]; then + + archiso_http_srv=$(eval echo ${archiso_http_srv}) + [[ -z "${archiso_http_spc}" ]] && archiso_http_spc="75%" + + mount_handler="archiso_pxe_http_mount_handler" + fi +} + +# Fetch a file with CURL +# +# $1 URL +# $2 Destination directory inside httpspace/${archisobasedir} +_curl_get() { + local _url="${1}" + local _dst="${2}" + + msg ":: Downloading '${_url}'" + if ! curl -L -f -o "/run/archiso/httpspace/${archisobasedir}${_dst}/${_url##*/}" --create-dirs "${_url}"; then + echo "ERROR: Downloading '${_url}'" + echo " Falling back to interactive prompt" + echo " You can try to fix the problem manually, log out when you are finished" + launch_interactive_shell + fi +} + +archiso_pxe_http_mount_handler () { + newroot="${1}" + + msg ":: Mounting /run/archiso/httpspace (tmpfs) filesystem, size='${archiso_http_spc}'" + mkdir -p "/run/archiso/httpspace" + mount -t tmpfs -o size="${archiso_http_spc}",mode=0755 httpspace "/run/archiso/httpspace" + + local _aitab_url="${archiso_http_srv}${aitab#/run/archiso/bootmnt/}" + local _aitab_file="/run/archiso/httpspace/${aitab#/run/archiso/bootmnt/}" + + _curl_get "${_aitab_url}" "/" + + local aitab_img aitab_mnt aitab_arch aitab_sfs_comp aitab_fs_type aitab_fs_size + while read aitab_img aitab_mnt aitab_arch aitab_sfs_comp aitab_fs_type aitab_fs_size; do + [[ "${aitab_img#\#}" != "${aitab_img}" ]] && continue + [[ "${aitab_arch}" != "any" && "${aitab_arch}" != "${arch}" ]] && continue + if [[ "${aitab_fs_type}" != "none" ]]; then + _curl_get "${archiso_http_srv}${archisobasedir}/${aitab_arch}/${aitab_img}.fs.sfs" "/${aitab_arch}" + else + _curl_get "${archiso_http_srv}${archisobasedir}/${aitab_arch}/${aitab_img}.sfs" "/${aitab_arch}" + fi + done < "${_aitab_file}" + + if [[ "${checksum}" == "y" ]]; then + _curl_get "${archiso_http_srv}${archisobasedir}/checksum.${arch}.md5" "/" + fi + + mkdir -p "/run/archiso/bootmnt" + mount -o bind /run/archiso/httpspace /run/archiso/bootmnt + + archiso_mount_handler ${newroot} +} diff --git a/archiso/hooks/archiso_pxe_nbd b/archiso/initcpio/hooks/archiso_pxe_nbd index 6147d06..a9f84d5 100644 --- a/archiso/hooks/archiso_pxe_nbd +++ b/archiso/initcpio/hooks/archiso_pxe_nbd @@ -15,6 +15,7 @@ archiso_pxe_nbd_mount_handler () { # Module autoloading like with loop devices does not work, doing manually... modprobe nbd 2> /dev/null + msg ":: Waiting for boot device..." while ! poll_device /dev/nbd0 30; do echo "ERROR: boot device didn't show up after 30 seconds..." @@ -24,22 +25,13 @@ archiso_pxe_nbd_mount_handler () { done msg ":: Setup NBD from ${archiso_nbd_srv} at /dev/nbd0" - if [[ "${copytoram}" = "y" ]]; then - nbd-client ${archiso_nbd_srv} -N ${archiso_nbd_name} /dev/nbd0 - else - nbd-client ${archiso_nbd_srv} -N ${archiso_nbd_name} /dev/nbd0 -persist - fi + nbd-client ${archiso_nbd_srv} -N ${archiso_nbd_name} /dev/nbd0 + copytoram="y" archisodevice=/dev/nbd0 archiso_mount_handler ${newroot} - if [[ "${copytoram}" = "y" ]]; then - msg ":: Disconnect NBD from ${archiso_nbd_srv} at /dev/nbd0" - nbd-client -d /dev/nbd0 - else - mkdir -p /run/archiso - pidof nbd-client > /run/archiso/nbd_client.pid - cp /archiso_pxe_nbd ${newroot}/etc/rc.d/functions.d/ - fi + msg ":: Disconnect NBD from ${archiso_nbd_srv} at /dev/nbd0" + nbd-client -d /dev/nbd0 } diff --git a/archiso/initcpio/hooks/archiso_pxe_nfs b/archiso/initcpio/hooks/archiso_pxe_nfs new file mode 100644 index 0000000..ef41c01 --- /dev/null +++ b/archiso/initcpio/hooks/archiso_pxe_nfs @@ -0,0 +1,27 @@ +# vim: set ft=sh: + +run_hook() { + if [[ -n "${ip}" && -n "${archiso_nfs_srv}" ]]; then + + archiso_nfs_srv=$(eval echo ${archiso_nfs_srv}) + [[ -n "${archiso_nfs_opt}" ]] && archiso_nfs_opt="-o ${archiso_nfs_opt}" + + mount_handler="archiso_nfs_mount_handler" + fi +} + +archiso_nfs_mount_handler() { + newroot="${1}" + mkdir -p "/run/archiso/bootmnt" + msg ":: Mounting '${archiso_nfs_srv}'" + # Do not put "${archiso_nfs_opt}" nfsmount fails! + if ! nfsmount ${archiso_nfs_opt} "${archiso_nfs_srv}" "/run/archiso/bootmnt"; then + echo "ERROR: Mounting '${archiso_nfs_srv}'" + echo " Falling back to interactive prompt" + echo " You can try to fix the problem manually, log out when you are finished" + launch_interactive_shell + fi + + copytoram="y" + archiso_mount_handler ${newroot} +} diff --git a/archiso/initcpio/hooks/archiso_shutdown b/archiso/initcpio/hooks/archiso_shutdown new file mode 100644 index 0000000..e50dedb --- /dev/null +++ b/archiso/initcpio/hooks/archiso_shutdown @@ -0,0 +1,6 @@ +run_cleanuphook() { + rm -rf /usr/lib/modules + cp -ax / /run/initramfs +} + +# vim: set ft=sh ts=4 sw=4 et: diff --git a/archiso/install/archiso b/archiso/initcpio/install/archiso index c36c001..8893667 100644 --- a/archiso/install/archiso +++ b/archiso/initcpio/install/archiso @@ -1,8 +1,11 @@ #!/bin/bash build() { - MODULES="cdrom loop dm-snapshot" - SCRIPT="archiso" + add_module "cdrom" + add_module "loop" + add_module "dm-snapshot" + + add_runscript add_binary /usr/lib/udev/cdrom_id add_binary blockdev diff --git a/archiso/initcpio/install/archiso_kms b/archiso/initcpio/install/archiso_kms new file mode 100644 index 0000000..3ff31f3 --- /dev/null +++ b/archiso/initcpio/install/archiso_kms @@ -0,0 +1,26 @@ +#!/bin/bash + +build() { + add_module "radeon" + add_module "nouveau" + add_module "i915" + add_module "via-agp" + add_module "sis-agp" + add_module "intel-agp" + + if [[ $(uname -m) == i686 ]]; then + add_module "amd64-agp" + add_module "ati-agp" + add_module "sworks-agp" + add_module "ali-agp" + add_module "amd-k7-agp" + add_module "nvidia-agp" + add_module "efficeon-agp" + fi +} + +help() { + cat << HELPEOF +Adds all common KMS drivers to the initramfs image. +HELPEOF +} diff --git a/archiso/install/archiso_loop_mnt b/archiso/initcpio/install/archiso_loop_mnt index 4141043..59f1d94 100644 --- a/archiso/install/archiso_loop_mnt +++ b/archiso/initcpio/install/archiso_loop_mnt @@ -1,7 +1,7 @@ #!/bin/bash build() { - SCRIPT="archiso_loop_mnt" + add_runscript } help() { diff --git a/archiso/initcpio/install/archiso_pxe_common b/archiso/initcpio/install/archiso_pxe_common new file mode 100644 index 0000000..eec9a7e --- /dev/null +++ b/archiso/initcpio/install/archiso_pxe_common @@ -0,0 +1,26 @@ +#!/bin/bash + +build() { + add_checked_modules -f "(irda|phy|wimax|wireless|ppp_|plip|pppoe)" "/drivers/net/" + + add_runscript + + add_binary /usr/lib/initcpio/ipconfig /bin/ipconfig + + # Add hosts support files+dns + add_symlink /usr/lib/libnss_files.so.2 $(readlink /usr/lib/libnss_files.so.2) + add_binary $(readlink -f /usr/lib/libnss_files.so.2) + add_symlink /usr/lib/libnss_dns.so.2 $(readlink /usr/lib/libnss_dns.so.2) + add_binary $(readlink -f /usr/lib/libnss_dns.so.2) + + add_dir /etc + echo "hosts: files dns" > $BUILDROOT/etc/nsswitch.conf +} + +help() { +cat<<HELPEOF + This hook loads the necessary modules for boot via PXE. +HELPEOF +} + +# vim: set ft=sh ts=4 sw=4 et: diff --git a/archiso/initcpio/install/archiso_pxe_http b/archiso/initcpio/install/archiso_pxe_http new file mode 100644 index 0000000..4e02f98 --- /dev/null +++ b/archiso/initcpio/install/archiso_pxe_http @@ -0,0 +1,15 @@ +#!/bin/bash + +build() { + add_runscript + + add_binary curl +} + +help() { +cat<<HELPEOF + This hook loads the necessary modules for boot via PXE and HTTP. +HELPEOF +} + +# vim: set ft=sh ts=4 sw=4 et: diff --git a/archiso/install/archiso_pxe_nbd b/archiso/initcpio/install/archiso_pxe_nbd index 1ee3910..47d98ce 100644 --- a/archiso/install/archiso_pxe_nbd +++ b/archiso/initcpio/install/archiso_pxe_nbd @@ -1,12 +1,11 @@ #!/bin/bash build() { - MODULES="nbd" - SCRIPT="archiso_pxe_nbd" + add_module "nbd" - add_binary nbd-client + add_runscript - add_file /usr/lib/initcpio/archiso_pxe_nbd /archiso_pxe_nbd + add_binary nbd-client } help() { diff --git a/archiso/initcpio/install/archiso_pxe_nfs b/archiso/initcpio/install/archiso_pxe_nfs new file mode 100644 index 0000000..f8226e5 --- /dev/null +++ b/archiso/initcpio/install/archiso_pxe_nfs @@ -0,0 +1,17 @@ +#!/bin/bash + +build() { + add_module "nfs" + + add_runscript + + add_binary /usr/lib/initcpio/nfsmount /bin/nfsmount +} + +help() { + cat <<HELPEOF + This hook loads the necessary modules for boot via PXE and NFS. +HELPEOF +} + +# vim: set ft=sh ts=4 sw=4 et: diff --git a/archiso/initcpio/install/archiso_shutdown b/archiso/initcpio/install/archiso_shutdown new file mode 100644 index 0000000..5ae976a --- /dev/null +++ b/archiso/initcpio/install/archiso_shutdown @@ -0,0 +1,20 @@ +#!/bin/bash + +build() { + add_binary cp + + add_runscript + + add_file /usr/lib/initcpio/archiso_shutdown /shutdown +} + +help() { + cat <<HELPEOF +This hook will create a shutdown initramfs in /run/initramfs +that we can pivot to on shutdown in order to unmount / and +and others mount points, dm-snapshot devices and loopback devices. +Mostly usefull for dm-snapshot persistent. +HELPEOF +} + +# vim: set ft=sh ts=4 sw=4 et: diff --git a/archiso/initcpio/script/archiso_shutdown b/archiso/initcpio/script/archiso_shutdown new file mode 100644 index 0000000..41b3945 --- /dev/null +++ b/archiso/initcpio/script/archiso_shutdown @@ -0,0 +1,37 @@ +#!/bin/ash + +# /oldroot depends on things inside /oldroot/run/archiso... +mkdir /oldrun +mount -n --move /oldroot/run /oldrun + +# Unmount all mounts now. +umount $(mount | awk '$3 ~/^\/oldroot/ {print $3}' | sort -r) + +# Remove all dm-snapshot devices. +dmsetup remove_all + +# Remove all loopback devices. +for _lup in $(grep ^/dev/loop /oldrun/archiso/used_block_devices | tac); do + if ! losetup -d ${_lup} 2> /dev/null; then + umount -d ${_lup} + fi +done + +# Unmount the space used to store *.cow. +umount /oldrun/archiso/cowspace + +# Unmount boot device if needed (no copytoram=y used) +if [[ ! -d /oldrun/archiso/copytoram ]]; then + if [[ -d /oldrun/archiso/img_dev ]]; then + umount /oldrun/archiso/img_dev + else + umount /oldrun/archiso/bootmnt + fi +fi + +# reboot / poweroff / halt, depending on the argument passed by init +# if something invalid is passed, we halt +case "$1" in + reboot|poweroff|halt) "$1" -f ;; + *) halt -f;; +esac diff --git a/archiso/mkarchiso b/archiso/mkarchiso index 6f02131..31abd2c 100755 --- a/archiso/mkarchiso +++ b/archiso/mkarchiso @@ -233,7 +233,7 @@ _pacman () # Cleanup root-image _cleanup () { - _msg_info "Cleaning up what we can on root-image" + _msg_info "Cleaning up what we can on root-image..." # remove the initcpio images that were generated for the host system if [[ -d "${work_dir}/root-image/boot" ]]; then @@ -269,6 +269,7 @@ _cleanup () { if [[ ! -L "${work_dir}/root-image/etc/mtab" ]]; then ln -sf "/proc/self/mounts" "${work_dir}/root-image/etc/mtab" fi + _msg_info "Done!" } # Makes a SquashFS filesystem image of file/directory passes as argument with desired compression. @@ -297,7 +298,7 @@ _mksfs () { # Makes a filesystem from a source directory. # $1: Source directory -# $2: Target filesystem type (ext4 | ext3 | ext2 | xfs) +# $2: Target filesystem type (ext4 | ext3 | ext2 | xfs | btrfs) # $3: Size of target filesystem. Can be an absolute value in MiB, or relative value of desired free space (1% - 99%) _mkfs () { local _src="${1}" @@ -327,7 +328,7 @@ _mkfs () { fi fi - _msg_info "Creating ${_fs_type} image of ${_fs_size} MiB" + _msg_info "Creating ${_fs_type} image of ${_fs_size} MiB..." rm -f "${_fs_img}" dd of="${_fs_img}" count=0 bs=1M seek=${_fs_size} &> /dev/null local _qflag="" @@ -350,13 +351,18 @@ _mkfs () { xfs) mkfs.xfs ${_qflag} "${_fs_img}" ;; + btrfs) + mkfs.btrfs -M "${_fs_img}" + ;; *) _msg_error "Invalid filesystem: ${_fs_type}" 1 ;; esac + _msg_info "Done!" _mount_fs "${_fs_img}" "${work_dir}/mnt/${_src}" - _msg_info "Copying '${_fs_src}/' to '${work_dir}/mnt/${_src}/'" - rsync -aH "${_fs_src}/" "${work_dir}/mnt/${_src}/" + _msg_info "Copying '${_fs_src}/' to '${work_dir}/mnt/${_src}/'..." + cp -aT "${_fs_src}/" "${work_dir}/mnt/${_src}/" + _msg_info "Done!" _umount_fs "${work_dir}/mnt/${_src}" } @@ -367,7 +373,7 @@ command_checksum () { for _chk_arch in i686 x86_64; do if _is_directory_changed "${work_dir}/iso/${install_dir}" "${work_dir}/iso/${install_dir}/checksum.${_chk_arch}.md5"; then - _msg_info "Creating checksum file for self-test (${_chk_arch})" + _msg_info "Creating checksum file for self-test (${_chk_arch})..." cd "${work_dir}/iso/${install_dir}" if [[ -d "${_chk_arch}" ]]; then md5sum aitab > checksum.${_chk_arch}.md5 @@ -386,7 +392,7 @@ command_pkglist () { _show_config pkglist if _is_directory_changed "${work_dir}/root-image/var/lib/pacman/local" "${work_dir}/iso/${install_dir}/pkglist.${arch}.txt"; then - _msg_info "Creating a list of installed packages on live-enviroment" + _msg_info "Creating a list of installed packages on live-enviroment..." pacman -Sl -r "${work_dir}/root-image" --config "${pacman_conf}" | \ awk '/\[installed\]$/ {print $1 "/" $2 "-" $3}' > \ "${work_dir}/iso/${install_dir}/pkglist.${arch}.txt" diff --git a/archiso/testiso b/archiso/testiso deleted file mode 100755 index 71e85e1..0000000 --- a/archiso/testiso +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -if [[ $# -eq 0 ]]; then - echo "usage: testiso <isofile> [id|ic|sd|sc|vd|vc]" - echo - echo "id boot .iso as IDE disk" - echo "ic boot .iso as IDE cd-rom" - echo "sd boot .iso as SCSI disk" - echo "sc boot .iso as SCSI cd-rom" - echo "vd boot .iso as virtio disk" -# echo "vc boot .iso as virtio cd-rom" - exit 1 -fi - -case "${2}" in - id) IF="ide"; MEDIA="disk";; - ic) IF="ide"; MEDIA="cdrom";; - sd) IF="scsi"; MEDIA="disk";; - sc) IF="scsi"; MEDIA="cdrom";; - vd) IF="virtio"; MEDIA="disk";; -# vc) IF="virtio"; MEDIA="cdrom";; - *) IF="scsi"; MEDIA="cdrom";; -esac - -echo qemu-system-x86_64 -m 256 -drive file=${1},if=${IF},media=${MEDIA},boot=on -qemu-system-x86_64 -m 256 -drive file=${1},if=${IF},media=${MEDIA},boot=on |