Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI This information is Copyright 2009 Sun Microsystems 1. Introduction 1.1. Project/Component Working Name: Parted (GNU Partition Editor) and ntfsprogs 1.2. Name of Document Author/Supplier: Author: Mark Logan 1.3 Date of This Document: 05 March, 2009 4. Technical Description 4.1. Overview GNU Partition Editor (Parted) [1] is a command-line application that allows you to resize, create or delete disk partitions and filesystems. The goal is to put it on the OpenSolaris Live CD. That way one could shrink the Vista or other NTFS partition and create space to install OpenSolaris. Many x86 machines come preinstalled with Vista. The availability of Parted would increase adoption of OpenSolaris by making it easier to create a dual-boot environment. Parted is in functionality, a superset of the Solaris fdisk command. Parted is for x86 only. 4.2. Details 4.2.1. Diagram +---------+ | Install | +---------+ / \ (could use either) / \ / \ v v +--------+ +---------+ | Parted | | GParted | +--------+ +---------+ \ / \ / \ / v v +-----------------------+ | libparted / ntfsprogs | +-----------------------+ 4.2.2. solaris-parted solaris-parted [2] is an open source project that ported Parted to Solaris. I used this code as a starting point. 4.2.3. ntfsprogs Parted uses ntfsprogs [3] to resize, create or delete NTFS disk partitions and filesystems. ntfsprogs is a collection of command-line utilities, one utility for each operation, e.g. ntfsresize and mkntfs. ntfsprogs required very few changes to port to Solaris. 4.2.4. libparted GNU Parted is composed of a command-line interface and a library. libparted does the actual device access, partition table editing and filesystem manipulation. I made changes to libparted both to port it to Solaris and to integrate solaris-parted and ntfsprogs into it. 4.2.5. GParted Gnome Partition Editor (GParted) [4] is a graphical application that allows you to resize, create or delete disk partitions and filesystems. GParted uses libparted and ntfsprogs. Parted is capable of doing everything GParted does. GParted uses Gtkmm for its GUI. It requires Gtkmm 2.8.x or greater. Solaris currently has Gtkmm 2.13.8. The most recent stable version is 2.14.x. [5] GParted should use HAL (PSARC/2007/679) to lock out HAL-based automounters when it is manipulating the partition table of a device. [6] GParted is Phase 2 of this project. There will be a separate LSARC case. 4.2.6. open source It is my intent to get the GNU Parted, GParted and ntfsprogs projects to buy back my changes. solaris-parted is no longer in development, but I intend to get Parted to buy back those changes along with mine. 4.2.7. Security Interface level: Committed Parted needs permission to access the raw disk devices, just like Solaris fdisk. The following RBAC execution profiles will be added: File System Management:solaris:cmd:::/usr/sbin/parted:privs=sys_devices (Phase 1) File System Management:solaris:cmd:::/usr/sbin/gparted:privs=sys_devices (Phase 2) 4.2.8. Integration with the OpenSolaris installation program We are talking to the OpenSolaris Install group about whether they will use Parted or GParted to integrate that functionality into the installation program. They have not yet decided on the implementation specifics, so I did not include anything about it here. 4.3. Interfaces Exported Interface Name Classification Comments --------------- -------------- ----------------- SUNWparted Committed Package name (Phase 1) /usr/share/man/man1m/parted.1m Uncommitted Manual page (Phase 1) /usr/sbin/parted Committed Parted launcher shell script (Phase 1) /usr/lib/parted/parted Uncommitted Parted application (Phase 1) SUNWntfsprogs Committed Package name (Phase 1) /usr/share/man/man1m/ntfsprogs.1m Uncommitted Manual page (Phase 1) /usr/share/man/man1m/mkntfs.1m Uncommitted Manual page (Phase 1) /usr/share/man/man1m/ntfscat.1m Uncommitted Manual page (Phase 1) /usr/share/man/man1m/ntfsclone.1m Uncommitted Manual page (Phase 1) /usr/share/man/man1m/ntfscluster.1m Uncommitted Manual page (Phase 1) /usr/share/man/man1m/ntfscmp.1m Uncommitted Manual page (Phase 1) /usr/share/man/man1m/ntfscp.1m Uncommitted Manual page (Phase 1) /usr/share/man/man1m/ntfsfix.1m Uncommitted Manual page (Phase 1) /usr/share/man/man1m/ntfsinfo.1m Uncommitted Manual page (Phase 1) /usr/share/man/man1m/ntfslabel.1m Uncommitted Manual page (Phase 1) /usr/share/man/man1m/ntfsls.1m Uncommitted Manual page (Phase 1) /usr/share/man/man1m/ntfsresize.1m Uncommitted Manual page (Phase 1) /usr/share/man/man1m/ntfsundelete.1m Uncommitted Manual page (Phase 1) /usr/sbin/mkntfs Uncommitted ntfsprogs application (Phase 1) /usr/sbin/ntfscat Uncommitted ntfsprogs application (Phase 1) /usr/sbin/ntfsclone Uncommitted ntfsprogs application (Phase 1) /usr/sbin/ntfscluster Uncommitted ntfsprogs application (Phase 1) /usr/sbin/ntfscmp Uncommitted ntfsprogs application (Phase 1) /usr/sbin/ntfscp Uncommitted ntfsprogs application (Phase 1) /usr/sbin/ntfsfix Uncommitted ntfsprogs application (Phase 1) /usr/sbin/ntfsinfo Uncommitted ntfsprogs application (Phase 1) /usr/sbin/ntfslabel Uncommitted ntfsprogs application (Phase 1) /usr/sbin/ntfsls Uncommitted ntfsprogs application (Phase 1) /usr/sbin/ntfsresize Uncommitted ntfsprogs application (Phase 1) /usr/sbin/ntfsundelete Uncommitted ntfsprogs application (Phase 1) /usr/lib/libparted-1.8.so.8 Volatile Symbolic link (Phase 1) /usr/lib/libparted-1.8.so.8.0.0 Volatile Shared library (Phase 1) /usr/lib/libntfs.so.10 Volatile Symbolic link (Phase 1) /usr/lib/libntfs.so.10.0.0 Volatile Shared library (Phase 1) SUNWgparted Committed Package name (Phase 2) /usr/share/man/man1m/gparted.1m Uncommitted Manual page (Phase 2) /usr/sbin/gparted Committed GParted application (Phase 2) /usr/include/parted/constraint.h Uncommitted Header File /usr/include/parted/crc32.h Uncommitted Header File /usr/include/parted/debug.h Uncommitted Header File /usr/include/parted/device.h Uncommitted Header File /usr/include/parted/disk.h Uncommitted Header File /usr/include/parted/endian.h Uncommitted Header File /usr/include/parted/exception.h Uncommitted Header File /usr/include/parted/filesys.h Uncommitted Header File /usr/include/parted/geom.h Uncommitted Header File /usr/include/parted/natmath.h Uncommitted Header File /usr/include/parted/parted.h Uncommitted Header File /usr/include/parted/solaris.h Uncommitted Header File /usr/include/parted/timer.h Uncommitted Header File /usr/include/parted/unit.h Uncommitted Header File 4.4. Schedule I propose introducing GParted into OpenSolaris in two phases: Phase 1: Parted command line Put command line Parted on the CD. A prototype of command line Parted is available now. Use Case: Boot OpenSolaris CD. Run command line Parted in a Terminal window. Shrink NTFS partition. Install OpenSolaris. Phase 2: GParted GUI Put GParted GUI on the CD. Use Case: Boot OpenSolaris CD. Run GParted GUI. Shrink NTFS partition. Install OpenSolaris. 4.5 References [1] GNU Parted http://www.gnu.org/software/parted/ [2] solaris-parted http://code.google.com/p/solaris-parted/ [3] NTFSprogs http://www.linux-ntfs.org/ [4] GParted http://gparted.sourceforge.net/ [5] Gtkmm http://gtkmm.org/ [6] HAL spec http://sac.sfbay/PSARC/2007/679/materials/hal-spec.html 6. Resources and Schedule 6.4. Steering Committee requested information 6.4.1. Consolidation C-team Name: ON 6.5. ARC review type: FastTrack 6.6. ARC Exposure: open