====== Upgrade from LMDE 1 to LMDE 2 (Betsy) ====== Clem, the fantastic lead programmer behind the Linux Mint project, has written a nice article detailing the process of upgrading your system from LMDE 1 UP8 to LMDE 2 Betsy that I suggest you [[http://community.linuxmint.com/tutorial/view/2013|read first]]. In the comments of this article, wilo108 posted the following comment: > //Is there all that much value in an upgrade? With a separate home partition, and a list of installed packages (`dpkg --get-selections > installed_packages.txt`) I can have a clean install up-to-speed in a hour or so; I can't help feeling that this would take longer and be more likely to throw up issues I'd have to dig into. Just throwing it out there as an option some folk might consider, if they've not already.// The reflection it brought me to was:\\ After about two years of happily using LMDE, my system is still running smoothly. Although I know that, here and there, scattered around my system, are some //garbage// files that I might as well seize the opportunity to get rid of ! I once tried [[https://www.winehq.org/|wine]] on this machine but finally didn't keep it, preferring to go for a [[https://www.virtualbox.org/|VirtualBox]] solution. I also had a lot of trouble trying to get Skype to work correctly before I gave up, just to name a few of the installations that, in the end, were removed from my system. And although I, each time, made my best to remove them as completely and properly as possible, there are still a lot of those //garbage// that I see around from time to time. I know it won't be a snap to move from one system to the other (and re-install everything), but since my **/home** has it's own partition, it should already be easier... doesn't it? ===== Back Up ===== <WRAP center round important> As always, if you're willing to replicate what is described here below, **BE SURE TO BACKUP ALL OF YOUR DATA FIRST !**\\ Some commands used here could **COMPLETELY WIPE YOUR HARD DISK**, so please read carefully and double check your **DEVICES IDs** before throwing the commands. It happened to me **once**, tired in the middle of the night, but **I LOST MY MAIN HARD DRIVE DATA**, trust me, you don't want this to happen! </WRAP> ---- ===== Installation Plan ===== ---- As I: * **Don't expect** to have my **//shinny new LMDE 2//** install configured and completed with all applications and utilities that I currently use in LMDE 1 **before a few days**. * Still have a **//spare// 256GB SSD** * Have my current **/home** in a separated partition The safest, fastest and most convenient way I can think of in order to make this //**LMDE 2 clean switch**// is to: * Keep my **current main system SSD (512GB) untouched**, so I can **switch back to it at boot time** and be back in "business as usual" * Install a **clean LMDE 2 system in a partition** on the spare SSD (256GB) * **Complete the LMDE 2 install** with all the necessary applications and utilities ---- ===== Install from USB Key ==== ---- The most straight forward way to install LMDE 2 on our SSD256, which will be hooked to an external USB3 adapter, is to first "burn" a LMDE 2 iso file to a USB Key, ours is a 4GB stick. Please refer to [[http://community.linuxmint.com/tutorial/view/744|this tutorial on Linux Mint's community site]] to get more info on how to **"burn"** the LMDE 2 iso file to a USB Key.\\ LMDE 2 iso files are to be found [[http://www.linuxmint.com/download_lmde.php|on this page of the Linux Mint website]]. ---- ===== Partionning ===== ---- Although we don't plan to keep using the SSD256 on the long term, we'll apply a partition scheme that's compatible with a usage as main system drive. One thing to note here maybe is that **LMDE 2 has EFI and GPT tables compatibility** (as stated by Clem himself [[http://blog.linuxmint.com/?p=2808#comment-116195|in his response to a comment]]). As my current machine, a Clevo W150HR, has a BIOS I, fortunately, do not have to care about (U)EFI support and specificity. In case your system has (U)EFI, it is recommended that you refer to [[http://www.rodsbooks.com/refind/]] to learn more about the requirements for multi-booting. That being said, here is my final SSD256 partitioning scheme: * root partition - 19GB - ext4 - boot flag * swap partition - 2GB - swap * lvm partition - 229GB - lvm2 * volume group - vg00 - 229GB * logical volume - vg00-opt - 10GB * logical volume - vg00-home - 202.88GB ---- ===== Backup and Restore ==== ---- Obviously the last point in our installation plan, **Complete the LMDE 2 install** with all the necessary applications and utilities, is probably the most complicated to achieve. How indeed not to forget some of the packages you installed?\\ In the Clem's article comment, a suggestion was made to output all the currently installed packages to later reinstall them all in one go: <code> > dpkg --get-selections > installed_packages.txt </code> Digging a little on the above suggestion, I was brought to [[http://askubuntu.com/questions/9135/how-to-backup-settings-and-list-of-installed-packages|this forum post on Ask Ubuntu]], which suggests a much more complete **"backup and restore"** solution, here is the commands summary: ---- ==== Installed Packages ==== **backup** <code> > dpkg --get-selections > ~/Package.list > sudo cp -R /etc/apt/sources.list* ~/ > sudo apt-key exportall > ~/Repo.keys </code> **Restore** <code> > sudo apt-key add ~/Repo.keys > sudo cp -R ~/sources.list* /etc/apt/ > sudo apt-get update > sudo apt-get install dselect > sudo dselect update > sudo dpkg --set-selections < ~/Package.list > sudo apt-get dselect-upgrade -y </code> ---- ==== Settings and Personal Data ==== === With a separated partition === Has I have my **/home** directory in a separate partition, all I'll have to do is mount this partition as /home in **// /etc/fstab//**.\\ Note that, in my configuration, **/opt** is also on a separated partition, so it also appears in **// /etc/fstab//**: <code> > sudo nano /etc/fstab # UNCONFIGURED FSTAB FOR BASE SYSTEM proc /proc proc defaults 0 0 # /dev/sdc1 [root] UUID=74f1f74a-25bb-4444-b587-e3679d482938 / ext4 rw,errors=remount-ro 0 1 # /dev/sdc2 [swap] UUID=07ca33fa-f4d2-4f94-ab0e-9b63d603555b swap swap sw 0 0 # /dev/sda8 [opt] UUID=60f6fd48-ac6a-4bee-8e4a-408cfb9e75a5 /opt ext4 defaults 0 1 # /dev/sda5 [home] UUID=2d265aa6-e56c-481c-a44e-5e5d69f4cd39 /home ext4 defaults 0 1 </code> To apply the changes made to /etc/fstab it's recommended to reboot (as your /home directory is concerned). It is always safer to reference your partition using their UUID, this avoids any possible confusion in case your hard drive would get mounted under another reference. This is particularly true when using external USB devices.\\ To find out what's the UUID of your partition, use the **//lsblk//** command, note that you have to use **//sudo//** to access the devices UUIDs: <code> > sudo lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT sda |-sda1 ext4 EFI-boot 79cf031a-dcdf-4b94-90c5-80f90a35c9a0 |-sda2 ext4 6f90c930-8e1d-49ab-8eda-b6302ed883b7 |-sda3 |-sda5 ext4 home 2d265aa6-e56c-481c-a44e-5e5d69f4cd39 /home |-sda6 ext4 var f9967fb4-d1f7-4ef8-9fe7-3b9e0abdd024 |-sda7 ext4 tmp 01467053-9441-4c02-8b93-f6f832894965 `-sda8 ext4 opt 60f6fd48-ac6a-4bee-8e4a-408cfb9e75a5 /opt sdb |-sdb1 ext4 74f1f74a-25bb-4444-b587-e3679d482938 / |-sdb2 swap swap 07ca33fa-f4d2-4f94-ab0e-9b63d603555b [SWAP] `-sdb3 LVM2_member iPczLk-BV7W-ONO8-Ttl6-106n-qY55-jStvHq |-vg00-opt `-vg00-home sr0 </code> === Without a separated partition === <WRAP center round info> Make sure your new **/home** partition is big enough to receive all data from your "old" one. Otherwise you will not be able to transfer some files to the newly created partition. </WRAP> I'd recommend you first partition your target disk, creating a separated **/home** partition, possibly using LVM, ending with a partition scheme as follow: <code> sdb |-sdb1 ext4 |-sdb2 swap swap `-sdb3 LVM2_member |-vg00-opt `-vg00-home </code> Then mount the **/home** partition <code> > sudo mkdir /tmp/home2 > sudo vgscan > sudo vgchange -a y > sudo mount /dev/vg00/home /tmp/home2 </code> Now duplicate all content from the **"old" /home to the new one**. <code> > sudo rsync --progress /home/<username> /tmp/home2/ </code> This may take a while depending on the volume of the **/home** directory, but you'll end up having a copy of it on your future LMDE 2 hard disk. To deactivate a LVM2 physical volume and remove the drive <code> > sudo umount /tmp/home2 > sudo lvchange -an </dev/vg00> > sudo vgchange -an <vg00> </code> If you also want to remove the device maps you can use <code> > dmsetup ls > sudo dmsetup remove <name> </code> ---- ===== LMDE 2 Installation ===== ---- Reboot your machine with the USB key inserted an, during the boot process, press the keyboard key that gives access to the "boot device" and select your USB Key identifier (on my system the key is F7). This is for BIOS machines, for (U)EFI systems please read the previous section [[#install_from_usb_key|Install from USB Key]]. The "Live Key" should bring you to a Linux Mint Desktop. On the desktop is a Linux Mint icon, named **"Install Linux Mint"**, double click it and fill the installer's required information. When asked for the partition to use as installation target, select the primary partition that was previously created, in our example **/dev/sdb1** <code> sdb |-sdb1 ext4 18GB </code> <WRAP center round tip> As of this writing, a bug seems to sometimes appear, causing the **installer to get stuck after pressing the "Forward" icon when completing account information**. You can read [[http://forums.linuxmint.com/viewtopic.php?f=237&t=193899|this thread in the Linux Mint forum]] for more details. If you encounter this problem, what you have to do is **launch the installer from a terminal**, complete the information in the installer, press **//CTRL+C//** in the terminal when installer's stuck... and the process will go on as if nothing happened! To launch the installer from the terminal use: <code> > gksu live-installer </code> </WRAP> Once the install process has completed, reboot the machine once again, now selecting the Hard Drive where we newly installed LMDE 2. ---- ==== Switch /home ==== If you need to switch the **/home** partition, edit your **/etc/fstab** as [[#settings_and_personal_data| described earlier]]. ---- ==== Switch Repos ==== The defaults Linux Mint repos are pointing to the US servers, depending on your geographical location, it might be of interest to switch for better performing ones. To do this simply open the **Software Manager** app, then select the **Edit > Software Sources** menu. You'll see two main entries, one for **"Main (betsy)"**, one for **Base (jessie)**. They respectively point to http://packages.linuxmint.com and http://ftp.us.debian.org/debian. Click on each of these references and select the best performing mirror for your location. ---- ===== Clean Restore ===== ---- As explained at the beginning of this article, the objective here is **not to blindly re-install everything** that was present in a previous install. What we want is to operate a **selective reinstall** of only the pieces of software that we need in our new system. To do so, we'll **compare the fresh LMDE 2 installed packages list** with my **old system's installed packages list**. Considering we followed the previously described way of [[#installed_packages|exporting your system's installed packages, sources and keys]], we'll now compare those to the ones from our fresh LMDE 2. For the sake of clarity, let's say we have the following files structure where LMDE1 is our **"old"** install and LMDE2 is our **"fresh"** install: <code> LMDE1 |--sources.list.d | |--official-package-repositories.list | |--google-chrome.list | |--chrome-remote-desktop.list | |--additional-repositories.list |--sources.list |--Repo.keys |--Package.list LMDE2 |--sources.list.d | |--official-package-repositories.list |--sources.list |--Repo.keys |--Package.list </code> ---- ==== Restore "old" keys ==== To avoid the burden of restoring each repo keys individually, we'll add them from our LMDE 1 saved file: <code> > sudo apt-key add /home/<user>/Documents/LMDE1/Repo.keys </code> ---- ==== Install Meld as diff tool ==== MELD is a GUI for the **diff** tool , it's easily installed through the Software Manager app and will greatly help us spot the differences in ours lists. Go to: Menu → Software Manager → Search: “Meld” → Double click (line saying: Graphical tool to diff and merge files) → Install You've got Meld available in your “Applications / Programming” menu ! ---- ==== List Package Differences ==== Using this "diff" technique, here is the list of packages that were **not** present in the "fresh" install, indicating what should be re-installed. ---- ==== Desktop Environment ==== <code> parcellite lightweight GTK+ clipboard manager solaar Logitech Unifying Receiver peripherals manager for Linux synapse semantic file launcher </code> <color darkslateblue>**Re-installed**</color>: <color chocolate>**Parcellite**</color> Menu -> Software Manager -> Search: parcellite -> Install <color chocolate>**Synapse**</color> Download wheezy package: https://packages.debian.org/wheezy/amd64/synapse/download\\ Double click .deb -> Install\\ Additional packages: libgee2, libgtkhotkey1, libunique-1.0-0, libzeitgeist-1.0-1 <color chocolate>**f.lux**</color> See [[http://wiki.strategicz.com/lmde/doku.php?id=tricks:xflux&s[]=lux|this page of the wiki]] to install f.lux. <color chocolate>**Solaar**</color> <code> > sudo sh -c 'echo "deb http://pwr.github.io/Solaar/packages/ ./" >> /etc/apt/sources.list.d/solaar.list' > sudo sh -c 'echo "deb-src http://pwr.github.io/Solaar/packages/ ./" >> /etc/apt/sources.list.d/solaar.list' > sudo apt-get update > sudo apt-get install solaar </code> ---- ==== Applications ==== Having a separated **/opt** partition allows to access some custom installed applications. <code> rssowl Newsreader for RSS, RDF and Atom Newsfeeds terminator multiple GNOME terminals in one window viber Free Text & Calls. </code> <color chocolate>**IntelliJ IDEA**</color> Already in **/opt**. For this app to work, we need to switch from OpenJDK to Oracle Java7 JDK. This operation is detailed on [[http://wiki.strategicz.com/lmde/doku.php?id=applications:java:start|this page of the wiki]]. <color chocolate>**RSSOwl**</color> <code> > wget -q -O - http://archive.getdeb.net/getdeb-archive.key | sudo apt-key add - > sudo sh -c 'echo "deb http://archive.getdeb.net/ubuntu vivid-getdeb apps" >> /etc/apt/sources.list.d/getdeb.list' > sudo apt-get update > sudo apt-get install rssowl </code> <color chocolate>**Terminator**</color> Menu -> Software Manager -> Search: terminator -> Install\\ Menu -> System Settings -> Preferred Applications -> Terminal : Terminator <color chocolate>**Viber**</color> Download Viber for linux: http://www.viber.com/en/products/linux\\ Double click Viber.deb file -> Install Package <color blueviolet>**Audio**</color> <code> audacity fast, cross-platform audio editor audacity-data fast, cross-platform audio editor (data) spotify-client Spotify desktop client </code> <color darkslateblue>**Re-installed**</color>: <color chocolate>**Audacity**</color> Menu -> Software Manager -> Search: audacity -> Install <color chocolate>**Spotify**</color> Create source repo reference: **/etc/apt/sources.list.d/spotify.list** <code> # Spotify > sudo sh -c 'echo "deb http://repository.spotify.com testing non-free" >> /etc/apt/sources.list.d/spotify.list' </code> **note**: we are using the "testing" repo as, today (2015.07.23), the "stable" version of spotify-client is not compatible with Debian 8 Jessie. Update your packages list (key addition is not required if you already had it on your "old" system): <code> > sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 94558F59 > sudo apt-get update > sudo apt-get install spotify-client </code> Additional packages: libgconf2-4, libnspr4-0d ---- ==== Command Line Packages ==== <code> git fast, scalable, distributed revision control system git-man fast, scalable, distributed revision control system (manual pages) htop interactive processes viewer iftop displays bandwidth usage information on an network interface ranger File manager with an ncurses frontend written in Python </code> <color darkslateblue>**Re-installed**</color>: <color chocolate>**git**</color> <code> > sudo apt-get install git </code> <color chocolate>**Ranger**</color> <code> > sudo apt-get install ranger </code> <color chocolate>**htop**</color> <code> > sudo apt-get install htop </code> <color chocolate>**iftop**</color> <code> > sudo apt-get install iftop </code> ---- ==== Virtual Environment ==== <code> virtualbox-4.3 Oracle VM VirtualBox </code> <color darkslateblue>**Re-installed**</color>: <color chocolate>**VirtualBox 5**</color> Menu -> Software Manager -> Search : virtualbox -> Install\\ All VMs are available since they reside under **/home**