Changeset 5604


Ignore:
Timestamp:
07/18/09 18:33:35 (5 years ago)
Author:
alanbach-guest
Message:
  • Migrated to GRUB2 as per community requests
    • Bump deps for grub2
    • Updated manual page
Location:
pkg/kev/main/parsix-installer/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • pkg/kev/main/parsix-installer/trunk/boot-tools.bm

    r5172 r5604  
    9999        # Everything seems to be ok.     
    100100        return 0 
    101 } 
    102  
    103 # Function gladly taken from update-grub :) 
    104  
    105 # Usage: translate_linux_to_grub os_device 
    106 # Convert an OS device to the corresponding GRUB drive. 
    107 # This part is OS-specific. 
    108 translate_linux_to_grub () { 
    109     # First, check if the device file exists. 
    110     if test -e "$1"; then 
    111                 : 
    112     else 
    113                 echo "$1: Not found or not a block device." 1>&2 
    114                 return 1 
    115     fi 
    116  
    117         host_os=`uname -s | tr '[A-Z]' '[a-z]'` 
    118  
    119     # Break the device name into the disk part and the partition part. 
    120     case "$host_os" in 
    121     linux*) 
    122                 tmp_disk=`echo "$1" | sed -e 's%\([sh]d[a-z]\)[0-9]*$%\1%' \ 
    123                                   -e 's%\(fd[0-9]*\)$%\1%' \ 
    124                                   -e 's%/part[0-9]*$%/disc%' \ 
    125                                   -e 's%\(c[0-7]d[0-9]*\).*$%\1%'` 
    126                 tmp_part=`echo "$1" | sed -e 's%.*/[sh]d[a-z]\([0-9]*\)$%\1%' \ 
    127                                   -e 's%.*/fd[0-9]*$%%' \ 
    128                                   -e 's%.*/floppy/[0-9]*$%%' \ 
    129                                   -e 's%.*/\(disc\|part\([0-9]*\)\)$%\2%' \ 
    130                                   -e 's%.*c[0-7]d[0-9]*p*%%'` 
    131         ;; 
    132     gnu*) 
    133                 tmp_disk=`echo "$1" | sed 's%\([sh]d[0-9]*\).*%\1%'` 
    134                 tmp_part=`echo "$1" | sed "s%$tmp_disk%%"` ;; 
    135     freebsd*) 
    136                 tmp_disk=`echo "$1" | sed 's%r\{0,1\}\([saw]d[0-9]*\).*$%r\1%' \ 
    137                             | sed 's%r\{0,1\}\(da[0-9]*\).*$%r\1%'` 
    138                 tmp_part=`echo "$1" \ 
    139                         | sed "s%.*/r\{0,1\}[saw]d[0-9]\(s[0-9]*[a-h]\)%\1%" \ 
    140                 | sed "s%.*/r\{0,1\}da[0-9]\(s[0-9]*[a-h]\)%\1%"` 
    141         ;; 
    142     netbsd*) 
    143                 tmp_disk=`echo "$1" | sed 's%r\{0,1\}\([sw]d[0-9]*\).*$%r\1d%' \ 
    144                         | sed 's%r\{0,1\}\(fd[0-9]*\).*$%r\1a%'` 
    145                 tmp_part=`echo "$1" \ 
    146                         | sed "s%.*/r\{0,1\}[sw]d[0-9]\([abe-p]\)%\1%"` 
    147         ;; 
    148     *) 
    149                 echo "update-grub does not support your OS yet." 1>&2 
    150                 return 1 
    151     esac 
    152  
    153     # Get the drive name. 
    154     tmp_drive=`grep -v '^#' $device_map | grep "$tmp_disk *$" \ 
    155                         | sed 's%.*\(([hf]d[0-9][a-g0-9,]*)\).*%\1%'` 
    156  
    157     # If not found, print an error message and exit. 
    158     if test "x$tmp_drive" = x; then 
    159                 echo "$1 does not have any corresponding BIOS drive." 1>&2 
    160                 return 1 
    161     fi 
    162  
    163     if test "x$tmp_part" != x; then 
    164                 # If a partition is specified, we need to translate it into the 
    165                 # GRUB's syntax. 
    166                 case "$host_os" in 
    167                 linux*) 
    168                 echo "$tmp_drive" | sed "s%)$%,`expr $tmp_part - 1`)%" ;; 
    169                 gnu*) 
    170                 if echo $tmp_part | grep "^s" >/dev/null; then 
    171                                 tmp_pc_slice=`echo $tmp_part \ 
    172                                 | sed "s%s\([0-9]*\)[a-g]*$%\1%"` 
    173                                 tmp_drive=`echo "$tmp_drive" \ 
    174                                 | sed "s%)%,\`expr "$tmp_pc_slice" - 1\`)%"` 
    175                 fi 
    176                 if echo $tmp_part | grep "[a-g]$" >/dev/null; then 
    177                                 tmp_bsd_partition=`echo "$tmp_part" \ 
    178                                 | sed "s%[^a-g]*\([a-g]\)$%\1%"` 
    179                                 tmp_drive=`echo "$tmp_drive" \ 
    180                                 | sed "s%)%,$tmp_bsd_partition)%"` 
    181                 fi 
    182                 echo "$tmp_drive" ;; 
    183                 freebsd*) 
    184                 if echo $tmp_part | grep "^s" >/dev/null; then 
    185                                 tmp_pc_slice=`echo $tmp_part \ 
    186                                 | sed "s%s\([0-9]*\)[a-h]*$%\1%"` 
    187                                 tmp_drive=`echo "$tmp_drive" \ 
    188                                 | sed "s%)%,\`expr "$tmp_pc_slice" - 1\`)%"` 
    189                 fi 
    190                 if echo $tmp_part | grep "[a-h]$" >/dev/null; then 
    191                                 tmp_bsd_partition=`echo "$tmp_part" \ 
    192                                 | sed "s%s\{0,1\}[0-9]*\([a-h]\)$%\1%"` 
    193                                 tmp_drive=`echo "$tmp_drive" \ 
    194                                 | sed "s%)%,$tmp_bsd_partition)%"` 
    195                 fi 
    196                 echo "$tmp_drive" ;; 
    197                 netbsd*) 
    198                 if echo $tmp_part | grep "^[abe-p]$" >/dev/null; then 
    199                                 tmp_bsd_partition=`echo "$tmp_part" \ 
    200                                 | sed "s%\([a-p]\)$%\1%"` 
    201                                 tmp_drive=`echo "$tmp_drive" \ 
    202                                 | sed "s%)%,$tmp_bsd_partition)%"` 
    203                 fi 
    204                 echo "$tmp_drive" ;; 
    205                 esac 
    206     else 
    207                 # If no partition is specified, just print the drive name. 
    208                 echo "$tmp_drive" 
    209     fi 
    210  
    211     return 0 
    212101} 
    213102 
     
    227116} 
    228117 
    229 ##------------------------------------- 
    230 # Needs: 
    231 # TARGET_MNT_POINT 
    232 # HD_CHOICE 
    233 # 
    234 # Calls: 
    235 # translate_linux_to_grub 
    236 # logit 
    237 ##------------------------------------- 
    238 ## 
    239 function appendGrubForOtherOS() 
    240 { 
    241         local TempFile 
    242         local TempDir 
    243         local GRUBFile 
    244         local mounted_grub_file 
    245         local found 
    246         local menuList 
    247         local drive root_partition root_device usb_dev 
    248         local cur_r_device cur_drive cur_usb_dev 
    249  
    250         # 
    251         # log my call 
    252         # 
    253         logit $"appendGrubForOtherOS" 
    254         # 
    255  
    256         menuList="${TARGET_MNT_POINT}/boot/grub/menu.lst" 
    257  
    258         TempFile="$(mktemp -p /tmp/ .XXXXXXXXXX)" 
    259         MyGrubTemp="$(mktemp -p /tmp/ myGrub.XXXXXXXXXX)" 
    260         TempDir=/tmp/parsix-installer_tempdir 
    261         GRUBFile="/boot/grub/menu.lst" 
    262         mounted_grub_file="${TempDir}${GRUBFile}" 
    263         mkdir -p $TempDir 
    264  
    265         root_partition=$(echo ${HD_CHOICE} |cut -d"'" -f2) 
    266         root_device=$(get_root_device $root_partition) 
    267         drive=$(echo $root_device|cut -d / -f3) 
    268         usb_dev=$(echo $(readlink -f /sys/block/${drive}/device) | grep  "usb") 
    269  
    270         os-prober > $TempFile 
    271  
    272         while IFS=: read device longName shortName kindOf; do 
    273                 # skip current root device 
    274                 if [ "$device" != "$HD_CHOICE" ]; then 
    275                         # is current device USB and not equal root_device 
    276                         # then skip it 
    277                         if [ -n "${usb_dev}" ]; then 
    278                                 cur_r_device=$(get_root_device $device) 
    279                                 cur_drive=$(echo $cur_r_device|cut -d / -f3) 
    280                                 cur_usb_dev=$(echo $(readlink -f /sys/block/${cur_drive}/device) \ 
    281                                         | grep  "usb") 
    282                                 if [ -n "${cur_usb_dev}" -a ! "${cur_drive}" = "${drive}" ] 
    283                                 then 
    284                                         continue 
    285                                 fi 
    286                         fi 
    287                         if [ "$kindOf" = "linux" ]; then 
    288                                 # mount probed partitions 
    289                                 mount $device $TempDir 2>&1 >>/dev/null 
    290                                 if [ $? -eq 0 ] ; then 
    291                                         if [ -r "$mounted_grub_file" ]; then 
    292                                                 found=0 
    293                                                 while read line; do 
    294                                                         # well we take the first kernel found  
    295                                                         # and dont care this is the default one or not 
    296                                                         #skip comented lines 
    297                                                         if [[ $line =~ "^title.*" ]]; then 
    298                                                                 if [ $found -eq 0 ] ;then 
    299                                                                         found=1 
    300                                                                         # one empty line 
    301                                                                         echo >> "$MyGrubTemp" 
    302                                                                         # and remove the word [D,d]efault it it's there 
    303                                                                         echo $(echo $line | \ 
    304                                                                                 sed -e 's#[D,d]efault##') \(${device:5}\) >> "$MyGrubTemp" 
    305                                                                 else 
    306                                                                         break 
    307                                                                 fi 
    308                                                         else 
    309                                                                 # skip uninteresting lines 
    310                                                                 # remove leading spaces.. 
    311                                                                 line=$(echo "$line" | sed -e 's/^[ \t]*//' ) 
    312                                                                 test $found -eq 1 && echo $line | grep -v '^#' >> "$MyGrubTemp" 
    313                                                         fi 
    314                                                 done < "$mounted_grub_file" 
    315                                         fi 
    316                                      # unmount probed partitions 
    317                                      umount $TempDir 
    318                                 fi 
    319                         elif [ "$kindOf" = "chain" ]; then 
    320                                 if [ "$shortName" = "Windows" ]; then 
    321                                         if [ ${device:8} -le 4 ]; then 
    322                                                 gp=$(translate_linux_to_grub $device)    
    323                                                 echo "" >> "$MyGrubTemp" 
    324                                                 echo "title Windows 2K/XP/2003/Vista (${device:5})" >> "$MyGrubTemp" 
    325                                                 echo "rootnoverify $gp" >> "$MyGrubTemp" 
    326                                                 echo "makeactive" >> "$MyGrubTemp" 
    327                                                 echo "chainloader +1" >> "$MyGrubTemp" 
    328                                         fi 
    329                                 fi 
    330                                 #      
    331                         else 
    332                                 #else 
    333                                 # place for other OS's 
    334                                 : 
    335                         fi 
    336                 fi 
    337         done < "$TempFile" 
    338         # do it 
    339         cat $MyGrubTemp >> $menuList 
    340         # clean up 
    341         rm $TempFile $MyGrubTemp 
    342         rmdir $TempDir 
    343 } 
    344  
     118# Installs grub 
    345119install_grub() 
    346120{ 
     
    356130        fi 
    357131 
    358         # Create initital menu.lst 
    359          
    360         rm -f $TARGET_MNT_POINT/boot/grub/menu.lst 
    361         chroot_it update-grub -y >/dev/null 2>/dev/null 
    362  
    363         # change menu.lst 
    364  
    365         # Add german keybindings  
    366         case "$LANGUAGE" in 
    367                 de*|at*|ch*) 
    368                         cp -f $TARGET_MNT_POINT/boot/grub/menu.lst $TMPDIR/menu.lst 
    369                         cat > $TARGET_MNT_POINT/boot/grub/menu.lst << EOF 
    370 # Deutsche Tastaturbelegung 
    371  
    372 setkey y z 
    373 setkey z y 
    374 setkey Y Z 
    375 setkey Z Y 
    376 setkey equal parenright 
    377 setkey parenright parenleft 
    378 setkey parenleft asterisk 
    379 setkey doublequote at 
    380 setkey plus bracketright 
    381 setkey minus slash 
    382 setkey slash ampersand 
    383 setkey ampersand percent 
    384 setkey percent caret 
    385 setkey underscore question 
    386 setkey question underscore 
    387 setkey semicolon less 
    388 setkey less numbersign 
    389 setkey numbersign backslash 
    390 setkey colon greater 
    391 setkey greater bar 
    392 setkey asterisk braceright 
    393 EOF 
    394         cat $TMPDIR/menu.lst >> $TARGET_MNT_POINT/boot/grub/menu.lst 
    395                 ;; 
    396         esac 
    397          
    398         # no alternatives please 
    399         perl -pi -e 's/^# alternative=true/# alternative=false/g' $TARGET_MNT_POINT/boot/grub/menu.lst 
    400         # save the default setting 
    401         perl -pi -e 's/^default .*/default saved/g' $TARGET_MNT_POINT/boot/grub/menu.lst 
    402         # add graphical menu 
    403         perl -pi -e "s|^color (.*)|color \1\ngfxmenu /boot/message.hd|g" $TARGET_MNT_POINT/boot/grub/menu.lst  
    404          
    405         #bg/fg colors 
    406         perl -pi -e "s|^color (.*)|color \1\nforeground=ffffff|g" $TARGET_MNT_POINT/boot/grub/menu.lst  
    407         perl -pi -e "s|^color (.*)|color \1\nbackground=5f5f5f|g" $TARGET_MNT_POINT/boot/grub/menu.lst  
    408  
    409         # Create a new cmdline 
    410          
     132        # Create a new cmdline   
    411133        GRUB_CMDLINE=$(module_system_get_cmdlines) 
    412134         
     
    431153        #end TuxOnIce 
    432154 
    433         perl -pi -e "s|^# kopt=root=(.*) ro|# kopt=root=\1 ro $GRUB_CMDLINE|g" $TARGET_MNT_POINT/boot/grub/menu.lst 
     155        # GRUB 2 
     156        perl -pi -e "s|^GRUB_CMDLINE_LINUX=(.*)|GRUB_CMDLINE_LINUX=\"ro $GRUB_CMDLINE\"|g" $TARGET_MNT_POINT/etc/default/grub 
    434157 
    435158        export device_map=$TARGET_MNT_POINT/boot/grub/device.map 
    436159 
    437         # update menu.lst 
    438         chroot_it update-grub -y >/dev/null 2>/dev/null 
    439  
    440         PARSIXVER=`cat /etc/parsix-version | awk '{print $3}'` 
    441         sed -i "s/Debian GNU\/Linux/Parsix GNU\/Linux $PARSIXVER/g" $TARGET_MNT_POINT/boot/grub/menu.lst 
    442         sed -i 's/nomce\ \vga/nomce\ \quiet\ \vga/g' $TARGET_MNT_POINT/boot/grub/menu.lst 
    443  
    444         # Adding other OSes 
    445         appendGrubForOtherOS 
     160        # update grub.cfg 
     161        chroot_it update-grub >/dev/null 2>/dev/null 
    446162 
    447163        # hook update-grub -y into the kernel installing chain 
    448164cat << EOF >$TARGET_MNT_POINT/etc/kernel-img.conf 
    449 postinst_hook = /sbin/update-grub 
    450 postrm_hook = /sbin/update-grub 
     165postinst_hook = update-grub 
     166postrm_hook = update-grub 
    451167do_bootloader = no 
    452168do_symlinks = Yes 
  • pkg/kev/main/parsix-installer/trunk/debian/changelog

    r5603 r5604  
     1parsix-installer (0.90.1.0) unstable; urgency=low 
     2 
     3  * Migrated to GRUB2 as per community requests 
     4  * Bump deps for grub2 
     5  * Updated manual page 
     6 
     7 -- Alan Baghumian <alan@technotux.org>  Sat, 18 Jul 2009 09:32:13 -0700 
     8 
    19parsix-installer (0.90.0.6) unstable; urgency=low 
    210 
  • pkg/kev/main/parsix-installer/trunk/debian/control

    r5603 r5604  
    1414         bash (>>2.05), 
    1515         gdm, 
    16          grub (>>0.95) | grub-gfxboot | grub2, 
     16         grub2, 
    1717         whois, 
    1818         initscripts, 
  • pkg/kev/main/parsix-installer/trunk/parsix-installer

    r5603 r5604  
    1919# 
    2020 
    21 VERSION="0.90.0.6" 
     21VERSION="0.90.1.0" 
    2222CONFIG_FILE="$HOME/.pi-config" 
    2323LOG="$HOME/parsix-installer.log" 
  • pkg/kev/main/parsix-installer/trunk/parsix-installer.8

    r5143 r5604  
    1 .TH Parsix-Installer 8 "April 2009" "Release: 0.90.0"  
     1.TH Parsix-Installer 8 "July 2009" "Release: 0.90.1"  
    22.SH NAME 
    33Parsix GNU/Linux Installation Script - parsix-installer 
     
    2121 
    2222.B 5.Partitioning 
    23  If you do not have any ready partition to install Parsix GNU/Linux, on the main menu, choose partition and click "OK". This will run "GParted" or "CFdisk"  partitioning tools those you can use to create or resize existing partitions.  
     23 If you do not have any ready partition to install Parsix GNU/Linux, on the main menu, choose partition and click "OK". This will run "GParted" or "CFdisk"  partitioning tools those you can use to create or resize existing partitions. As of version 0.90.x series of the installer, its possible to specify a separated /home partition. 
    2424 
    2525.B 6. Configure Installation 
Note: See TracChangeset for help on using the changeset viewer.