Zhanga Redux

The chronicles of the work and personal life of a boring software developer with an awesome dog.

Dual-booting Fedora 25 and Windows 10 on Thinkpad T560 with UEFI

Tuesday, February 28, 2017


I just bought a new Lenovo Thinkpad T560. It runs both Windows 10 and Fedora 25 quite well, but I had a lot of trouble getting the system to dual-boot. In hopes of helping somebody, here are the steps I had to take to get it to work. I'm assuming you're starting with a new laptop with Windows 10 installed, since that's what it comes with from the factory.

  1. Before doing anything else, open Power Options in Windows and turn off "fast startup" so that Windows fully shuts down.
  2. Open Disk Management and shrink the Windows partition, leaving enough space for the Linux installation. Luckily, the Windows 10 Disk Management tool makes this very easy and very fast — it wasn't so in the past!
  3. Head over to a different machine already running Fedora, and grab the netinst iso image. I got mine from here; see the links on the right-hand side of the page.
  4. Create USB boot media using livecd-iso-to-disk:
    # livecd-iso-to-disk Fedora-netinst-x86_64-25-1.3.iso /dev/sdb1
  5. The Thinkpad has UEFI Secure Boot enabled by default, which prevents it from booting off of this USB drive. Reboot the laptop and enter the Thinkpad setup utility by hitting F1 at the boot screen. Disable Secure Boot, and enable UEFI + Legacy boot. Save and exit the setup utility.
  6. At the boot screen again, hit F12 to enter the boot menu and choose the USB drive.
  7. Follow the Fedora installer like normal, taking care of course to only create partitions in the free space and not overwrite any existing partitions. Since this is a laptop with one drive, I didn't see any need for LVM and I chose the "standard" partitioning + encryption.
  8. After Fedora setup finished, I wasn't able to boot off the hard drive at all, not even into windows. So, boot off of the USB drive again. Choose the recovery option. It will find the new Fedora installation.
  9. chroot into your system:
    # chroot /mnt/sysimage
  10. Fedora's installer seems to have detected the system as a BIOS (not EFI) booting system. Let's fix that. Open parted:
    # parted /dev/sda
  11. At the parted prompt, toggle the pmbr_boot flag off:
    (parted) toggle disk_toggle pmbr_boot
    (parted) q
    You can verify this worked by issuing print. The "Disk Flags" list should not contain pmbr_boot. At this point, Windows should be bootable if you hit F12 at the startup screen and choose the Windows Boot Manager, but Fedora still won't boot.
  12. Locate your EFI partition, which is the one with type EFI System. Mine is /dev/sda1, and yours probably is too.
    # fdisk -l
    Disk /dev/sda: 477 GiB, 512110190592 bytes, 1000215216 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: gpt
    Disk identifier: (a UUID here)
    
    Device         Start        End   Sectors   Size Type
    /dev/sda1       2048     534527    532480   260M EFI System
    /dev/sda2     534528     567295     32768    16M Microsoft reserved
    /dev/sda3     567296  205367295 204800000  97.7G Microsoft basic data
    ...
  13. Get the EFI partition's UUID:
    # blkid /dev/sda1
  14. Add a line to /etc/fstab so it always gets mounted:
    UUID=abcd-0123 /boot/efi vfat defaults 0 2
  15. Mount it:
    # mount -a
    You should see some files in /boot/efi now.
  16. Install stuff needed for EFI boot. Remember, you are still booted into the USB recovery system, but these will install into the right place since the system is chroot'ed.
    # dnf install grub2-efi grub2-efi-modules shim
  17. Because the system is still booted off of the USB drive, grub2-mkconfig doesn't think the system is an EFI system at this point. We'll need to manually copy the GRUB config file:
    # cp /boot/grub2/grub.cfg /boot/efi/EFI/fedora/grub.cfg
  18. Open /boot/efi/EFI/fedora/grub.cfg (e.g. with vi) and search/replace linux16 and initrd16 with linuxefi and initrdefi.
  19. Now reboot and hit F12 at the boot screen to open the boot menu. Choose to boot off of the hard drive. You should get the GRUB menu and Fedora should boot!
  20. To be sure that this will survive kernel updates, once you've successfully booted into Fedora, try this and make sure it still boots:
    # grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
  21. Go back into the Thinkpad setup utility, switch it to boot from UEFI only, and re-enable Secure Boot.

At this point, Fedora should show up in the boot menu that appears when you hit F12, and it can be set as the default using the setup utility. To boot Windows, either choose the Windows Boot Manager from the boot menu, or choose Windows from the GRUB menu. Either way works.

Aside from this painful series of steps which almost made me want to give up and just wipe Windows off of it completely, the T560 actually works really well with Fedora. I guess Linux isn't what it was 15 years ago — wifi, audio, suspend, OpenGL, display brightness, everything just works fine out of the box. No screwing with wpa_supplicant, xorg.conf, or any of that! And the battery life on this machine is magnificent!

Tags: linux, fedora, installation | Posted at 15:23 | Comments (0)

Advance fee fraud targeted against local phtographers

Monday, March 9, 2015


I received a suspicious email a month ago via A Tale Ahead Photography's contact form:

From: Thomas Taylor <generalglaber@gmail.com>

Hello,

How are you doing ?,i will like to know your availability day in
Feb,2015 just 4 hours service,also i will need portrait work done after
the photography work is done after the event...............i will like
you to get back to me with your availability day in Feb,2015 it a
family reunion party..........i will like you to email back Asap 
.Do you accept credit card payment ?

Regard
Thomas T

It's not only distinctly un-American, but the grammar and syntax closely matches the style of emails from Nigerian princes. It's also worth noting that he filled in the "date of event" field on my contact form as "20 02 2015." In fact, I'm betting this is the side job of one such prince on days when he's away from his palace. Anyway, if you couldn't tell, I was getting set up for the classic fake check scam, except this time with a stolen credit card. What's neat in this particular case is that it's not just a generic scam, but rather, locally and specifically targeted against photographers like Annie & myself.

I thought I'd mess around a bit and string him along. Note that these aren't things I would say to a real client... I would never ask a client to reschedule a family reunion party for me, or matter-of-factly add 60% as a travel fee. But "Thomas" didn't mind! Read on...

Hi Thomas,

Thank you for contacting me. I am available for your family reunion 
party on most days this month. What day and time is your party and 
where is it located?

Thanks,
David
From: Thomas Taylor <generalglaber@gmail.com>

Yes good to hear this i am looking for Feb,20th but i don't know maybe
the date is open,if the date is open with you that would be okay,also
what is your accurate cost for 4 hours service?,and i can see you can 
handle my family reunion party photography service
Photo size i want,get back to me with the accurate cost.
4x6
5x7
8x10
11x14
16x20 and 7 portrait of my family,and here is the address of the venue
470 West 7th Street San Pedro, California 90731.
The event start 12noon.

Regard
Thomas

(The email above actually used four different fonts/sizes/colors. Copy/pasting from different templates?)

Hi Thomas,

The cost for four hours of photography is $1150. How many of each print
did you want? Our prints start at $1.50 for each 4x6". I am actually booked
on Feb 20, though. Any chance you could reschedule for another day?

Thanks,
David
From: Thomas Taylor <generalglaber@gmail.com>

Okay can i make it on the 21st? and i want at least two each of them so 
i want you to make it as fast as you can.....
thank you.
Hi Thomas,

Sure, the rate would be $1150 plus the 10 prints would would be a total of 
$125 extra. There is also a travel fee of $660 as your party will be 
approximately 6 hours from our studio. Would this total of $1935 work for you?

Thanks,
David
From: Thomas Taylor <generalglaber@gmail.com>

Yes good,
I am okay with the cost of $1935 does that include processing fee + tax 
cause i would need you to do me little favour cause i have a little issue 
with the payment of the venue the management of the venue for the event the 
manager told me he didn't have a credit card machine so i will need you to 
do me the favor to add his fee together with your fee he has to receive 
1900$  thru via western union for the booking of the venue so i will like 
you to get back to me with the total cost so that i can make the payment 
today or tomorrow.
Also , the reason why you are sending money via western union to the manager 
is because they have to receive payment upfront and their credit card machine 
is faulty at the moment.

Thanks

Ah ha! There it is.

Sure, that's fine. Can you provide me with the name and contact info of the venue?
From: Thomas Taylor <generalglaber@gmail.com>

Yes sure, i will give you the necessary info once you have run my credit 
card, and what type of credit card do you accept?
We accept all types of credit cards, but I need the contact info of the 
venue. Could you provide that information to me?
From: Thomas Taylor <generalglaber@gmail.com>

Here is the number of the venue 312 681 0885 ask of Terry Lisa thank you.

312 is a Chicago area code. I guess they can't afford to buy a local VOIP number?

Hi Thomas,

My phone is having issues and I can't dial long distance right now. The 
number you gave me is a 312 number. Does the venue have a local phone number?

Thanks,
David
From: Thomas Taylor <generalglaber@gmail.com>

Sorry for that, you can also reach them on there email terrysa001@gmail.com 
soget back to Asap.
Hi Thomas,

That email didn't work. Why doesn't the venue have a local phone number?

David
From: Thomas Taylor <generalglaber@gmail.com>

I don't know, heaven me i normally send them via email but for that phone i don't know....
So i want to know if you are ready for my card or not? because i want to make the 
payment so i will know i have payed 
upfront for the venue thank you david.
Sure, I am ready. I will try emailing again tomorrow. What is the credit card number?
From: Thomas Taylor <generalglaber@gmail.com>

I will like to know all the neccessary informations needed on my Credit Card...
Hi Thomas,

I just need the credit card number as well as whether it's Amex/Visa/Mastercard/etc.

Thanks,
David
From: Thomas Taylor <generalglaber@gmail.com>

CARD NUMBER:[redacted]

NAME ON CARD: Thomas Taylor

C V V CODE: [redacted]

BACK EXPIRATION DATE:[redacted]

TYPE OF CARD: MASTER CARD

BILLING POST CODE: [redacted, but in California]

 I will like you to charge on my card and get back to me with the approval 

code

 Thanks
Thanks Thomas. Would you like me to charge the amount in US dollars or Naira?

(Naira is the Nigerian currency.)

From: Thomas Taylor <generalglaber@gmail.com>

US dollars what do you mean Naira? who is Naira? kindly charge my card in 
US dollars and get back to me with the approval code..

I ran out of things to say at this point. I should note that I immediately contacted both stopit@mastercard.com and spoof@citicorp.com to report the Citi-issued Mastercard as stolen, but never heard back.

Tags: fraud, photography | Posted at 12:24 | Comments (4)

Changing the time zone in CentOS

Friday, June 6, 2014


Here's how to change the time zone in CentOS. This should work on both CentOS 5 and 6.

First, determine the correct timezone. You can do this using tzselect (which just outputs some text and doesn't save anything), or by looking in /usr/share/zoneinfo for the right file. I'm on Pacific time, so for me it would be America/Los_Angeles.

Now, back up your existing time zone file:

# mv /etc/localtime /etc/localtime.bak

Then symlink the desired zoneinfo file to localtime:

# ln -s /usr/share/zoneinfo/America/Los_Angeles /etc/localtime

Now if you run date, the appropriate time zone should be displayed. There is one more step though. Open up the file /etc/sysconfig/clock and edit it to reflect the appropriate zone. For example:

ZONE="America/Los_Angeles"

Without this change, /etc/localtime will get overwritten and will revert to the previous time zone after yum or rpm updates tzdata.

Tags: linux | Posted at 08:53 | Comments (0)

A Tale Ahead: Event and Wedding Photographers in Mountain View

Thursday, May 8, 2014


A Tale Ahead logo

Annie and I have decided to take our love of photography to the next level and make it a career and a way of life — so far it has been going really well, and we've gotten lots of absolutely glowing feedback!

We're currently covering weddings and events around the San Francisco Bay Area, from San Francisco to San Jose and also the East Bay. Check out our website at ataleahead.com!

Tags: photography | Posted at 09:53 | Comments (0)

Darktable + Nvidia OpenCL on Fedora

Thursday, March 20, 2014


Darktable's OpenCL isn't activated by default on Fedora when using the RPMFusion Nvidia drivers, apparently because Darktable can't find the library:

$ darktable -d opencl
(...)
[opencl_init] trying to load opencl library: '<system default>'
[opencl_init] could not find opencl runtime library 'libOpenCL'
[opencl_init] no working opencl library found. Continue with opencl disabled
[opencl_init] FINALLY: opencl is NOT AVAILABLE on this system.
[opencl_init] initial status of opencl enabled flag is OFF.

A quick, if hacky, solution is to just make a symlink to Darktable's directory so it can find the library:

# ln -s /usr/lib64/nvidia-304xx/libOpenCL.so.1 /usr/lib64/darktable/libOpenCL.so

(Obviously, adjust the paths based on your system.)

Tags: darktable, fedora | Posted at 01:35 | Comments (0)