I'm trying to document the bare minimum for a user to be able to do an intial logon. The below table gives a structure of the smallest possibilities and what can be done with those. I will assume the base folder is named chroot.
The stage 1 files are the smallest set to be able to execute a shell login. Stage 1 will also contain a method to pull stage 2 files from an internet scheme. Alternatively a developer could simply use a local repository test his recently prepared package to determine if it requires other dependencies to function.
I should state that all of the executables for all stages are statically linked with their libraries so that the only required .DLL is the cygwin1.dll. This reduces the footprint of required files considerably. I'm also finding the statically linked executable to be some what faster but that may be my imagination.
The stage 2 set will contain common files for typical shell operation such as coreutils, sed or grep to name just a few as well as the pacman binary to be able to install other stages.
The stage 3 set will contain a typical development environment. Stage 3 will allow the development of packages and also provide the means to create new roots from deploying another stage 1 set.
| chroot/ | list | stage | source package |
|---|---|---|---|
| bin/ | 1 | DIRECTORY | |
| bin/ | cygwin1.dll | 1 | cygwin |
| dash.exe | 1 | dash | |
| find.exe | 1 | coreutils | |
| hostname.exe | 1 | coreutils | |
| id.exe | 1 | coreutils | |
| install.exe | 1 | coreutils | |
| locale.exe | 1 | cygwin | |
| ls.exe | 1 | coreutils | |
| mkdir.exe | 1 | coreutils | |
| pwd.exe | 1 | coreutils | |
| etc/ | 1 | DIRECTORY | |
| etc/ | fstab | 1 | MANUALLY KEYED |
| profile | 1 | MANUALLY KEYED | |
| skel/ | 1 | DIRECTORY | |
| etc/skel/ | .profile | 1 | MANUALLY KEYED |
| tmp/ | 1 | DIRECTORY | |
| home/ | 1 | DIRECTORY | |
| usr/ | 1 | DIRECTORY | |
| usr/ | share/ | 1 | DIRECTORY |
| lib/ | 1 | DIRECTORY | |
| usr/share/ | terminfo/ | 1 | DIRECTORY |
| usr/share/terminfo/ | 63/ | 1 | DIRECTORY |
| usr/share/terminfo/63/ | cygwin | 1 | ncurses |
Diff:
Diff: