tech-install archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

GSoC: Sysinst enhancements proposal



Hello, 

I'm 4th-year student of Belgorod State University, department of Computer
Sciences and Telecommunications. Unix user since 2006, run my own NetBSD
server since 2010. I have good skills in shell programming (POSIX/bash), C,
Perl. Also I known some Lua, Tcl, Python and Flex/Bison. For this project
I have skill in installing NetBSD without sysinst, installing to complex
partitions configuration(LVM,CGD...); also I have my i386 testbed to make all
needed checks and experiments.

Here is my proposal for "Sysinst enhancements". Any comments are welcome.


About the project
-----------------

The main goal of the project is to add to NetBSD installer (sysinst) ability 
to install system to GPT-ed, LVM-ed, encrypted disks, RAIDs and to disk images
(vnconfig). Also there are additional goals: improve sysinst usability and
rewrite some utilities for more code sharing with sysinst.

Traditional partitioning format (MBR) doesn't support large HDDs currently in 
use. Problem fixing by goes to GPT, but there is some barriers to use GPT in
NetBSD: installing to GPT-partitioned disk require much more skills and 
free time to installing by hand. Current disk tools are rather hard to
use, and partition names may confuse user. 
Anything aforesaid actual also for CGD, LVM and RAID, except that these 
technologies in most cases needed by experienced users and system
administrators, who can manually configure all that needed. Nevertheless
implementing appropriate features in sysinst (together with planned automated
install support) may save many time and nerves for user. Most stages of
install process can be automatized by advanced user in simple shell script,
except disk partitioning since it require attention and manual work.

Also sysint have a bit little defects in usability. In this direction I'm
planning to do work including: splitting all installation process to separate
steps and adding ability to run some step independently i.e. disk partitioning
or extracting tar-files (useful when /targetroot already mounted by hand), add
menu back option, improve network configuration dialog.

If the time will permit (or after GSoC), it would be also possible to implement
some additional useful features such as combined CD/USB Live/install image,
support for install binary packages during OS install procedure, install
thought ssh without monitor and keyboard and etc.


Deliverables of the project
---------------------------

  1. A set of patches for sysinst to implement GPT, LVM, RAIDFrame support
     (mbalmer's code merging expected);
  2. Patches that divide gpt(8) code into two parts: core functions (backend)
     and /sbin/gpt (frontend). That's will be useful for code share;
  3. (probably, if time will allow) Patches to gpt(8), fdisk(8), disklabel(8), 
     sunlabel(8) and sysinst to share code into one library that contains all
     needed partitioning functions;
  4. (probably) Patches to gpt and lvm rc-scripts that add ability to
     unravel complex dependences;
  5. Small patches to fix usability issues;
  6. Patches for sysinst language files (that needs review of people who
     speak this languages).


Milestones and schedule
-----------------------

1. April 11 - May 20: inclusion
   * Familiarizing with sysinst architecture (and also menuc);
   * Familiarizing with GPT, LVM, RAIDFrame code;
   * Familiarizing with Anita;
   * Getting familiar with installation image building processes;
   * Discussing the ways of implementation with mentor;
   * Possible early coding start.

2. May 21 - June 10: 
   * (probably) Dividing gpt(8) to frontend and backend;
   * Fixing usability issues and other small things;
   * Also this is university exams time for me.

3. June 11 - July 16: main work
   * Implementing menus and all needed hooks for cgdconfig(8), lvm(8),
     raidctl(8). Menus should include ability to work with >1 HDDs;
   * Refactore sysinst code to unhitch mbr/disklabel code;
   * Work with gpt(8): divide it to backend and frontend or just import needed
     code to sysinst;
   * Milestone: have redesigned menu and basic support for gpt, lvm, raid,
     cgd.

4. July 17 - August 1: the rest of the work
   * Fixing boot in difficult cases with gpt/lvm dependences;
   * (probably) Work with disklabel(8), fdisk(8) and etc to share code;
   * Documenting.

5. August 1 - August 12: testing stage
   * Reviewing and patching Anita to support new sysinst features;
   * Testing on simple configurations with GPT, LVM, RAID, CGD, VND: 1-3 HDDs
     without cases like installation into encrypted image;
   * Testing on complex configurations, for example: a lot of HDDs with GPT
     and MBR, some in raid, many partitions, LVM on some partitions, CGD on
     some LVs;
   * Testing on standard configurations - regresses searching - last because
     all must work after previous bugfixes.

6. August 13 - August 22: final stage
   * Delivery;
   * Reserved time (may be used for implement other ideas or in case of lag
     from the schedule).

All work will be accessible though regular-updated public VCS.

I'm planning continue my work with NetBSD installer after GSoC. That include
"Add binary pkg install to sysinst" project if it will remain actual.
Also I have some other plans including:
  * Creating DVD and USB flash live/install combined images;
  * Implementing ability to install pkgsrc from sysinst;
  * Implementing install scripts support for automated install;
  * Researching into using bsdinstall as NetBSD installer (probably).


Appendix 1: New disk editor mock-up examples
--------------------------------------------

Pic 0. Initial screen. There is 2 small HDDs with MBR, one large empty HDD
and one flash card.
==============================================================================
 Disk editor. All disks, partitions, LVM, RAID displayed there. Create MBR or
 GPT, then create partitions. Press Z to get more help.
                                                    +-----------------+
   wd0 (MBR) - 120.0G, Hitachi HTS54321             | Default install |
   wd1 (LVM PV) - 20.0G, Seagate ST720011           | Drive geometry  |
 > wd2 (Empty) - 2500.0G, WesternDigital WD015EARS  | Create MBR      |
   sd0 (MBR) - 8.0G, VERBATIM STORE N GO            |>Create GPT<     |
     slice 1. start: 1M        size: 8191M     type:| Create LVM PV   |
                                                    | Create CGD      |
  w: Change size units (MB/sectors/cylinders)       | Create RAID     |
  x: Done                                           +-----------------+

==============================================================================

Pic 1. Create two slices on wd0, one will be NetBSD, that contains 'a'(/)
and 'b'(swap), other is LVM PV. Reuse all wd1 for LVM PV. Also create two
slices on wd2 one for LVM; create FAT on sd0.
==============================================================================

 Disk editor. All disks, partitions, LVM, RAID displayed there. Create MBR or
 GPT, then create partitions. Press Z to get more help.

  wd0 (MBR) - 120.0G, Hitachi HTS54321
    slice 1. start: 1M        size: 20480M    type: NetBSD   mnt:
       a:    start: 1M        size: 2048M     type: FFS      mnt: /
       b:    start: 2049M     size: 512M      type: swap     mnt:
       Create partition (12 free)...
    slice 2. start: 20482M    size: 81920M    type: LVM PV   mnt:
    unused.  start: 81923M    size: 40959M
  wd1 (LVM PV) - 20.0G, Seagate ST720011
  wd2 (GPT) - 2500.0G, Western Digital WD015EARS
    part. 1. start: 1M        size: 30000M    type: NTFS     mnt: /mnt/winnt
    part. 2. start: 30002M    size: 2529998M  type: LVM PV   mnt:
> sd0 (MBR) - 8.0G, VERBATIM STORE N GO
    slice 1. start: 1M        size: 8191M     type: FAT32    mnt:
  LVM - 2550.0G
    part. 1. start: 1M        size: 2600960M  type: NetBSD   mnt: /home
    part. 2. start: 2600961M  size: 10239M    type: CGD #0   mnt:
  CGD #0 - 10239M
    part. 1. start: 1M        size: 10237M    type: FFS      mnt: /var

  w: Change size units (MB/sectors/cylinders)
  x: Done
==============================================================================

Same scheme for RAID and for VND images. For VND you need to select partition
and in actions-menu enter image size and patch where this images will be
created. Then image will be added to main screen as a normal disk. Also
available feature to use entire disk and create default partitions deal.


P.S. The criticism is welcomed.

With best regards,
Eugene

Attachment: signature.asc
Description: PGP signature



Home | Main Index | Thread Index | Old Index