1 |
Hello, I'm Pavel Nichoski, or CrowX- at Freenode. I'm a third year |
2 |
undergraduate student majoring in Computer Science & Engineering at UIST |
3 |
Macedonia. I've been using Gentoo since 2008, constantly on my desktop and |
4 |
about a couple of years on my server, and I'm most happy with it. Of |
5 |
programming languages, I've used C, C++, Python, Java, C#, PHP and Perl, |
6 |
but mostly for trivial tasks, such as small programs or scripts for |
7 |
university projects, or minor code tweaking of software I'm using. I'm also |
8 |
very comfortable with writing bash scripts. |
9 |
|
10 |
I plan to apply for a few projects, but first on my list is "Manage kernel |
11 |
configurations" as I already have a generally well defined idea for it. |
12 |
However, I'm always open to improvements, so criticism and suggestions are |
13 |
most welcome. I also like the idea behind this project, and if accepted, |
14 |
I'd be most happy to maintain and improve the application in the years to |
15 |
come. |
16 |
|
17 |
The main goals of the application would be: |
18 |
1. To ease and automate the kernel upgrading process to a level the user |
19 |
desires. This would mean using the old kernel configuration to generate a |
20 |
new one while automatically taking care of changes between versions, such |
21 |
as renamed drivers, etc. If the version of the application is older than |
22 |
the version of the kernel, the app should be able to automatically (or by |
23 |
request) sync the needed data from a server. |
24 |
2. To provide default kernel configuration optimized to some extent |
25 |
according to the system's profile, architecture, hardware info, file |
26 |
systems available, etc. Now of course this wouldn't be able to provide an |
27 |
out of the box perfectly optimized configuration in every case, but it |
28 |
would greatly lower the amount of manual configuration by the user. The |
29 |
more common the case is, the less manual configuration will be needed. |
30 |
3. Automatically setting packages to be installed if a driver/module |
31 |
absolutely needs it, usually for firmware. This could be done by creating a |
32 |
separate set of packages, and perhaps adding that set in the world_sets |
33 |
file, so the packages would get pulled when the user upgrades @world. |
34 |
|
35 |
The application would be consisted on one command-line tool accepting |
36 |
various arguments. For example: |
37 |
-l --list Lists installed kernel versions |
38 |
-u --upgrade Changes the symlink to the newest kernel version, or if |
39 |
argument number is given, it sets it to the version under that number from |
40 |
the list, then generates a .config file using the values of the previously |
41 |
used kernel version. |
42 |
-b --build Builds the kernel with the current config |
43 |
-i --install Moves the kernel image to /boot and includes it in the |
44 |
bootloader's configuration. |
45 |
-m --menu Opens the menuconfig |
46 |
-n --new Creates a new .config file with values based on the system's |
47 |
profile, hardware info etc. |
48 |
-d --default Reverts the config file to the default, i.e. as shipped by the |
49 |
package manager |
50 |
|
51 |
So on a new install the user would most likely use "programName -nimb" if |
52 |
he wants the program to generate configuration, then open the menuconfig |
53 |
for the user to do manual changes or reviews, then automatically builds the |
54 |
kernel, moves it to /boot and edits grub.conf (in the case of grub legacy) |
55 |
or whatever loader it's there. |
56 |
And from then on, the user would simply need to execute "programName -ubi" |
57 |
for upgrades. Also if --upgrade is combined with --list, it lists the |
58 |
available versions and then promts for argument on which version to upgrade |
59 |
to. |
60 |
|
61 |
I'd prefer to use Python for this app, but could consider other options too |
62 |
if the mentor suggests a better alternative. |
63 |
|
64 |
Thanks for your attention, and as I said earlier, I'm open to critics and |
65 |
suggestions. |
66 |
|
67 |
|
68 |
Best regards, |