LinuxForum.Fans
Тема

Grub [профиль no-multilib]

Автор: vux 34 сообщений 9025 просмотров
#212284
ormorph написал:
Хм, по идее IA32_EMULATION должно у вас уже быть выставлено в ядре
[console]$ zgrep -i IA32_EMULATION /proc/config.gz[/console]

Судя по ебилду иначе должно выдать ошибку.

Извините ввожу в заблуждение. Действительно опция была активна - перепутал с другой опцией - пора спать :rolleyes:

#234829
newzenon написал:
Ну так в /etc/portage/package.keywords
text
>=sys-boot/grub-9999 **

Или

text
sys-boot/grub:9999 **

ы. У меня grub2 про него писал тут http://linuxforum.ru/viewtopic.php?id=17267

Вписал
всеравно
* IMPORTANT: 4 news items need reading for repository 'gentoo'.
* Use eselect news to read news items.


* IMPORTANT: 2 config files in '/etc/portage' need updating.
* See the CONFIGURATION FILES section of the emerge
* man page to learn how to update config files.

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild N ] sys-boot/os-prober-1.47 25 kB
[ebuild N ] dev-libs/lzo-2.06 USE="-examples -static-libs" 570 kB
[ebuild N ] media-fonts/unifont-5.1.20080914 USE="X" 8,351 kB
[ebuild N ] dev-python/pycrypto-2.4.1 USE="gmp -doc" 375 kB
[ebuild N ] dev-python/setuptools-0.6.21 391 kB
[ebuild N ] dev-scheme/guile-1.8.8-r1 USE="deprecated nls regex threads -debug -debug-freelist -debug-malloc -discouraged -emacs -networking" 3,864 kB
[ebuild N ] dev-libs/libburn-1.1.8 USE="-debug -static-libs -track-src-odirect" 835 kB
[ebuild N ] sys-devel/autogen-5.12 1,035 kB
[ebuild N ] dev-python/paramiko-1.7.7.1 USE="-doc -examples" 804 kB
[ebuild N ] dev-libs/libisofs-1.1.6 USE="acl zlib -debug -static-libs -verbose-debug -xattr" 692 kB
[ebuild N ] dev-libs/libisoburn-1.1.8 USE="acl readline zlib -debug -external-filters -external-filters-setuid -static-libs -xattr" 1,194 kB
[ebuild N ] dev-vcs/bzr-2.4.1 USE="sftp -bash-completion -curl -doc -emacs -test" 7,110 kB
[ebuild NS *] sys-boot/grub-9999 [0.97-r10] USE="nls sdl truetype -custom-cflags -debug -device-mapper -efiemu -libzfs -mount -static" GRUB_PLATFORMS="-coreboot -efi-32 -efi-64 -emu -ieee1275 -multiboot -pc -qemu -qemu-mips -yeeloong" 0 kB

Total: 13 packages (12 new, 1 in new slot), Size of downloads: 25,240 kB

The following keyword changes are necessary to proceed:
#required by sys-boot/grub:2 (argument)
=sys-boot/grub-9999 **

NOTE: The --autounmask-keep-masks option will prevent emerge
from creating package.unmask or ** keyword changes.

Use --autounmask-write to write changes to config files (honoring CONFIG_PROTECT).

following installed packages are masked:- www-plugins/adobe-flash-11.1.102.62::gentoo (masked by: AdobeFlash-10.3 license(s))
A copy of the 'AdobeFlash-10.3' license is located at '/usr/portage/licenses/AdobeFlash-10.3'.

For more information, see the MASKED PACKAGES section in the emerge
man page or refer to the Gentoo Handbook.


* IMPORTANT: 4 news items need reading for repository 'gentoo'.
* Use eselect news to read news items.

:(
#234833

demn, ну --autounmask-write используй, или добавь руками в /etc/portage/package.keywords

text
=sys-boot/grub-9999 **
#234857

спасибо... просто добовлял без =


теперь выдает ошибку

text
>>> Emerging (1 of 1) sys-boot/grub-9999
>>> Unpacking source...
 * bzr pull start -->
 *    repository: [url]http://bzr.savannah.gnu.org/r/grub/trunk/grub/[/url]
[url]http://bzr.savannah.gnu.org/r/grub/trunk/grub[/url] is permanently redirected to [url]http://bzr.savannah.gnu.org/r/grub/trunk/grub/[/url]
No revisions to pull.                                                                                                                                                              
 * exporting ...
 * revision 4109 is now in /var/tmp/portage/sys-boot/grub-9999/work/grub-9999
>>> Source unpacked in /var/tmp/portage/sys-boot/grub-9999/work
>>> Preparing source in /var/tmp/portage/sys-boot/grub-9999/work/grub-9999 ...
Importing unicode...
  File "util/import_unicode.py", line 138
    print "Too long range"
                         ^
SyntaxError: invalid syntax
 * ERROR: sys-boot/grub-9999 failed (prepare phase):
 *   (no error message)
 * 
 * Call stack:
 *     ebuild.sh, line  85:  Called src_prepare
 *   environment, line 3072:  Called die
 * The specific snippet of code:
 *           ( . ./autogen.sh ) || die;
 * 
 * If you need support, post the output of 'emerge --info =sys-boot/grub-9999',
 * the complete build log and the output of 'emerge -pqv =sys-boot/grub-9999'.
 * The complete build log is located at '/var/tmp/portage/sys-boot/grub-9999/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/sys-boot/grub-9999/temp/environment'.
 * S: '/var/tmp/portage/sys-boot/grub-9999/work/grub-9999'

>>> Failed to emerge sys-boot/grub-9999, Log file:

>>> '/var/tmp/portage/sys-boot/grub-9999/temp/build.log'

* Messages for package sys-boot/grub-9999:

* ERROR: sys-boot/grub-9999 failed (prepare phase): * (no error message) * * Call stack: * ebuild.sh, line 85: Called src_prepare * environment, line 3072: Called die * The specific snippet of code: * ( . ./autogen.sh ) || die; * * If you need support, post the output of 'emerge --info =sys-boot/grub-9999', * the complete build log and the output of 'emerge -pqv =sys-boot/grub-9999'. * The complete build log is located at '/var/tmp/portage/sys-boot/grub-9999/temp/build.log'. * The ebuild environment file is located at '/var/tmp/portage/sys-boot/grub-9999/temp/environment'. * S: '/var/tmp/portage/sys-boot/grub-9999/work/grub-9999'

#235246

поможет кто?))

#235249

demn, попробуй предидущую версию grub, у меня 9999 тоже не собрался, не помню почему, в package.keywords вместо =sys-boot/grub-9999 ** добавь:

text
=sys-boot/grub-1.99-r2 **

и emerge -av grub

#235789

спасибо... все собралось smile
осталось понять как его заставить раздел с виндой увидеть =/

#235802
demn написал:
спасибо... все собралось smile
осталось понять как его заставить раздел с виндой увидеть =/

Поставить пакет os-prober и запустить:

text
$ grub2-mkconfig -o /boot/grub2/grub.cfg

В других дистрибутивах принято update-grub, на самом деле это bash в /sbin/update-grub с содержанием:

text
#!/bin/sh
set -e
exec grub2-mkconfig -o /boot/grub2/grub.cfg "$@"
#235907

почему то так он губит генту а остовляет одну винду

#235970

У меня всё ок. Правда венды нет, но на других разделах Debian и Funtoo - находит и добавляет.

#235983

у меня или только винду или только генту ((

#236275

проблему решил. может кому пригодится в grub.cfg добавил

text
menuentry "Win7 {
   insmod ntfs
   set root='(hd0,1)'
   chainloader +1
}
#236624

Значит вот что натестировал (тестовая ветка gentoo)

text
sys-boot/grub-1.99-r2

Поломали, видит только разделы на одном диске, другие диски игнорирует, пользоваться можно.

text
sys-boot/grub-2.00_beta0

У меня в любых вариантах выкидывает в консоль груба, в упор не работает.

text
sys-boot/grub-2.00_beta1

В ребут уходит сразу, хотя в меню добавляет все найденные диски/разделы.

text
sys-boot/grub-9999

Вроде работает, куча ругани в консоль, vga=XXX уже нельзя, какая-т новая опция появилась, с локалью проблемы, раньше (99-r2) не переведен был, но локали в boot-menu нормально работали, тут наоборот.
Ещё раз его попробую.
ы. grub-98-r2(r1?) почему-то из портежа выкинули - работало всё. :(

#236636

Нашел решение для sys-boot/grub-1.99-r2.
За поиск других загрузоных дисков.разделов отвечает /etc/grub.d/30_os-prober
В Debian у меня тоже grub-1.99-r2, забрал его оттуда, но там чуть другая шапка - в gentoo:

text
prefix=/usr
exec_prefix=${prefix}
libdir=/lib64

в debian:

text
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib

В итоге вот рабочий /etc/grub.d/30_os-prober (с ним все как-надо):
http://paste.pocoo.org/show/564145/

text
#! /bin/sh
set -e

# grub-mkconfig helper script. # Copyright (C) 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/>.

#prefix=/usr #exec_prefix=${prefix} #libdir=${exec_prefix}/lib

prefix=/usr exec_prefix=${prefix} libdir=/lib64

. ${libdir}/grub/grub-mkconfig_lib

if [ "x${GRUB_DISABLE_OS_PROBER}" = "xtrue" ]; then exit 0 fi

if [ -z "`which os-prober 2> /dev/null`" -o -z "`which linux-boot-prober 2> /dev/null`" ] ; then # missing os-prober and/or linux-boot-prober exit 0 fi

OSPROBED="`os-prober | tr ' ' '^' | paste -s -d ' '`" if [ -z "${OSPROBED}" ] ; then # empty os-prober output, nothing doing exit 0 fi

osx_entry() { cat << EOF menuentry "${LONGNAME} (${2}-bit) (on ${DEVICE})" --class osx --class darwin --class os { EOF save_default_entry | sed -e "s/^/\t/" prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/" cat << EOF load_video set do_resume=0 if [ /var/vm/sleepimage -nt10 / ]; then if xnu_resume /var/vm/sleepimage; then set do_resume=1 fi fi if [ \$do_resume = 0 ]; then xnu_uuid ${OSXUUID} uuid if [ -f /Extra/DSDT.aml ]; then acpi -e /Extra/DSDT.aml fi $1 /mach_kernel boot-uuid=\${uuid} rd=*uuid if [ /System/Library/Extensions.mkext -nt /System/Library/Extensions ]; then xnu_mkext /System/Library/Extensions.mkext else xnu_kextdir /System/Library/Extensions fi if [ -f /Extra/Extensions.mkext ]; then xnu_mkext /Extra/Extensions.mkext fi if [ -d /Extra/Extensions ]; then xnu_kextdir /Extra/Extensions fi if [ -f /Extra/devprop.bin ]; then xnu_devprop_load /Extra/devprop.bin fi if [ -f /Extra/splash.jpg ]; then insmod jpeg xnu_splash /Extra/splash.jpg fi if [ -f /Extra/splash.png ]; then insmod png xnu_splash /Extra/splash.png fi if [ -f /Extra/splash.tga ]; then insmod tga xnu_splash /Extra/splash.tga fi fi } EOF }

for OS in ${OSPROBED} ; do DEVICE="`echo ${OS} | cut -d ':' -f 1`" LONGNAME="`echo ${OS} | cut -d ':' -f 2 | tr '^' ' '`" LABEL="`echo ${OS} | cut -d ':' -f 3 | tr '^' ' '`" BOOT="`echo ${OS} | cut -d ':' -f 4`"

if [ -z "${LONGNAME}" ] ; then LONGNAME="${LABEL}" fi

echo "Found ${LONGNAME} on ${DEVICE}" >&2

case ${BOOT} in chain)

cat << EOF menuentry "${LONGNAME} (on ${DEVICE})" --class windows --class os { EOF save_default_entry | sed -e "s/^/\t/" prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"

case ${LONGNAME} in Windows\ Vista*|Windows\ 7*|Windows\ Server\ 2008*) ;; *) cat << EOF drivemap -s (hd0) \${root} EOF ;; esac

cat <<EOF chainloader +1 } EOF ;; linux) LINUXPROBED="`linux-boot-prober ${DEVICE} 2> /dev/null | tr ' ' '^' | paste -s -d ' '`" prepare_boot_cache=

for LINUX in ${LINUXPROBED} ; do LROOT="`echo ${LINUX} | cut -d ':' -f 1`" LBOOT="`echo ${LINUX} | cut -d ':' -f 2`" LLABEL="`echo ${LINUX} | cut -d ':' -f 3 | tr '^' ' '`" LKERNEL="`echo ${LINUX} | cut -d ':' -f 4`" LINITRD="`echo ${LINUX} | cut -d ':' -f 5`" LPARAMS="`echo ${LINUX} | cut -d ':' -f 6- | tr '^' ' '`"

if [ -z "${LLABEL}" ] ; then LLABEL="${LONGNAME}" fi

if [ "${LROOT}" != "${LBOOT}" ]; then LKERNEL="${LKERNEL#/boot}" LINITRD="${LINITRD#/boot}" fi

cat << EOF menuentry "${LLABEL} (on ${DEVICE})" --class gnu-linux --class gnu --class os { EOF save_default_entry | sed -e "s/^/\t/" if [ -z "${prepare_boot_cache}" ]; then prepare_boot_cache="$(prepare_grub_to_access_device ${LBOOT} | sed -e "s/^/\t/")" fi printf '%s\n' "${prepare_boot_cache}" cat << EOF linux ${LKERNEL} ${LPARAMS} EOF if [ -n "${LINITRD}" ] ; then cat << EOF initrd ${LINITRD} EOF fi cat << EOF } EOF done ;; macosx) OSXUUID="`grub-probe --target=fs_uuid --device ${DEVICE} 2> /dev/null`" osx_entry xnu_kernel 32 osx_entry xnu_kernel64 64 ;; hurd) cat << EOF menuentry "${LONGNAME} (on ${DEVICE})" --class hurd --class gnu --class os { EOF save_default_entry | sed -e "s/^/\t/" prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/" grub_device="`${grub_probe} --device ${DEVICE} --target=drive`" mach_device="`echo "${grub_device}" | sed -e 's/(\(hd.*\),msdos\(.*\))/\1s\2/'`" grub_fs="`${grub_probe} --device ${DEVICE} --target=fs`" case "${grub_fs}" in *fs) hurd_fs="${grub_fs}" ;; *) hurd_fs="${grub_fs}fs" ;; esac cat << EOF multiboot /boot/gnumach.gz root=device:${mach_device} module /hurd/${hurd_fs}.static ${hurd_fs} --readonly \\ --multiboot-command-line='\${kernel-command-line}' \\ --host-priv-port='\${host-port}' \\ --device-master-port='\${device-port}' \\ --exec-server-task='\${exec-task}' -T typed '\${root}' \\ '\$(task-create)' '\$(task-resume)' module /lib/ld.so.1 exec /hurd/exec '\$(exec-task=task-create)' } EOF ;; *) echo " ${LONGNAME} is not yet supported by grub-mkconfig." >&2 ;; esac done

text
$ grub2-mkconfig -o /boot/grub2/grub.cfg                                                            
Generating grub.cfg ...
Found linux image: /boot/kernel-genkernel-x86_64-3.2.9-zen+
Found initrd image: /boot/initramfs-genkernel-x86_64-3.2.9-zen+
  No volume groups found
Found Ubuntu precise (development branch) (12.04) on /dev/sda1
Found Funtoo Linux - baselayout 2.1.8 on /dev/sda2
Found Debian GNU/Linux (wheezy/sid) on /dev/sdb1
done
Войдите или зарегистрируйтесь, чтобы ответить.