Grub 2
Hi,
to day I had some problems with the new grub 2. At boot I received an error 15. To solve I boot the system with a live, in my case a sidux. Open a root konsole, then :: Code :: apt-get update
apt-get remove grub-gfxboot apt-get install grub2 mount /dev/sda1 /media/disk1 grub-install --root-directory=/media/disk1 /dev/sda sda1 is the partition where I have /, and sda is the HD where I'll install grub2 Seem the configuration file is changed /boot/grub/menu.lst -> /boot/grub/grub.cfg (different syntax!) Back to top |
|||||
hi
I know a little about grub2 having written a intro wiki here sidux.com/index.php?module=Wikula&tag=Grub2Intro AFAIK it appears that you once had grub legacy ....which always uses the /boot/grub/menu.lst and somehow you installed grub2...maybe not realising it was different? but the wiki advises that when you install it...it gives you an option of chainloading from legacy to grub2. and the grub2 menuname is /boot/grub/grub.cfg 2) only when you are happy with grub2 would you run :: Code :: upgrade-from-grub-legacyto put grub2 into mbr to replace grub legacy Back to top |
|||||
Some links as well, Ubuntu has good examples, which are sorely lacking from my current searches on most how tos: ubuntuforums.org/showthread.php?t=1195275
And here is a grub2 documentation site: members.iinet.net/~herman546/p20.html And of course, Arch grub2 wiki: wiki.archlinux.org/index.php/GRUB2 and the grub2 wiki itself: grub.enbug.org/ which is of course largely useless but there it is anyway. Back to top |
|||||
hi
well if the OP does not mind me going off topic slightly I have added a new wiki page on how to use grub2 to boot hard drive iso images sidux.com/index.php?module=Wikula&tag=Grub2isofrom regards Back to top |
|||||
perfectly on topic, thanks, grub 2 is suffering from very incomplete and broken up documentation, not easy to find answers.
Especially missing is an item by item how to comparing familiar grub 1 methods with their rough grub 2 equivalents. Back to top |
|||||
hi
I shall take that as a hint for new wiki page if you like....smiles yes I know you were not hinting but if I can repay you for your script? roughly its this pretend /boot is a subfolder on / Pretend its /dev/sda1 to install grub legacy into mbr using a live cd :: Code :: su
grub root (hd0,0) setup (hd0) grub legacy counts menutitles, hard drives and partitions from zero grub2 only diff is counts partitions from 1 hmm well I only know a few grub2 isos RIPLinux has both types....edit oops its got grub2 but its grub-install is a grub legacy..just tested...oops (hmm will investigate this later, I have spent too much time on the isofrom wiki) anyhow grub2 to mbr would be :: Code :: su
grub-install /dev/sda But this assumes you have already installed grub2 via chroot or by normal packagemanagement. 2) One of my big issues with troubleshooting is the move to UUID. Now I and most other experienced ppl know some commands or text files to read to see their UUID but its bloody torture to try out UUID at grub2 command mode. I have reverted to using eg /dev/sda1 as most ppl instantly recognise it. But a person posting their grub.cfg naming an UUID can not expect instant support. Ok there are e2labels for ext2 -4 but not sure about XFS and reiserfs 3) quick and dirty names comparison grub legacy ....VERSUS.......grub2 root (hd0,0) ...sets the /boot partition......versus set root=(hd0,1) grub legacy line beginning with kernel = define kernel path...NOT the next bits for root=/dev/sda1 and cheatcodes eg kernel /boot/vmlinuz if you had a separate /boot parttion it becomes kernel /vmlinuz versus ...grub2 for same items are linux /boot/vmlinuz linux /vmlinuz initrd ....no change to my eyesight grub-legacy...kernel line..for this bit root=UUID=string or root=LABEL=string or root=/dev/sda1 defines the / partition grub2 really no change but will often use a line preceding to search and set the UUID. /etc/default/grub can unset UUID for those who hate it well thats it for now Back to top |
|||||
hi
ok looked at a couple of distros that claim can boot up in grub2 mode and no luck .... /usb/sbin/grub-install if your file shows 0.97 its grub legacy or patched what you need to see is 1.9* as per paste :: Code :: #! /bin/sh
# Install GRUB on your drive. # Copyright (C) 1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009 Free Software Foundation, Inc. # # GRUB is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # GRUB is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GRUB. If not, see <http://www.gnu.org/licenses/>. # Initialize some variables. transform="s,x,x," prefix=/usr exec_prefix=${prefix} sbindir=${exec_prefix}/sbin bindir=${exec_prefix}/bin libdir=${exec_prefix}/lib PACKAGE_NAME=GRUB PACKAGE_TARNAME=grub PACKAGE_VERSION=1.97~beta4 target_cpu=i386 platform=pc pkglibdir=${libdir}/`echo ${PACKAGE_TARNAME}/${target_cpu}-${platform} | sed ${transform}` grub_setup=${sbindir}/`echo grub-setup | sed ${transform}` if [ "${target_cpu}-${platform}" = "i386-pc" ] ; then grub_mkimage=${bindir}/`echo grub-mkimage | sed ${transform}` else grub_mkimage=${bindir}/`echo grub-mkelfimage | sed ${transform}` fi grub_mkdevicemap=${sbindir}/`echo grub-mkdevicemap | sed ${transform}` grub_probe=${sbindir}/`echo grub-probe | sed ${transform}` rootdir= grub_prefix=`echo /boot/grub | sed ${transform}` modules= install_device= no_floppy= force_lba= recheck=no debug=no if [ "${target_cpu}-${platform}" = "i386-pc" ] ; then disk_module=biosdisk else disk_module=ata fi # Usage: usage # Print the usage. usage () { cat <<EOF Usage: grub-install [OPTION] install_device Install GRUB on your drive. -h, --help print this message and exit -v, --version print the version information and exit --modules=MODULES pre-load specified modules MODULES --root-directory=DIR install GRUB images under the directory DIR instead of the root directory --grub-setup=FILE use FILE as grub-setup --grub-mkimage=FILE use FILE as grub-mkimage --grub-mkdevicemap=FILE use FILE as grub-mkdevicemap --grub-probe=FILE use FILE as grub-probe --no-floppy do not probe any floppy drive --recheck probe a device map even if it already exists --force install even if problems are detected EOF if [ "${target_cpu}-${platform}" = "i386-pc" ] ; then cat <<EOF --disk-module=MODULE disk module to use EOF fi cat <<EOF INSTALL_DEVICE can be a GRUB device name or a system device filename. grub-install copies GRUB images into the DIR/boot directory specified by --root-directory, and uses grub-setup to install grub into the boot sector. Report bugs to <bug-grub@gnu.org>. EOF } # Check the arguments. for option in "$@"; do case "$option" in -h | --help) usage exit 0 ;; -v | --version) echo "grub-install (GNU GRUB ${PACKAGE_VERSION})" exit 0 ;; --modules=*) modules=`echo "$option" | sed 's/--modules=//'` ;; --root-directory=*) rootdir=`echo "$option" | sed 's/--root-directory=//'` ;; --grub-setup=*) grub_setup=`echo "$option" | sed 's/--grub-setup=//'` ;; --grub-mkimage=*) grub_mkimage=`echo "$option" | sed 's/--grub-mkimage=//'` ;; --grub-mkdevicemap=*) grub_mkdevicemap=`echo "$option" | sed 's/--grub-mkdevicemap=//'` ;; --grub-probe=*) grub_probe=`echo "$option" | sed 's/--grub-probe=//'` ;; --no-floppy) no_floppy="--no-floppy" ;; --recheck) recheck=yes ;; --disk-module=*) if [ "${target_cpu}-${platform}" = "i386-pc" ] ; then disk_module=`echo "$option" | sed 's/--disk-module=//'` fi ;; # This is an undocumented feature... --debug) debug=yes ;; -f | --force) setup_force="--force" ;; -*) echo "Unrecognized option \`$option'" 1>&2 usage exit 1 ;; *) if test "x$install_device" != x; then echo "More than one install_devices?" 1>&2 usage exit 1 fi install_device="${option}" ;; esac done # added by debian patch setup_force="--force" # for make_system_path_relative_to_its_root() . ${libdir}/grub/grub-mkconfig_lib if test "x$install_device" = x; then echo "install_device not specified." 1>&2 usage exit 1 fi # If the debugging feature is enabled, print commands. setup_verbose= if test $debug = yes; then set -x setup_verbose="--verbose" fi # Initialize these directories here, since ROOTDIR was initialized. case "$host_os" in netbsd* | openbsd*) # Because /boot is used for the boot block in NetBSD and OpenBSD, use /grub # instead of /boot/grub. grub_prefix=`echo /grub | sed ${transform}` bootdir=${rootdir} ;; *) # Use /boot/grub by default. bootdir=${rootdir}/boot ;; esac grubdir=${bootdir}/`echo grub | sed ${transform}` device_map=${grubdir}/device.map grub_probe="${grub_probe} --device-map=${device_map}" # Check if GRUB is installed. if [ "${target_cpu}-${platform}" = "i386-pc" ] ; then set $grub_setup dummy if test -f "$1"; then : else echo "$1: Not found." 1>&2 exit 1 fi fi set $grub_mkimage dummy if test -f "$1"; then : else echo "$1: Not found." 1>&2 exit 1 fi set $grub_mkdevicemap dummy if test -f "$1"; then : else echo "$1: Not found." 1>&2 exit 1 fi # Create the GRUB directory if it is not present. test -d "$bootdir" || mkdir "$bootdir" || exit 1 test -d "$grubdir" || mkdir "$grubdir" || exit 1 # If --recheck is specified, remove the device map, if present. if test $recheck = yes; then rm -f $device_map fi # Create the device map file if it is not present. if test -f "$device_map"; then : else # Create a safe temporary file. test -n "$mklog" && log_file=`$mklog` $grub_mkdevicemap --device-map=$device_map $no_floppy || exit 1 fi # Make sure that there is no duplicated entry. tmp=`sed -n '/^([fh]d[0-9]*)/s/\(^(.*)\).*/\1/p' $device_map \ | sort | uniq -d | sed -n 1p` if test -n "$tmp"; then echo "The drive $tmp is defined multiple times in the device map $device_map" 1>&2 exit 1 fi # Copy the GRUB images to the GRUB directory. for file in ${grubdir}/*.mod ${grubdir}/*.lst ${grubdir}/*.img ${grubdir}/efiemu??.o; do if test -f $file && [ "`basename $file`" != menu.lst ]; then rm -f $file || exit 1 fi done for file in ${pkglibdir}/*.mod ${pkglibdir}/*.lst; do cp -f $file ${grubdir} || exit 1 done if [ "${target_cpu}-${platform}" = "i386-pc" ] ; then for file in ${pkglibdir}/*.img ${pkglibdir}/efiemu??.o; do if test -f $file; then cp -f $file ${grubdir} || exit 1 fi done fi # Write device to a variable so we don't have to traverse /dev every time. grub_device=`$grub_probe --target=device ${grubdir}` # Create the core image. First, auto-detect the filesystem module. fs_module=`$grub_probe --target=fs --device ${grub_device}` if test "x$fs_module" = x -a "x$modules" = x; then echo "Auto-detection of a filesystem module failed." 1>&2 echo "Please specify the module with the option \`--modules' explicitly." 1>&2 exit 1 fi # Then the partition map module. In order to support partition-less media, # this command is allowed to fail (--target=fs already grants us that the # filesystem will be accessible). partmap_module=`$grub_probe --target=partmap --device ${grub_device} 2> /dev/null` # Device abstraction module, if any (lvm, raid). devabstraction_module=`$grub_probe --target=abstraction --device ${grub_device}` # The order in this list is critical. Be careful when modifying it. modules="$modules $disk_module" modules="$modules $fs_module $partmap_module $devabstraction_module" prefix_drive= if [ "x${devabstraction_module}" = "x" ] ; then if echo "${install_device}" | grep -qx "(.*)" ; then install_drive="${install_device}" else install_drive="`$grub_probe --target=drive --device ${install_device}`" fi grub_drive="`$grub_probe --target=drive --device ${grub_device}`" # Strip partition number install_drive="`echo ${install_drive} | sed -e s/,[0-9]*[a-z]*//g`" grub_drive="`echo ${grub_drive} | sed -e s/,[0-9]*[a-z]*//g`" if [ "$disk_module" = ata ] ; then # generic method (used on coreboot and ata mod) uuid="`$grub_probe --target=fs_uuid --device ${grub_device}`" if [ "x${uuid}" = "x" ] ; then echo "UUID needed with ata mod, but the filesystem containing ${grubdir} does not support UUIDs." 1>&2 exit 1 fi prefix_drive="(UUID=${uuid})" modules="$modules fs_uuid" elif [ "x${grub_drive}" != "x${install_drive}" ] ; then uuid="`$grub_probe --target=fs_uuid --device ${grub_device}`" if [ "x${uuid}" = "x" ] ; then echo "You attempted a cross-disk install, but the filesystem containing ${grubdir} does not support UUIDs." 1>&2 exit 1 fi prefix_drive="(UUID=${uuid})" modules="$modules fs_uuid" fi else prefix_drive=`$grub_probe --target=drive --device ${grub_device}` fi relative_grubdir=`make_system_path_relative_to_its_root ${grubdir}` || exit 1 if [ "x${relative_grubdir}" = "x" ] ; then relative_grubdir=/ fi if [ "${target_cpu}-${platform}" = "i386-pc" ] ; then $grub_mkimage --output=${grubdir}/core.img --prefix=${prefix_drive}${relative_grubdir} $modules || exit 1 # Now perform the installation. $grub_setup ${setup_verbose} ${setup_force} --directory=${grubdir} --device-map=${device_map} \ ${install_device} || exit 1 else $grub_mkimage -d ${pkglibdir} --output=/boot/multiboot.img --prefix=${prefix_drive}${relative_grubdir} $modules || exit 1 fi # Prompt the user to check if the device map is correct. echo "Installation finished. No error reported." echo "This is the contents of the device map $device_map." echo "Check if this is correct or not. If any of the lines is incorrect," echo "fix it and re-run the script \`grub-install'." echo cat $device_map # Bye. exit 0 Back to top |
|||||
hi
I have attempted to clean up 2nd last post into a wiki sidux.com/index.php?module=Wikula&tag=Grub2versus Back to top |
|||||
My suggestion is a bit simpler than your more indepth treatment.
Because everyone who has ever worked in linux with grub knows the syntax for grub 1, and how to handle it, what would be ideal would be a table structure, with each row first the grub 1 syntax, then the second cell the grub 2 equivalents, with file locations, syntax, etc, and especially, a note where no equivalent exists. eg: :: Code :: GRUB 1 GRUB 2
default=0 in file /etc/defaults/grub locate: default=0 # kopt ...... then which files to alter to achieve the same result in grub 2 and so on, so you could take the knowledge you already have built up over the last 10 years or so, and simply and easily convert it to the new and inexcusably complex grub 2 syntax and methods. I took a quick look at Wikipedia's page on Usability and I really have to say, what I see of the new grub fails totally and utterly to be more usable in any standard sense of the word as applied to computing. That page is quite well done, by the way, and some of the usability check lists should be studied by such projects as grub 2 BEFORE they implement such absurdly complex methods. Hint: requiring actually programming structure and syntax in simple config files is ridiculous. Back to top |
|||||
grub
default 0 (counts from zero same as grub2) grub2 set default=0 grub timeout=5 grub2 set timeout=5 grub menu_color_normal=cyan/blue grub2 set menu_color_normal=cyan/blue those bits are fairly simple its messier to define a snazzy image or photo as grub2 has to check if things like fonts are there and image there by using scripting type language. but I hope above helps Back to top |
|||||
All times are GMT - 8 Hours
|