From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ethan Stefan Day Subject: Re: feedback as solicited by Guix manual (Section 7.1.5) Date: Tue, 31 May 2016 17:13:06 -0400 Message-ID: <574DFE62.5080509@ethan-stefan.net> References: <574B8D1E.6080000@ethan-stefan.net> <20160531155854.GA27525@jasmine> <87oa7mxk8b.fsf@mailerver.i-did-not-set--mail-host-address--so-tickle-me> <20160531175659.GA17589@jasmine> <87mvn6xehy.fsf@mailerver.i-did-not-set--mail-host-address--so-tickle-me> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------090608030409040207070602" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:57394) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b7qyq-0002s1-1Z for guix-devel@gnu.org; Tue, 31 May 2016 17:13:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b7qyl-00051U-Lq for guix-devel@gnu.org; Tue, 31 May 2016 17:13:39 -0400 Received: from relay5-d.mail.gandi.net ([217.70.183.197]:41673) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b7qyl-000514-Ac for guix-devel@gnu.org; Tue, 31 May 2016 17:13:35 -0400 In-Reply-To: <87mvn6xehy.fsf@mailerver.i-did-not-set--mail-host-address--so-tickle-me> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: leo@famulari.name Cc: guix-devel@gnu.org This is a multi-part message in MIME format. --------------090608030409040207070602 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit On 05/31/2016 02:35 PM, Matthew Jordan wrote: > > I just looked ouver the installation part of the manual. > >> What parts do you think should be added to our manual? A number of these >> steps are already covered in section 7.1 System Installation. > > That was mostly a copy paste from my notes. But what I wouldn't mind > seeing in the manual is as follows; > > 1. Section 7.1.4.2 Networking; > > mentions using ifconfig, correct me if I"m wrong but isn't ifconfig > considered deprecated? > > In which case iproute2 commands could be used; > > $ ip link show > $ ip link set ens3 up > > 2. Section 7.1.4.3 Disk Partitioning > > It would be nice to indicate that you may need additional swap space to > build the various packages that come with the install. Also sufficient > space under /tmp is needed. In my case I had to bind mount the my tmp > partition from the install target, and turn on the swap to achieve a > successful install. I used these commands to achieve that. > > $ mount --bind /mnt/tmp /tmp > $ swapon /dev/sda3 > >> Personally, I don't like putting instructions on how to use 3rd party >> software in manuals such as ours (or the Gentoo or Arch manuals) unless >> the information is very specific to how we use the software. >> >> In my opinion, if there is some deficiency with the 3rd party programs' >> documentation, that documentation should be improved. >> >> Otherwise, knowledge is fragmented into a variety of places where it >> probably won't be updated as the 3rd party software changes. Also, each >> system's manual or wiki will invariably contain some info that is >> specific to that system but not declared as such. And the new, external >> documentation will probably not be reviewed by the upstream maintainers >> for correctness, spreading bad advice across the internet. Finally, the >> upstream manual will *still* not be improved. >> >> On the other hand, we should strive to make our system as easy to >> install as possible. So, specific advice is most welcome! :) > > While these are valid points, and I have to say I agree with them. Even > Gentoo and Arch (which are among some of the more challenging distros), > do provide some example/recipe to assist with partitioning. I'm not > saying we quote someone's manual, but someone might find it useful. > > We could always indicate that one should refer to upstream manual for > the latest info, and still provide some steps based on a partitioning > plan. I think this would be very helpful to those who may not be fully > verse in partitioning. My first time using Gentoo was pretty decent > because of the documentation provided. Here is the appropriate snippet > from my notes; > > Paritioning plan > Assumming disk is 20GiB > Bootloader 2MiB > /boot 300MiB ext2/4 > Swap 1GiB > / (rest of disk space) ext4 > > $ lsblk > Start parted shell > $ parted -a optimal /dev/sda > (parted) unit MiB > (parted) mklabel gpt > (parted) mkpart primary 1MiB 3MiB > (parted) name 1 grub > (parted) set 1 bios_grub on > (parted) print > (parted) mkpart primary 3MiB 303MiB > (parted) name 2 boot > (parted) print > > Calculation on host with zsh shell > $ ((mib = 1 * (1024 ** 1))) > $ print ${mib} > 1024 > $ print $((mib + 303)) > 1327 > > (parted) mkpart primary 303MiB 1327MiB > (parted) name 3 swap > (parted) print > (parted) mkpart primary 1327MiB -1 > (parted) name 4 root > (parted) set 2 boot on > (parted) print > (parted) quit >From what I've gathered, it seems you should not need to both make a bios_grub partition and toggle the boot flag on another. > Of course feel free free to accept/reject these ideas, as they are just > suggestions based on my state understanding when I first discovered Guix & > GuixSD. I like to think of Guix as the next evolution of Linux from > Arch Linux or Gentoo Linux ^_^. > > Respectfully, > Parted is quite user-friendly. The problem, for me at least, was not so much use of the tools, but rather background knowledge about disk partitioning in general. The information I can find via web searching is scattered. The ideal solution would be to link to the GNU Storage Guide, like the Parted manual does. Unfortunately, that document does not seem to exist, and I am not qualified to write it. Other distributions seem to get around this problem by providing an automated partitioning tool and/or providing examples that work on a wide class of machines. Attached is a context diff for guix.texi in the git repository that expands the partitioning example in a way that I suspect will work on most modern (and perhaps higher-end) machines. -Ethan Day --------------090608030409040207070602 Content-Type: text/x-patch; name="guix.texi.diff" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="guix.texi.diff" *** guix.texi 2016-05-31 16:07:52.443176978 -0400 --- guix-mod.texi 2016-05-31 16:36:07.895090213 -0400 *************** *** 5955,5961 **** =20 Once this is done, you should be able to reboot the system and boot fro= m the USB stick. The latter usually requires you to get in the BIOS' boo= t ! menu, where you can choose to boot from the USB stick. =20 @node Preparing for Installation @subsection Preparing for Installation --- 5955,5962 ---- =20 Once this is done, you should be able to reboot the system and boot fro= m the USB stick. The latter usually requires you to get in the BIOS' boo= t ! menu, where you can choose to boot from the USB stick. You may have to= ! disable UEFI boot. =20 @node Preparing for Installation @subsection Preparing for Installation *************** *** 6069,6078 **** The installation image includes several partitioning tools, including Parted (@pxref{Overview,,, parted, GNU Parted User Manual}), @command{fdisk}, and @command{cfdisk}. Run it and set up your disk wit= h ! the partition layout you want: =20 @example ! cfdisk @end example =20 Once you are done partitioning the target hard disk drive, you have to --- 6070,6090 ---- The installation image includes several partitioning tools, including Parted (@pxref{Overview,,, parted, GNU Parted User Manual}), @command{fdisk}, and @command{cfdisk}. Run it and set up your disk wit= h ! the partition layout you want. The following example assumes your ! motherboard supports GPT partition tables, and will render all data ! currently on your drive inaccessible. Make sure you @code{select} ! the device you want to install GuixSD on. =20 @example ! # parted ! (parted) print all ! (parted) select /dev/sda ! (parted) mklabel gpt ! (parted) mkpart primary 1MiB 2MiB ! (parted) toggle 1 bios_grub ! (parted) mkpart primary 2MiB 100% ! (parted) print ! (parted) quit @end example =20 Once you are done partitioning the target hard disk drive, you have to *************** *** 6089,6095 **** @code{my-root} can be created with: =20 @example ! mkfs.ext4 -L my-root /dev/sda1 @end example =20 @c FIXME: Uncomment this once GRUB fully supports encrypted roots. --- 6101,6107 ---- @code{my-root} can be created with: =20 @example ! mkfs.ext4 -L my-root /dev/sda2 @end example =20 @c FIXME: Uncomment this once GRUB fully supports encrypted roots. *************** *** 6098,6104 **** @c @example @c # fdisk /dev/sdX @c @dots{} Create partitions etc.@dots{} ! @c # cryptsetup luksFormat /dev/sdX1 @c # cryptsetup open --type luks /dev/sdX1 my-partition @c # mkfs.ext4 -L my-root /dev/mapper/my-partition @c @end example --- 6110,6116 ---- @c @example @c # fdisk /dev/sdX @c @dots{} Create partitions etc.@dots{} ! @c # cryptsetup luksFormat /dev/sdX2 @c # cryptsetup open --type luks /dev/sdX1 my-partition @c # mkfs.ext4 -L my-root /dev/mapper/my-partition @c @end example *************** *** 6108,6127 **** Cryptsetup/LUKS for disk encryption. =20 Once that is done, mount the target root partition under @file{/mnt} ! with a command like (again, assuming @file{/dev/sda1} is the root partition): =20 @example ! mount /dev/sda1 /mnt @end example =20 Finally, if you plan to use one or more swap partitions (@pxref{Memory Concepts, swap space,, libc, The GNU C Library Reference Manual}), make= sure to initialize them with @command{mkswap}. Assuming you have one ! swap partition on @file{/dev/sda2}, you would run: =20 @example ! mkswap /dev/sda2 @end example =20 @node Proceeding with the Installation --- 6120,6139 ---- Cryptsetup/LUKS for disk encryption. =20 Once that is done, mount the target root partition under @file{/mnt} ! with a command like (again, assuming @file{/dev/sda2} is the root partition): =20 @example ! mount /dev/sda2 /mnt @end example =20 Finally, if you plan to use one or more swap partitions (@pxref{Memory Concepts, swap space,, libc, The GNU C Library Reference Manual}), make= sure to initialize them with @command{mkswap}. Assuming you have one ! swap partition on @file{/dev/sda3}, you would run: =20 @example ! mkswap /dev/sda3 @end example =20 @node Proceeding with the Installation --------------090608030409040207070602--