From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1HXDYF-0002UK-Fw for mharc-grub-devel@gnu.org; Fri, 30 Mar 2007 05:37:43 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1HXDYD-0002U6-9S for grub-devel@gnu.org; Fri, 30 Mar 2007 05:37:41 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1HXDYC-0002To-DV for grub-devel@gnu.org; Fri, 30 Mar 2007 05:37:40 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HXDYC-0002Tj-Am for grub-devel@gnu.org; Fri, 30 Mar 2007 04:37:40 -0500 Received: from mx07.ms.so-net.ne.jp ([202.238.82.7]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1HXDVV-0007Jt-Dz for grub-devel@gnu.org; Fri, 30 Mar 2007 05:34:53 -0400 Received: from temjin (pddf855.gifunt01.ap.so-net.ne.jp [218.221.248.85]) by mx07.ms.so-net.ne.jp with ESMTP id l2U9YbV5027515 for ; Fri, 30 Mar 2007 18:34:43 +0900 (JST) From: "Hitoshi Ozeki" To: "'The development of GRUB 2'" Date: Fri, 30 Mar 2007 18:34:29 +0900 Message-ID: <000001c772ae$a4fa46d0$030010ac@temjin> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook, Build 10.0.6822 Importance: Normal Thread-Index: AcdxbtZb8nloLKgWSO2dDa5xepMQRABPQMmQ In-Reply-To: <200703282125.06774.okuji@enbug.org> X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3028 X-detected-kernel: Solaris 9.1 Subject: i386-pc 'chainloader' is something wrong. (RE: I write a patch for Japanese NEC i386 old computers.) X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: The development of GRUB 2 List-Id: The development of GRUB 2 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Mar 2007 09:37:41 -0000 Hello, I wrote: > * When doing 'chainloader' command, the all disk devices cannot use = via > 'dev.c', > because of doing 'grub_loader_unload_func' on 'grub_loader_set'. > I think it is disirable to do 'grub_loader_unload_func' on 'grub_*_boot'. Okuji-san wrote: > Could you elaborate on why this is bad? At first, excuse me. 'grub_loader_unload_func' is not bad. Please see 'grub-1.96/loader/i386/pc/chainloader.c' and 'grub-1.96/kern/loader.c' When we execute the 'boot' command, process the 'grub_loader_boot()' -------------------------------------------------- grub_loader_boot (void) { if (! grub_loader_loaded) return grub_error (GRUB_ERR_NO_KERNEL, "no loaded kernel"); if (grub_loader_noreturn) grub_machine_fini (); <--- includes 'grub_biosdisk_fini()' =20 return (grub_loader_boot_func) (); <--- call the 'grub_chainloader_boot()' } -------------------------------------------------- And 'grub_loader_boot()' passes to 'grub_chainloader_boot()' -------------------------------------------------- grub_chainloader_boot (void) { grub_device_t dev; int drive =3D -1; void *part_addr =3D 0; =20 /* Open the root device. */ dev =3D grub_device_open (0); <--- Ouch! Cannot open device! if (dev) { grub_disk_t disk =3D dev->disk; -------------------------------------------------- =20 I experience this trouble during my work, so 'grub_chainloader_boot()' doesn't open the root device in PC-9800 = patch.