diff options
Diffstat (limited to 'libre/grub/install-grub')
-rw-r--r-- | libre/grub/install-grub | 204 |
1 files changed, 0 insertions, 204 deletions
diff --git a/libre/grub/install-grub b/libre/grub/install-grub deleted file mode 100644 index affc9c38a..000000000 --- a/libre/grub/install-grub +++ /dev/null @@ -1,204 +0,0 @@ -#!/bin/bash - -# -# This is a little helper script that tries to convert linux-style device -# names to grub-style. It's not very smart, so it -# probably won't work for more complicated setups. -# -# If it doesn't work for you, try installing grub manually: -# -# # mkdir -p /boot/grub -# # cp /usr/lib/grub/i386-pc/* /boot/grub/ -# -# Then start up the 'grub' shell and run something like the following: -# -# grub> root (hd0,0) -# grub> setup (hd0) -# -# The "root" line should point to the partition your kernel is located on, -# /boot if you have a separate boot partition, otherwise your root (/). -# -# The "setup" line tells grub which disc/partition to install the -# bootloader to. In the example above, it will install to the MBR of the -# primary master hard drive. -# - -usage() { - echo "usage: install-grub <install_device> [boot_device]" - echo - echo "where <install_device> is the device where Grub will be installed" - echo "and [boot_device] is the partition that contains the /boot" - echo "directory (auto-detected if omitted)" - echo - echo "examples: install-grub /dev/hda" - echo " install-grub /dev/hda /dev/hda1" - echo - exit 0 -} - -## new install-grub, code was taken from setup script -ROOTDEV=${1} -PART_ROOT=${2} - -if [ "${ROOTDEV}" = "" ]; then - usage -fi -if [ "${PART_ROOT}" = "" ]; then - PART_ROOT=$(mount | grep "on /boot type" | cut -d' ' -f 1) -fi -if [ "$PART_ROOT" = "" ]; then - PART_ROOT=$(mount | grep "on / type" | cut -d' ' -f 1) -fi -if [ "${PART_ROOT}" = "" ]; then - echo "error: could not determine BOOT_DEVICE, please specify manually" >&2 - exit 1 -fi - - -get_grub_map() { - [ -e /tmp/dev.map ] && rm /tmp/dev.map - /sbin/grub --no-floppy --device-map /tmp/dev.map >/tmp/grub.log 2>&1 <<EOF -quit -EOF -} - -mapdev() { - partition_flag=0 - device_found=0 - devs=$(cat /tmp/dev.map | grep -v fd | sed 's/ *\t/ /' | sed ':a;$!N;$!ba;s/\n/ /g') - linuxdevice=$(echo $1 | cut -b1-8) - if [ "$(echo ${1} | egrep '[0-9]$')" ]; then - # /dev/hdXY - pnum=$(echo ${1} | cut -b9-) - pnum=$((${pnum}-1)) - partition_flag=1 - fi - for dev in ${devs}; do - if [ "(" = $(echo ${dev} | cut -b1) ]; then - grubdevice="${dev}" - else - if [ "${dev}" = "${linuxdevice}" ]; then - device_found=1 - break - fi - fi - done - if [ "${device_found}" = "1" ]; then - if [ "${partition_flag}" = "0" ]; then - echo "${grubdevice}" - else - grubdevice_stringlen=${#grubdevice} - let grubdevice_stringlen-- - grubdevice=$(echo $grubdevice | cut -b1-$grubdevice_stringlen) - echo "${grubdevice},${pnum})" - fi - else - echo " DEVICE NOT FOUND" - fi -} - -dogrub() { - get_grub_map - if [ ! -f /boot/grub/menu.lst ]; then - echo "Error: Couldn't find /boot/grub/menu.lst. Is GRUB installed?" - exit 1 - fi - # try to auto-configure GRUB... - if [ "${PART_ROOT}" != "" -a "$S_GRUB" != "1" ]; then - grubdev=$(mapdev ${PART_ROOT}) - # look for a separately-mounted /boot partition - bootdev=$(mount | grep /boot | cut -d' ' -f 1) - if [ "${grubdev}" != "" -o "${bootdev}" != "" ]; then - cp /boot/grub/menu.lst /tmp/.menu.lst - # remove the default entries by truncating the file at our little tag (#-*) - head -n $(cat /tmp/.menu.lst | grep -n '#-\*' | cut -d: -f 1) /tmp/.menu.lst >/boot/grub/menu.lst - rm -f /tmp/.menu.lst - - for kernel in /boot/vmlinuz-linux* /boot/vmlinuz26-*; do - if [ ${kernel} == "/boot/vmlinuz-linux*" ] || [ ${kernel} == "/boot/vmlinuz26-*" ] ; then - echo > /dev/null - else - VMLINUZ=$( echo ${kernel} | cut -c 7- ) - - if [ "$( echo ${VMLINUZ} | cut -c -13 )" = "vmlinuz-linux" ]; then # new naming scheme for linux > 3.0 - extension=$( echo ${VMLINUZ} | cut -c 14- ) - INITRAMFS_BASENAME=initramfs-linux${extension} - else # old naming scheme for lts kernel - extension=$( echo ${VMLINUZ} | cut -c 10- ) - INITRAMFS_BASENAME=kernel26${extension} - fi - - echo "" >>/boot/grub/menu.lst - echo "# (0) Parabola GNU/Linux-libre" >>/boot/grub/menu.lst - echo "title Parabola GNU/Linux-libre - ${VMLINUZ}" >>/boot/grub/menu.lst - subdir= - if [ "${bootdev}" != "" ]; then - grubdev=$(mapdev ${bootdev}) - else - subdir="/boot" - fi - echo "root ${grubdev}" >>/boot/grub/menu.lst - echo "kernel ${subdir}/${VMLINUZ} root=${PART_ROOT} ro" >>/boot/grub/menu.lst - echo "initrd ${subdir}/${INITRAMFS_BASENAME}.img" >>/boot/grub/menu.lst - echo "" >>/boot/grub/menu.lst - - # adding fallback/full image - echo "# (1) Parabola GNU/Linux-libre" >>/boot/grub/menu.lst - echo "title Parabola GNU/Linux-libre Fallback - ${VMLINUZ}" >>/boot/grub/menu.lst - echo "root ${grubdev}" >>/boot/grub/menu.lst - echo "kernel ${subdir}/${VMLINUZ} root=${PART_ROOT} ro" >>/boot/grub/menu.lst - echo "initrd ${subdir}/${INITRAMFS_BASENAME}-fallback.img" >>/boot/grub/menu.lst - echo "" >>/boot/grub/menu.lst - fi - done - fi - fi - - echo "Installing the GRUB bootloader..." - cp -a /usr/lib/grub/i386-pc/* /boot/grub/ - sync - - # freeze xfs filesystems to enable grub installation on xfs filesystems - if [ -x /usr/sbin/xfs_freeze ]; then - [ "$(stat -fLc %T /boot)" == "xfs" ] && /usr/sbin/xfs_freeze -f /boot > /dev/null 2>&1 - [ "$(stat -fLc %T /)" == "xfs" ] && /usr/sbin/xfs_freeze -f / > /dev/null 2>&1 - fi - - # look for a separately-mounted /boot partition - bootpart=$(mount | grep /boot | cut -d' ' -f 1) - if [ "${bootpart}" = "" ]; then - bootpart=${PART_ROOT} - fi - bootpart=$(mapdev ${bootpart}) - bootdev=$(mapdev ${ROOTDEV}) - if [ "${bootpart}" = "" ]; then - echo "Error: Missing/Invalid root device: ${bootpart}" - exit 1 - fi - - echo ${bootpart} - echo ${bootdev} - /sbin/grub --no-floppy --batch >/tmp/grub.log 2>&1 <<EOF -root ${bootpart} -setup ${bootdev} -quit -EOF - cat /tmp/grub.log - - # unfreeze xfs filesystems - if [ -x /usr/sbin/xfs_freeze ]; then - [ "$(stat -fLc %T /boot)" == "xfs" ] && /usr/sbin/xfs_freeze -u /boot > /dev/null 2>&1 - [ "$(stat -fLc %T /)" == "xfs" ] && /usr/sbin/xfs_freeze -u / > /dev/null 2>&1 - fi - if grep "Error [0-9]*: " /tmp/grub.log >/dev/null; then - echo "Error installing GRUB. (see /tmp/grub.log for output)" - exit 1 - fi - echo "GRUB was successfully installed." - - rm -f /tmp/grub.log - - exit 0 -} - -dogrub |