Gentoo Archives: gentoo-dev

From: Duncan <1i5t5.duncan@×××.net>
To: gentoo-dev@l.g.o
Subject: [gentoo-dev] Re: About gcc-4.6 unmasking
Date: Wed, 22 Feb 2012 08:47:50
Message-Id: pan.2012.02.22.08.46.35@cox.net
In Reply to: Re: [gentoo-dev] Re: About gcc-4.6 unmasking by Alec Warner
1 Alec Warner posted on Tue, 21 Feb 2012 14:38:53 -0800 as excerpted:
2
3 > On Tue, Feb 21, 2012 at 1:26 AM, Pacho Ramos <pacho@g.o> wrote:
4 >> El lun, 20-02-2012 a las 20:02 -0600, Ryan Hill escribió:
5 >>> On Mon, 20 Feb 2012 17:17:30 -0800 Zac Medico wrote:
6 >>>> On 02/20/2012 05:03 PM, Ryan Hill wrote:
7 >>>>> On Mon, 20 Feb 2012 21:34:14 +0100 Pacho Ramos wrote:
8 >>>>>
9 >>>>>> [W]hat issues are preventing us from unmasking gcc-4.6
10 >>>>>> (and think on a near stabilization)?
11
12 >>>>> Grub is the only blocker.
13
14 >>>> Stabilize grub-1.99, and modify the grub-0.9x ebuilds to die if they
15 >>>> can't find a supported compiler.
16
17 The latter should be doable now, with the die suggesting either
18 grub-static or gcc-config to gcc-4.5, user's choice.
19
20 The former (grub-1.99)... will take some time... mostly for docs, see my
21 experience as noted below.
22
23 >>> What's the state of 1.99?  I know someone was working on it recently.
24 >>> We'd also have to update the handbooks.  I think it could be several
25 >>> months of work to get it ready, and I'd like to unmask 4.6 last
26 >>> September.
27 >>>
28 >> As looks like fixing old grub is far away because nobody know what is
29 >> causing that issues, probably trying to get grub-1.99 ready for
30 >> stabilization would be interesting (we will need to do that sooner or
31 >> later anyway)
32 >
33 > Ubuntu has used grub2 for 3 years, I am considering working on making it
34 > stable for at least x86 / amd64.
35
36 Ubuntu also defaults to upstart (IIRC, it's certainly not openrc!) and
37 unity. I run grub2 here and am all for the update (for one, it allows
38 amd64/nomultilib to actually build grub, no more forced grub-static!),
39 but surely there's better arguments in a gentoo context than mentioning
40 the U-word, however long they've been doing it.
41
42
43 My grub2 upgrade experience, FWIW. TL;DR: Gentoo grub2 docs need SERIOUS
44 improvement for even ~arch usage (the bulk of the below), but I'm
45 thrilled with how it works now that I have it figured out and setup to my
46 liking. VAST improvement over grub-legacy!
47
48 FWIW, I unmasked gcc-4.6 when I was still running grub-static, but I was
49 thrilled to discover that grub-1.99 builds (and runs) just fine with it,
50 even on amd64/no-multilib.
51
52 **BUT** there's still a HUGE lack of decent gentoo specific grub2
53 documentation. The stub of a guide-page that the ebuild mentions, at
54 least as of a few weeks ago when I upgraded, is a start, but it can
55 almost be said to be more missing than there. the holes are so big!
56 There's no way that's fit for even ~arch yet, which is why it's still
57 unkeyworded. grub2 /works/ OK, there's simply no decent documentation at
58 the gentoo level, and the documentation that's out there just isn't meant
59 for or targeted at gentoo users /at/ /all/!
60
61 This is the current doc, FWIW:
62 http://dev.gentoo.org/~scarabeus/grub-2-guide.xml
63
64 Since I'm running a quad-spindle md/raid (generally raid-1) setup, except
65 that /boot is only two spindles, thus allowing for a backup /boot on the
66 other two, I had the luxury of building and installing (to system)
67 grub-1.99 with DONT_MOUNT_BOOT=1 set in /etc/portage/env/sys-boot/grub,
68 then installing it to one boot record, gpt-BIOS partition and /boot at a
69 time, keeping the other grub-static until I was comfortable with grub2's
70 functionality.
71
72 That allowed me to do a trial-and-error install and play around with the
73 one, until I was absolutely SURE it was working well, then install to the
74 second spindle and verify them both, before even TOUCHING the backup
75 /boot and grub-static install on the other two spindles.
76
77 It's a very good thing, too, as it took me QUITE some trial and error to
78 get things working well, because THE DOCS JUST AREN'T THERE yet. So get
79 the docs there and IMO it's basically ready to go, but that's going to
80 take some time, even to get them to reasonable ~arch level, for folks who
81 don't have the luxury of multiple bootable spindles and /boot install
82 locations, as I do, and thus need documentation that works, at least for
83 a minimal boot, the first time they let it touch /boot and (on BIOS
84 systems, gpt and mbr both) the boot sector.
85
86 Some problems I ran into:
87
88 1) grub-static blocks all grub, not just <=grub-1.90.
89
90 https://bugs.gentoo.org/show_bug.cgi?id=398451
91
92 As mentioned above, I kept both installed. There's no file-conflicts,
93 once grub-static is set to block <=grub-1.90, not all grub, as that work
94 is long since done, slotting grub2 against grub-legacy, only grub-static
95 hasn't been updated appropriately.
96
97 2) The doc covers BIOS/mbr and UEFI, but not BIOS/gpt
98
99 https://bugs.gentoo.org/show_bug.cgi?id=398459
100
101 The current doc URL again:
102
103 http://dev.gentoo.org/~scarabeus/grub-2-guide.xml
104
105 Some people (like me) switched to gpt some time ago. The existing doc
106 doesn't say anything about what they should do. As it happens, a gpt
107 BIOS partition is detected automatically, and it solves a nasty problem
108 MBR folks might have if there's not room between the boot sector and the
109 first partition for grub-core.
110
111 That's the only two I bugged, as I don't want to bother people /too/ much
112 with bugs on masked packages. I figured once that doc bug gets fixed and
113 there's some sign of movement, I can file other bugs.
114
115 3) LVM is mentioned as auto-detected, but md/raid isn't covered. As it
116 happens, it's auto-detected and handling has VASTLY improved compared to
117 grub-legacy, as well.
118
119 4) There needs to be a section dealing with what to do (repartition?) if
120 there's no room between the boot sector and the first partition for the
121 grub-core image.
122
123 On gpt, this image will be placed in the BIOS partition if it's
124 available, but mbr doesn't have such a thing, and I'm sure there's a few
125 gpt folks out there who thought they didn't need a BIOS partition, since
126 grub-legacy doesn't use it anyway. Luckily, I had the foresight to setup
127 BOTH a BIOS and an EFI partition, for forward compatibility, and that
128 "just works". But surely there's others still on MBR without a
129 sufficient gap (I had problems with that and grub-legacy, it installed
130 to /boot but /boot was/is reiserfs, which would relocate critical bits
131 out from under grub-legacy at times, thus the /boot and
132 /bak/boot scheme), and still others on gpt who didn't have that
133 foresight, who will have problems and need to know how to solve them.
134
135 5) After system installation I had trouble installing to the backup boot
136 (/bak/boot, normal /boot was still grub-static and I wanted to keep it
137 that way until I knew grub2 was working), because the script has /boot
138 hardcoded -- it allows the boot record device to be set, but hard-codes
139 /boot, which doesn't make a lot of sense. There's a danger of having
140 /boot on an entirely different device, which may or may not actually be
141 present when the device with that boot record is booted. Surely, they
142 should both be settable. (upstream? What about the pkg_config phase?)
143
144 I worked around that with a combination of hacking and rearranging my
145 fstab and scripts to mount what had been /bak/boot as /boot.
146
147 6) Most existing documentation seems to assume grub-mkconfig
148 (grub2-mkconfig on gentoo), but on my system anyway, running
149 grub2-mkconfig took longer than building a kernel from clean!
150 Seriously, building a kernel takes about 4 minutes here, and
151 grub2-mkconfig was taking about 5! While that's /arguably/ acceptable
152 for folks doing distro kernel upgrades perhaps a few times a year, it's
153 definitely *NOT* acceptable for people like me who routinely run live-git
154 kernels, normally upgrading them every few days, but occasionally doing a
155 git-bisect with a new kernel every few minutes for 12 rounds or so!
156 Doubling that turnaround time due to upstream's incredibly STUPID
157 grub2-mkconfig implementation just isn't going to cut it!
158
159 With a bunch of script-timestamp debugging, I discovered that the problem
160 was some 30-ish calls to grub2-probe, each of which took ~10 seconds!
161 The primary problem is upstream's, as neither grub2-probe nor
162 grub2-mkconfig caches results, so *EVERY* call to grub2-probe takes ~10
163 seconds, and there are around *30* of them! However, the wouldfallout is
164 gentoo's to deal with.
165
166 The workaround is simple enough, or *WOULD* be with proper documentation,
167 simply don't use grub2-mkconfig. Instead, hand-configure grub.cfg just
168 as gentooers have been hand-configuring grub.conf for years. Done right,
169 unlike the automated monster upstream uses, such a config doesn't even
170 need updated with a kernel upgrade, it "just works".
171
172 (Here, I use the dated but still extremely effective update-symlinks-to-
173 newest-two and a stable backup, trick. It's in my kernel install script,
174 and the grub config simply points to the symlink so doesn't itself need
175 updated.)
176
177 FWIW, Arch actually recommends hand-configuring too. (Note the FWIW,
178 unlike the U-word comparison I complained about above. IMO arch's close
179 enough to gentoo to at least have /some/ relevance, but the "FWIW" is
180 there to cover and acknowledge those who find it worth little if
181 anything.)
182
183 But... gentoo needs some documentation for it, because as I said, most of
184 what's out there assumes the automated /etc/grub.d/* and grub2-mkconfig.
185
186 There's nothing on that in the current doc, AT ALL.
187
188
189 But WOW, once it was done and before I've even setup a graphics theme,
190 has it ever been worth it! My favorite feature is being able to access
191 any file from any filesystem, directly from grub. On top of md/raid or
192 lvm2, doesn't matter, it can still access it! No more having to keep
193 copies of such files on /boot! Grub fonts and themes in /usr/share and
194 for that matter, kernel command-line textfile documentation (read with
195 the build-in pager) in /usr/src/linux/Documentation, NOT A PROBLEM! =:^)
196
197 Plus, being able to actually build it from amd64/nomultilib instead of
198 having to depend on grub-static, is a big plus. =:^)
199
200 --
201 Duncan - List replies preferred. No HTML msgs.
202 "Every nonfree program has a lord, a master --
203 and if you use the program, he is your master." Richard Stallman