Why did I chose a Banana pi server instead of a simple home desktop working as a storage box? This question was not only in my mind, but many of my friends asked me too.
Normally a desktop will give better performance than this ARM SOC, but that also includes more space, and money. I wanted to see how good/bad is this one compared to a desktop box I use as server (located somewhere in USA). I chose to use hdparm command to do simple testing, where I can make sense of the output.
[root@localhost ~]# hdparm -t /dev/sda1 /dev/sda1: Timing buffered disk reads: 268 MB in 3.01 seconds = 89.05 MB/sec [root@localhost ~]# hdparm -T /dev/sda1 /dev/sda1: Timing cached reads: 772 MB in 2.00 seconds = 385.52 MB/sec
[root@fedora-build ~]# hdparm -t /dev/sda1 /dev/sda1: Timing buffered disk reads: 434 MB in 3.01 seconds = 144.37 MB/sec [root@fedora-build ~]# hdparm -T /dev/sda1 /dev/sda1: Timing cached reads: 22548 MB in 2.00 seconds = 11284.87 MB/sec
Maybe in many use cases, but not for my own backup needs.
I don’t remember when I called Siddhesh for the first time to talk about organising FUDCon in India this year. But the discussion started, at first I wanted to bid with Durgapur as the venue. But after some discussion, we agreed that Pune is a better place in many cases which we want in a venue for FUDCon.
I was in Kolkata, I was not directly involved with the bid. But the team did an amazing job in putting up the bid, doing many ground works. MITCoE was chosen as the venue, but we had few other college names in the list as backup.
Four of us (Siddhesh, Amit, Nipendra, and me) took the charge of selecting talks. After many long calls/videos chats we had the initial selected talk list, and it got published in the site on time. That reminds me to speak about the effort Siddhesh put up to fix our fudcon.in, I know how many sleepless nights he spent to get everything working as required.
I came down to Pune on 26th of May, and start working with rest of the organisers. My primary responsibility was related to final travel for the speakers/contributors, and doing the travel for the day of the events. Sanisoft helped us with the event schedule. Hasgeek stepped up to help with the video recording/streaming of the event.
Suprith came up as a volunteer, and he did a tremendous job while running around through out city, and getting best quotes for swag, and printing. Another super big help came from Rupali, who handled/worked on almost everything other than talk selection, and made sure that the event becomes a success
I spent two sleepless nights just before the event starts to make sure all speakers reach the hotel on time, and safely.
Dennis Gilmore started the event with his keynote. We learned a lot about the future plans of Fedora release engineering team in that. After that we had the education panel with a opening event from the college authority.
Harish did the closing keynote on day one. Jiri did the opening keynote on day two. As you can see I am only talking about the keynotes as I was running around doing smaller tasks during the event. We also had Fedora Ambassadors APAC meeting during FUDCon.
The day two closing keynote was from Tenzin Chokden about the Tibetan Government and community in exile and how it safeguarded itself with help of open source tools and the Fedora community from the spying network called GhostNet. This was eye opening in different ways, showing the problems they face everyday, and about how the small contributions from the FOSS communities help them in bigger ways.
Day three was full with workshops and specialized groups. I gave a small 10 minutes talk about CentOS Cloud SIG in the Openstack track. Harish conducted an amazing workshop as GPG.
My job finished when the last speaker returned home safely. But this is not the end, we will be doing local event as follow ups to try to get more open source contributors. I was very happy to see many students who traveled more than one day to reach Pune for the event. If they continue their journey in the community, I am sure they will shine in their own career path.
You can view the full photo set here.
I don’t have words to praise the volunteers for the amount of work they put up for the conference. I can only say thank you all for everything. Just want to mention Siddhesh specifically. The community needs more leaders like you. I hope many will follow your path.
I was looking forward to setup a new storage box at home. The biggest two points were about being able to run Fedora, and to be in the cheaper side. After looking at the available hardware prices for the desktops, I thought I should look into something else.
While asking about the similar setups, Dennis Gilmore, and Peter Robinson from Fedora release engineering team suggested me to look at the ARM boards which can run the standard Fedora ARM. After looking into the boards which I can buy online from an Indian shop, I decided to go for a Banana Pi. It has Allwinner A20, 1GB DDR DRAM, and most important a SATA connector. I ordered the device from crazypi, I have bought many other things from them before. The device was delivered within 24 hours :)
The next issue was to get the hard drive for the system. After a few failed attempts to find a power cable for a SATA drive, I just decided to buy a desktop SMPS to power the hard drive (and it will power the future ones too), I also bought a 8 port switch as I was out of available ports in my home network.
I downloaded the minimal Fedora ARM image (find it here). On my laptop first I installed fedora-arm-installer package. Used the same to get the image on a SD card
# dnf install fedora-arm-installer # fedora-arm-image-installer --image=Fedora-Minimal-armhfp-22-3-sda.raw.xz --target=Bananapi --media=/dev/sdb --selinux=OFF
After everything was done, I reinserted the card in my laptop, and then edited the file extlinux.conf under boot partition, added the words console=tty0 as a parameter.
Next step was to connect the Banana Pi to a TV (it has HDMI), and boot the system, setup root password, timezone, and another user. After logging into the system, my next job was to setup a static ip for the system. To do so, add a new file /etc/sysconfig/network-scripts/ifcfg-eth0 and put the following (after changing the ip details) into it.
DEVICE="eth0" BOOTPROTO="static" OBBOOT="yes" TYPE="ETHERNET" IPADDR="192.168.1.250" NETMASK="255.255.255.0" GATEWAY="192.168.1.1" DNS="18.104.22.168"
Brought back the system to my office room, setup the network switch, and the cables. Connected the system along with the hard drive, and I managed to connect to system from my laptop using ssh.
The drive came up as /dev/sda in the system. I wanted to encrypt it first, that will keep the data secured in case it gets stolen. Install the following package for the same.
# dnf install cryptsetup
Then wanted to fill up the drive with some random data (this will take some time).
# dd if=/dev/urandom of=/dev/sda1 bs=1M
Then encrypted the drive.
# cryptsetup luksFormat /dev/sda1 WARNING! ======== This will overwrite data on /dev/sda1 irrevocably. Are you sure? (Type uppercase yes): YES Enter passphrase: Verify passphrase:
Next step is to open it with a given name (the name will come up under /dev/mapper), and format the partition as ext4.
[root@localhost ~]# cryptsetup luksOpen /dev/sda1 store1 Enter passphrase for /dev/sda1: [root@localhost ~]# [root@localhost ~]# ls /dev/mapper/ control store1 [root@localhost ~]# mkfs.ext4 /dev/mapper/store1 mke2fs 1.42.12 (29-Aug-2014) Creating filesystem with 244189878 4k blocks and 61054976 inodes Filesystem UUID: 43a8b791-3fac-43cb-8244-8988ff3fb749 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
Now I do not want the drive to be automounted, that is why I added a script which will open it, and mount to /mnt in the future.
I tried to use Owncloud for some time on that box, it is an excellent application, but sadly mariadb was taking a lot of CPU. Later at night Dennis suggested me rdiff-backup. I am using that for now, I will update the post later with my experience.
One of the change proposal I have submitted for Fedora 23 is about having systemd-netowrkd for network configuration. You can find the change page here. Instead of carrying the old network-scripts, we wanted to move to networkd, which is a part of systemd. Couple of the notable benefits are about how it will help us to keep the image size sane by not bringing in any external dependencies, and also about similarity between many different distribution based cloud images from users’ point of view. You can look into the discussions on the Talk page, and the trac ticket.
In the last week’s cloud meeting we decided to have a build of Fedora 22 cloud image with systemd-networkd on it. I made the required changes, and did the local build. You can download the qcow2 image, remember it is 218MB. You can use it in any cloud environment in a normal way. If you want to learn, and play around with the configurations, you may want to read this page. Please try the image and tell us what do you think in the comments section of this post.
Kaji Nizamuddin is the headmaster of Bijra High School, he gave a talk in FUDCon Pune about the usage on FOSS and Fedora in his school. I am publishing his feedback email in my blog which he sent after the event.
Dear Convenor FUDCON 2015(Pune)
A very warm and sincere good wishes to all the members of the FUDCON team . I express my deepest gratitude and sincere thanks for sponsoring my trip as a speaker not only from the point of warm hospitality and respect that you have showered upon me but also from the point of useful lessons I learnt from the various sessions that I joined during the three days of conference. It was a novel experience in my life to share my views with a galaxy of stalwarts who are so technologically well advanced and updated. Hopefully all these technological improvements that have been earmarked will not only benefit the advancement of education but also they will be utilised for human welfare as a whole. The members of FUDCON fraternity conducted the conference in such a well planned and well organised manner that a beautiful environment of learning was created. The question - answer sessions have been so rewarding. The students of MIT and other colleges who came to take part in the conference had a tete-a-tete with the national and international speakers and I think this mutual response has made the purpose of this conference more meaningful and significant. I personally feel that our FEDORA contributors who work with yearlong lucubration for the cause of Free and Open Source Software have a very broad outlook, magnanimity and a cosmopolitan heart. They are really the men and women of vision.It was rather a lifetime event for me to witness and cherish the memory of the persons who work under the global FEDORA umbrella and to share their views with each other. I came back with enough enlightenment and zeal. Therefore I wish to contribute more into such projects. I do confess here that I am not so well -versed with the technical aspects of all these projects but I swear I will keep myself abreast in the development . Hence I need your guidance and help to update myself. Once again all FUDCON 2015 members for being so kind and treating me in such a special way. I felt honoured and privileged and hope that the next FUDCON will be as successful and as rewarding as this one . Wishing you all the best. With sincere regards and warm wishes.
For the last few months we are working on the Cloud Special Interest Group in the CentOS project. The goal of this SIG is to provide the basic guidelines and infrastructure required of FOSS cloud infrastructure projects so that we can build and maintain the packages inside official CentOS repositories.
We have regular meetings at 1500 UTC in every Thursday on #centos-devel IRC channel. You can find the last week’s meeting log here. RDO (Openstack), Opennebula and Eucalyptus were the first few projects to come ahead, and participate in forming the SIG. We also have a good number of overlap with the Fedora Cloud SIG.
RDO is almost ready to do a formal release of Kilo on CentOS 7. The packages are in testing phase. Opennebula team has started the process to get the required packages built on CBS.
If you want to help feel free to join in the #centos-devel channel, and give us a shout. We do need more helping hands to package, and maintain various FOSS Cloud platforms.
There are also two GSoC projects under CentOS which are related to the Cloud SIG. The first one is “Cloud in a box”, and the second one is “Lightweight Cloud Instance Contextualization Tool”. Rich Bowen, and Haikel Guemar are the respective mentors for the projects.
One of my job requirement is to keep testing the latest Fedora cloud images. We have a list of tests from Fedora QA team. But the biggest problem is that I don’t like doing these manually. I was looking for a way to run these automatically. We can do this by the normal CI systems, but there are two problems in that.
Tunir came out as a solution to these problems. It is a simple system, which can run predefined set of commands in a fresh cloud instance, or in a remote system. Btw, did I mention that you don’t need a cloud to run these cloud instances in your local system? This is possible thanks to the code from Mike Ruckman.
Each job in Tunir requires two files, jobname.json and jobname.txt. The json file contains the details of the Cloud image (if any), or the remote system details, ram required for the vm etc. The .txt file contains the shell commands to run in the system. For now it has two unique commands for Tunir. You can write @@ in front of any command to mark that this command will return non zero exit code. We also have a SLEEP NUMBER_OF_SECONDS option, we use it when we reboot the system, and want Tunir to wait before executing the next command.
Tunir has a stateless mode, I use that all the time :) In stateless mode, it will not save the results in any database. It will directly print the result in the terminal.
$ tunir --job fedora --stateless
Tunir uses redis to store some configuration information, like available ports. Remember to execute createports.py to fill the configuration with available ports.
You can install Tunir using pip, a review request is also up for Fedora. If you are on Fedora 21, you can just test with my package.
I am currently using unittest for the Cloud testcases, they are available at my github. You can use fedora.json and fedora.txt from the same repo to execute the tests. Example of tests running inside Tunir is below (I am using this in the Fedora Cloud tests).
curl -O https://kushal.fedorapeople.org/tunirtests.tar.gz tar -xzvf tunirtests.tar.gz python -m unittest tunirtests.cloudtests sudo systemctl stop crond.service @@ sudo systemctl disable crond.service @@ sudo reboot SLEEP 30 sudo python -m unittest tunirtests.cloudservice.TestServiceManipulation @@ sudo reboot SLEEP 30 sudo python -m unittest tunirtests.cloudservice.TestServiceAfter
UPDATE: Adding the output from Tunir for test mentioned above.
sudo ./tunir --job fedora --stateless [sudo] password for kdas: Got port: 2229 cleaning and creating dirs... Creating meta-data... downloading new image... Local downloads will be stored in /tmp/tmpZrnJsA. Downloading file:///home/Fedora-Cloud-Base-20141203-21.x86_64.qcow2 (158443520 bytes) Succeeded at downloading Fedora-Cloud-Base-20141203-21.x86_64.qcow2 download: /boot/vmlinuz-3.17.4-301.fc21.x86_64 -> ./vmlinuz-3.17.4-301.fc21.x86_64 download: /boot/initramfs-3.17.4-301.fc21.x86_64.img -> ./initramfs-3.17.4-301.fc21.x86_64.img /usr/bin/qemu-kvm -m 2048 -drive file=/tmp/tmpZrnJsA/Fedora-Cloud-Base-20141203-21.x86_64.qcow2,if=virtio -drive file=/tmp/tmpZrnJsA/seed.img,if=virtio -redir tcp:2229::22 -kernel /tmp/tmpZrnJsA/vmlinuz-3.17.4-301.fc21.x86_64 -initrd /tmp/tmpZrnJsA/initramfs-3.17.4-301.fc21.x86_64.img -append root=/dev/vda1 ro ds=nocloud-net -nographic Successfully booted your local cloud image! PID: 11880 Starting a stateless job. Executing command: curl -O https://kushal.fedorapeople.org/tunirtests.tar.gz Executing command: tar -xzvf tunirtests.tar.gz Executing command: python -m unittest tunirtests.cloudtests Executing command: sudo systemctl stop crond.service Executing command: @@ sudo systemctl disable crond.service Executing command: @@ sudo reboot Sleeping for 30. Executing command: sudo python -m unittest tunirtests.cloudservice.TestServiceManipulation Executing command: @@ sudo reboot Sleeping for 30. Executing command: sudo python -m unittest tunirtests.cloudservice.TestServiceAfter Job status: True command: curl -O https://kushal.fedorapeople.org/tunirtests.tar.gz status: True % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 8019 100 8019 0 0 4222 0 0:00:01 0:00:01 --:--:-- 4224 command: tar -xzvf tunirtests.tar.gz status: True tunirtests/ tunirtests/cloudservice.py tunirtests/LICENSE tunirtests/testutils.py tunirtests/__init__.py tunirtests/cloudtests.py command: python -m unittest tunirtests.cloudtests status: True .suu ---------------------------------------------------------------------- Ran 4 tests in 0.036s OK (skipped=1, unexpected successes=2) command: sudo systemctl stop crond.service status: True command: @@ sudo systemctl disable crond.service status: True Removed symlink /etc/systemd/system/multi-user.target.wants/crond.service. command: @@ sudo reboot status: True command: sudo python -m unittest tunirtests.cloudservice.TestServiceManipulation status: True . ---------------------------------------------------------------------- Ran 1 test in 0.282s OK command: sudo python -m unittest tunirtests.cloudservice.TestServiceAfter status: True . ---------------------------------------------------------------------- Ran 1 test in 0.070s OK
According to Wikipedia, A hackathon (also known as a hack day, hackfest or codefest) is an event in which computer programmers and others involved in software development, including graphic designers, interface designers and project managers, collaborate intensively on software projects. Let us go through few points from this definition.
We can also see that people work intensively on the projects. It can be one project, or people can work as teams on different projects. In Fedora land, the most common example of hackathon is “Fedora Activity Days” or FADs. Where a group of contributors sit together in a place and work on the project intensively. The last example is the Design FAD which we had around a month back, where the design team worked on fixing the their goals and workflows and other related things.
One should keep these things in mind while submitting a proposal for FUDCON or actually any other conference. If you want to teach about any particular technology or tool, you should put that as a workshop proposal than a hackfest or hackathon.
Then which one is a good topic for hackfest during Fudcon? Say you want to work on the speed up of the boot time of Fedora. You may want to design 5 great icons for the projects you love. If you love photography, may be you want to build a camera using a RaspberryPi and some nice Python code. Another good option is to ask for a list of bugs from the applications under Fedora apps/infrastructure/releng team and then work on fixing them during the conference.
In both hackfest or workshop proposals, there are a few points which must be present in your proposal. Things like
CFP is open still 9th March, so go ahead and submit awesome proposals.