{"@attributes":{"version":"2.0"},"channel":{"title":"Home on Jongyul Kim","link":"https:\/\/yulistic.github.io\/","description":"Recent content in Home on Jongyul Kim","generator":"Hugo","language":"en","lastBuildDate":"Fri, 20 Nov 2020 16:42:09 +0900","item":[{"title":"Reducing initrd size","link":"https:\/\/yulistic.github.io\/posts\/Reducing-initrd-size\/","pubDate":"Fri, 20 Nov 2020 16:42:09 +0900","guid":"https:\/\/yulistic.github.io\/posts\/Reducing-initrd-size\/","description":"<h1 id=\"problem\">Problem<\/h1>\n<p><code>\/boot<\/code> partition is too small to include a new initrd file. A Linux kernel installation from soruce code fails as below.<\/p>\n<pre tabindex=\"0\"><code>make -j`nproc`\nsudo make modules_install\nsudo make install &lt;-- it fails.\n<\/code><\/pre><p>Error messages are like below.<\/p>\n<pre tabindex=\"0\"><code>$ sudo make install\nsh .\/arch\/x86\/boot\/install.sh 5.3.11 arch\/x86\/boot\/bzImage \\\n System.map &#34;\/boot&#34;\nrun-parts: executing \/etc\/kernel\/postinst.d\/apt-auto-removal 5.3.11 \/boot\/vmlinuz-5.3.11\nrun-parts: executing \/etc\/kernel\/postinst.d\/initramfs-tools 5.3.11 \/boot\/vmlinuz-5.3.11\nupdate-initramfs: Generating \/boot\/initrd.img-5.3.11\nW: Possible missing firmware \/lib\/firmware\/ast_dp501_fw.bin for module ast\n\ngzip: stdout: No space left on device\nE: mkinitramfs failure cpio 141 gzip 1\nupdate-initramfs: failed for \/boot\/initrd.img-5.3.11 with 1.\nrun-parts: \/etc\/kernel\/postinst.d\/initramfs-tools exited with return code 1\narch\/x86\/boot\/Makefile:155: recipe for target &#39;install&#39; failed\nmake[1]: *** [install] Error 1\narch\/x86\/Makefile:293: recipe for target &#39;install&#39; failed\nmake: *** [install] Error 2\n<\/code><\/pre><h1 id=\"solution\">Solution<\/h1>\n<p>In Ubuntu 18.04, when kernel installation (<code>make install<\/code>) is failed.<\/p>"},{"title":"Debugging linux kernel with GDB and Qemu","link":"https:\/\/yulistic.github.io\/posts\/Debugging-linux-kernel-with-GDB-and-Qemu\/","pubDate":"Mon, 03 Dec 2018 20:40:14 +0900","guid":"https:\/\/yulistic.github.io\/posts\/Debugging-linux-kernel-with-GDB-and-Qemu\/","description":"<h1 id=\"intro\">Intro.<\/h1>\n<p>In this page I&rsquo;ll briefly introduce how to setup the environment for debugging a linux kernel with GDB and Qemu. The linux kernel runs on Qemu being virtualized.<\/p>\n<h1 id=\"process\">Process<\/h1>\n<ol>\n<li>Build the linux kernel that you want to debug.<\/li>\n<\/ol>\n<ul>\n<li>Check the configuration. Set <code>CONFIG_DEBUG_INFO=y<\/code> if not configured.<\/li>\n<li>You can build the kernel as deb or rpm to install on remote servers. Use commands: <code>make bindep-pkg -j4<\/code>, <code>make rpm-pkg -j4<\/code>. (In the case of deb, package <code>alien<\/code> is required. Install it with <code>apt<\/code>.)<\/li>\n<\/ul>\n<ol start=\"2\">\n<li>Install qemu. Refer to the <a href=\"https:\/\/www.qemu.org\/download\/#source\">official site<\/a>.<\/li>\n<\/ol>\n<ul>\n<li>Configure example: <code>.\/configure --target-list=x86_64-softmmu --enable-debug<\/code><\/li>\n<\/ul>\n<ol start=\"3\">\n<li>Install VM. (In this example, I installed ubuntu 16.04.)<\/li>\n<\/ol>\n<ul>\n<li>Download ubuntu iso file.<\/li>\n<li>Create qemu img named as &rsquo;test.qcow2&rsquo;: <code>.\/qemu-img create -f qcow2 test.qcow2 16G<\/code><\/li>\n<li>Boot VM with ubuntu iso image: <code>x86_64-softmmu\/qemu-system-x86_64 -m 2048 -enable-kvm -drive if=virtio,file=test.qcow2,cache=none -cdrom ubuntu-16.04.5.iso<\/code><\/li>\n<li>You can use <code>-vnc :1<\/code> option when accessing remotly through ssh.<\/li>\n<li>After installation, start VM without the <code>--cdrom ~~.iso<\/code> option.<\/li>\n<\/ul>\n<ol start=\"4\">\n<li>Replace the default kernel of VM with the version you built.<\/li>\n<\/ol>\n<ul>\n<li>Copy deb files to the VM and <code>sudo dpkg -i *.deb<\/code>.<\/li>\n<\/ul>\n<ol start=\"5\">\n<li>Add kernel parameter <code>nokaslr<\/code>. It is required to make breakpoint work correctly.<\/li>\n<\/ol>\n<ul>\n<li>Append <code>nokaslr<\/code> to the <code>GRUB_CMDLINE_LINUX_DEFAULT<\/code> in <code>\/etc\/default\/grub<\/code>.<\/li>\n<li>Execute <code>update-grub<\/code><\/li>\n<li>Restart the VM.<\/li>\n<\/ul>\n<ol start=\"5\">\n<li>Make symbol file from <code>vmlinux<\/code> kernel image. <code>vmlinux<\/code> file is located in the kernel source directory (generated after compilation).<\/li>\n<\/ol>\n<pre tabindex=\"0\"><code>objcopy --only-keep-debug vmlinux kernel.sym\n<\/code><\/pre><ol start=\"6\">\n<li>Run the qemu with the following options. <code>-S<\/code> stops qemu waiting gdb and <code>-s<\/code> makes gdb be able to attach through <code>localhost:1234<\/code>.<\/li>\n<\/ol>\n<pre tabindex=\"0\"><code># Example for qemu execution.\n.\/x86_64-softmmu\/qemu-system-x86_64 -s -S \\\n -m 2048 \\\n -chardev stdio,id=gdb0 \\\n -drive if=virtio,file=nfstest.qcow2,cache=none \\\n -device isa-debugcon,iobase=0x402,chardev=gdb0,id=d1 \\\n -vga virtio \\\n -enable-kvm \\\n -vnc :1\n<\/code><\/pre><p>The qemu stops waiting for the debugger to be attached.<\/p>"},{"title":"Mellanox Driver Installation","link":"https:\/\/yulistic.github.io\/posts\/Mellanox-Driver-Installation\/","pubDate":"Fri, 09 Nov 2018 15:08:31 +0900","guid":"https:\/\/yulistic.github.io\/posts\/Mellanox-Driver-Installation\/","description":"<p>Please refer to the <a href=\"https:\/\/docs.google.com\/document\/d\/e\/2PACX-1vQX2GJILFcqohCjjiYeHBpr_ri4cNl1JxWNuqLgmF14AKUUvQaGT7sfSqRjK_lWoudoqUgn2D6KUjrB\/pub\">link<\/a> that describes how to install Mellanox driver on Ubuntu.<\/p>"},{"title":"Display setting with i3wm","link":"https:\/\/yulistic.github.io\/posts\/Display-setting-with-i3wm\/","pubDate":"Wed, 03 Oct 2018 17:19:21 +0900","guid":"https:\/\/yulistic.github.io\/posts\/Display-setting-with-i3wm\/","description":"<h1 id=\"problem\">Problem<\/h1>\n<p>I&rsquo;m using two monitors, and one of them is pivoted. The default display setting manager of <code>Manjaro<\/code> has an option for rotating view, but it was not applied when using <code>i3wm<\/code>.<\/p>\n<h1 id=\"solution\">Solution<\/h1>\n<p><code>xrands<\/code> was used. In a terminal, you can get the information of currently connected monitors with <code>xrands<\/code> without any options. (The following example shows the monitor status after applying settings.)<\/p>\n<pre tabindex=\"0\"><code>$ xrands\nScreen 0: minimum 320 x 200, current 5040 x 2620, maximum 16384 x 16384\nDisplayPort-0 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 941mm x 529mm\n 3840x2160 60.00*+ 29.98 24.00 \n 2560x1440 59.95 \n 2048x1080 59.99 \n 1920x1080 60.00 60.00 50.00 59.94 \n 1920x1080i 60.00 50.00 59.94 \n 1680x1050 59.95 \n 1280x1024 75.02 60.02 \n 1440x900 74.98 59.89 \n 1280x960 60.00 \n 1280x720 60.00 59.94 \n 1024x768 75.03 60.00 \n 800x600 75.00 60.32 \n 720x576 50.00 \n 720x576i 50.00 \n 720x480 60.00 59.94 \n 720x480i 60.00 59.94 \n 640x480 75.00 72.81 66.67 60.00 59.94 \n 720x400 70.08 \nHDMI-A-2 disconnected (normal left inverted right x axis y axis)\nDVI-D-0 connected 1200x1920+3840+700 left (normal left inverted right x axis y axis) 518mm x 324mm\n 1920x1200 59.95*+\n 1920x1080 60.00 \n 1600x1200 60.00 \n 1680x1050 59.88 \n 1280x1024 60.02 \n 1280x960 60.00 \n 1024x768 60.00 \n 800x600 60.32 \n 640x480 59.94 \n 720x400 70.08 \nHDMI1 disconnected (normal left inverted right x axis y axis)\nHDMI2 disconnected (normal left inverted right x axis y axis)\nVGA1 disconnected (normal left inverted right x axis y axis)\nVIRTUAL1 disconnected (normal left inverted right x axis y axis)\n<\/code><\/pre><p>You can change the display settings with options. I wanted to rotate the second monitor left and modify its vertical position to be matched with the primary monitor.<\/p>"},{"title":"Which applications am I using in Linux","link":"https:\/\/yulistic.github.io\/posts\/Which-applications-am-I-using-in-Linux\/","pubDate":"Tue, 02 Oct 2018 23:23:18 +0900","guid":"https:\/\/yulistic.github.io\/posts\/Which-applications-am-I-using-in-Linux\/","description":"<p>Here are the lists of applications that I prefer.<\/p>\n<h1 id=\"common\">Common<\/h1>\n<ul>\n<li>git commit log visualization: <code>tig<\/code><\/li>\n<\/ul>\n<h1 id=\"manjaro\">Manjaro<\/h1>\n<ul>\n<li>screenshot(screen capture): <code>flameshot<\/code>, <code>gnome-screenshot<\/code><\/li>\n<li>tiling window manager: <code>i3wm<\/code><\/li>\n<li>pdf-viewer:\n<ul>\n<li><code>zathura<\/code> with <code>mupdf<\/code> plugin (vim-like shortcuts)<\/li>\n<li><code>evince<\/code> (<code>zathura<\/code> is convenient but insufficient sometimes.)<\/li>\n<\/ul>\n<\/li>\n<li>academic paper management: <code>mendeley<\/code> (easy to share, multi-platform)<\/li>\n<li>launcher: <code>Rofi<\/code><\/li>\n<\/ul>\n<p>The list will be updated continually.<\/p>"},{"title":"HiDPI configuration of i3-wm in ManjaroLinux","link":"https:\/\/yulistic.github.io\/posts\/HiDPI-configuration-of-i3-wm-in-ManjaroLinux\/","pubDate":"Mon, 20 Aug 2018 12:20:49 +0900","guid":"https:\/\/yulistic.github.io\/posts\/HiDPI-configuration-of-i3-wm-in-ManjaroLinux\/","description":"<h1 id=\"intro\">Intro.<\/h1>\n<p>I installed <code>i3<\/code> tiling window manager on <code>ManjaroLinux<\/code> (<code>xfce<\/code> edition). It was required to configure HiDPI manually.<br>\n<em>FYI, if you are going to install <code>ManjaroLinux<\/code> from scratch, you can install <code>Manjaro-i3<\/code> edition.<\/em><\/p>\n<h1 id=\"environment\">Environment<\/h1>\n<ul>\n<li><code>ManjaroLinux 17<\/code> (<code>xfce<\/code> was used previously)<\/li>\n<li><code>i3 4.15<\/code> (a.k.a. <code>i3-wm<\/code>)<\/li>\n<li>4k single monitor<\/li>\n<\/ul>\n<h1 id=\"problem\">Problem<\/h1>\n<p>To configure HiDPI (scaling) correctly in <code>i3-wm<\/code>.<\/p>\n<h1 id=\"solution\">Solution<\/h1>\n<ol>\n<li>\n<p>Write the following line to the file, <code>~\/.Xresources<\/code>. The dpi value can be adjusted as you want.<\/p>"},{"title":"Linux package recommendation - Manjaro (ArchLinux)","link":"https:\/\/yulistic.github.io\/posts\/Linux-package-recommendation-Manjaro-ArchLinux\/","pubDate":"Thu, 09 Aug 2018 12:56:42 +0900","guid":"https:\/\/yulistic.github.io\/posts\/Linux-package-recommendation-Manjaro-ArchLinux\/","description":"<h1 id=\"intro\">Intro.<\/h1>\n<ul>\n<li>This post recommends linux packages to <code>Manjaro<\/code> (<code>ArchLinux<\/code> base) distribution users.<\/li>\n<li>The content is based on my own experience of using the packages.<\/li>\n<li>The post will be updated continually.<\/li>\n<\/ul>\n<h1 id=\"format\">Format<\/h1>\n<ul>\n<li><code>package_name<\/code>: purpose_of_a_package (URL)<\/li>\n<li><em>any_comments<\/em><\/li>\n<\/ul>\n<h1 id=\"recommended-packages\">Recommended packages<\/h1>\n<ul>\n<li><code>ltunify-git<\/code>: Logitech receiver configuration (<a href=\"https:\/\/wiki.archlinux.org\/index.php\/Logitech_Unifying_Receiver\">archlinux wiki<\/a>)<\/li>\n<li><em><code>Solaar<\/code> produced an error when pairing device.<\/em><\/li>\n<\/ul>"},{"title":"Crop pdf keeping information and size","link":"https:\/\/yulistic.github.io\/posts\/Crop-pdf-keeping-information-and-size\/","pubDate":"Fri, 16 Mar 2018 15:02:43 +0900","guid":"https:\/\/yulistic.github.io\/posts\/Crop-pdf-keeping-information-and-size\/","description":"<h1 id=\"intro\">Intro.<\/h1>\n<p>I use Sony <code>DPT-RP1<\/code> (a.k.a. Digital Paper) as a paper reader.\nIn spite of the 13.3-inch-big screen of this device, large margins of pdf files made my eyes tired.\nI wanted to crop pdf files with the following requirements.<\/p>\n<ol>\n<li>Meta data like a title and authors should be maintained after being cropped.<\/li>\n<li>The size of cropped file should be reasonable (similar to the original file).<\/li>\n<li>Some components in the pdf file need to be cropped out. (For example, page numbers at the bottom.)<\/li>\n<\/ol>\n<p>I used <code>pdfcrop<\/code> tool before. It was easy to use and the output was acceptable but the size of file increases unexpectedly (e.g. 600KB to 5MB).<\/p>"},{"title":"Configuring dnsmasq only for DHCP server in Ubuntu PC","link":"https:\/\/yulistic.github.io\/posts\/Configuring-dnsmasq-only-for-DHCP-server-in-Ubuntu-PC\/","pubDate":"Wed, 07 Mar 2018 14:03:39 +0900","guid":"https:\/\/yulistic.github.io\/posts\/Configuring-dnsmasq-only-for-DHCP-server-in-Ubuntu-PC\/","description":"<h1 id=\"purpsose\">Purpsose<\/h1>\n<p>To configure my own DHCP server with <code>dnsmasq<\/code> on my Ubuntu PC. A commercial router is running together.<br>\n(Actually, I wanted to setup a PXE boot server with <code>dnsmasq<\/code>.)<\/p>\n<h1 id=\"environment\">Environment<\/h1>\n<ul>\n<li>A local LAN with the router that can disable its DHCP server functionality.<\/li>\n<li>Ubuntu 16.04 machine, <code>dnsmasq<\/code> installed.<\/li>\n<\/ul>\n<h1 id=\"solution\">Solution<\/h1>\n<ol>\n<li>\n<p>Install <code>dnsmasq<\/code>.<\/p>\n<pre tabindex=\"0\"><code>sudo apt install dnsmasq\n<\/code><\/pre><\/li>\n<li>\n<p>Configure <code>dnsmasq<\/code> by writing the default configuration file(<code>\/etc\/dnsmasq.conf<\/code>) or a new file in the path <code>\/etc\/dnsmasq.d\/<\/code>(For example, <code>\/etc\/dnsmasq.d\/dhcp.conf<\/code>). The default configuration file includes a neat and detailed description of each configuration parameter.<\/p>"},{"title":"Disable Ubuntu network configuration on startup (on boot)","link":"https:\/\/yulistic.github.io\/posts\/Disable-Ubuntu-network-configuration-on-startup-on-boot\/","pubDate":"Mon, 05 Mar 2018 20:40:48 +0900","guid":"https:\/\/yulistic.github.io\/posts\/Disable-Ubuntu-network-configuration-on-startup-on-boot\/","description":"<h1 id=\"intro\">Intro.<\/h1>\n<p>Ubuntu checks network configuration on its startup.\nAlthough this process passes quickly when the network connection is normal, it takes about <strong>5 minutes<\/strong> if there exist some problems in the configuration.<br>\nThere is a way to reduce the waiting time for the network configuration.<\/p>\n<h1 id=\"reference\">Reference<\/h1>\n<p><a href=\"https:\/\/ubuntuforums.org\/showthread.php?t=2323253&amp;p=13489687#post13489687\">Ubundtu forum answer<\/a><\/p>\n<h1 id=\"solution\">Solution<\/h1>\n<p>You can change the value of the waiting time.\nSet the value of <code>TimeoutStartSec<\/code> in the file, <code>\/lib\/systemd\/system\/networking.service<\/code>.<br>\nFor example,<\/p>"},{"title":"Replace HDD or SSD without the re-installation of Ubuntu","link":"https:\/\/yulistic.github.io\/posts\/Replace-HDD-or-SSD-without-the-re-installation-of-Ubuntu\/","pubDate":"Sun, 04 Mar 2018 15:14:55 +0900","guid":"https:\/\/yulistic.github.io\/posts\/Replace-HDD-or-SSD-without-the-re-installation-of-Ubuntu\/","description":"<h1 id=\"intro\">Intro.<\/h1>\n<p>I tried to replace the HDD in my Ubuntu PC with a new SSD for the performance improvement.<\/p>\n<h1 id=\"reference\">Reference<\/h1>\n<p>[1] <a href=\"https:\/\/askubuntu.com\/questions\/69283\/how-to-upgrade-my-hdd-and-keep-my-ubuntu-11-10-instalation\">Partition copy and paste with GParted in the Ubuntu Live USB<\/a><br>\n[2] <a href=\"https:\/\/askubuntu.com\/questions\/132079\/how-do-i-change-uuid-of-a-disk-to-whatever-i-want\">Change UUID of a partition<\/a><\/p>\n<h1 id=\"solution\">Solution<\/h1>\n<h4 id=\"_please-backup-your-data-before-starting-the-following-processes_\"><strong><em>Please backup your data before starting the following processes.<\/em><\/strong><\/h4>\n<p>It is assumed that you have already installed a new storage HW into your PC. Also, Ubuntu live USB is required.<\/p>\n<p><strong>1. Boot with the Ubuntu live USB.<\/strong><br>\n<br>\n<strong>2. Start <code>gparted<\/code> which is a partition editor program.<\/strong><br>\n<br>\n<strong>3. Select the original device in the top right corner.<\/strong><br>\n<a href=\"https:\/\/yulistic.github.io\/img\/2018-03-04\/select_original_device.png\"><img src=\"https:\/\/yulistic.github.io\/img\/2018-03-04\/select_original_device.png\" alt=\"Select original device\" title=\"Select original device.\"><\/a><\/p>"},{"title":"Kensington Slimblade button mapping on Linux","link":"https:\/\/yulistic.github.io\/posts\/Kensington-Slimblade-button-mapping-on-Linux\/","pubDate":"Thu, 18 Jan 2018 19:14:03 +0900","guid":"https:\/\/yulistic.github.io\/posts\/Kensington-Slimblade-button-mapping-on-Linux\/","description":"<h1 id=\"intro\">Intro.<\/h1>\n<p>There are four buttons on the <a href=\"https:\/\/www.kensington.com\/en\/ae\/4493\/k72327eu\/slimblade-trackball\">Kensington Slimblade<\/a> trackball mouse. I wanted to use the left-top button as <code>Backward<\/code> button and the right-top one as <code>Forward<\/code>.\nThere would be some other solutions for mouse button mapping, but I used <code>evdev<\/code> which operates on a <code>X11<\/code> layer.<\/p>\n<h1 id=\"solution\">Solution<\/h1>\n<p>Add following lines to the file: <code>\/usr\/share\/X11\/xorg.conf.d\/10-evdev.conf<\/code>.<\/p>\n<pre tabindex=\"0\"><code># Kensington Slimblade Settings\n\nSection &#34;InputClass&#34;\nIdentifier &#34;Kensington Slimblade Trackball&#34;\nMatchProduct &#34;Kensington Slimblade Trackball&#34;\nMatchIsPointer &#34;on&#34;\nMatchDevicePath &#34;\/dev\/input\/event*&#34;\nDriver &#34;evdev&#34;\n\nOption &#34;ButtonMapping&#34; &#34;1 8 3 4 5 6 7 9&#34;\n\nEndSection\n<\/code><\/pre><p>The key line is <code>Option &quot;ButtonMapping&quot; &quot;1 8 3 4 5 6 7 9 2&quot;<\/code>. The final string indecates that it will map the button <code>1<\/code> to <code>1<\/code>, <code>2<\/code> to <code>8<\/code>, <code>3<\/code> to <code>3<\/code>, and so on. (The position number to the described number).<\/p>"},{"title":"Linux keymapping with udev hwdb","link":"https:\/\/yulistic.github.io\/posts\/Linux-keymapping-with-udev-hwdb\/","pubDate":"Fri, 08 Dec 2017 12:11:47 +0900","guid":"https:\/\/yulistic.github.io\/posts\/Linux-keymapping-with-udev-hwdb\/","description":"<h1 id=\"intro\">Intro.<\/h1>\n<p>Key mappings can be changed using <code>xmodmap<\/code> in the <code>Xorg<\/code> layer.\nSometimes, it did not work well and mappings should be changed whenever my keyboard was changed.\nI wanted to change the mapping in the lower level.\n<code>udev<\/code> gave me a solution.<\/p>\n<p><strong><em>Reference:<\/em><\/strong> <br>\n<em><a href=\"https:\/\/wiki.archlinux.org\/index.php\/Map_scancodes_to_keycodes\">AtchLinux - Map scancodes to keycodes<\/a><\/em><\/p>\n<h1 id=\"1-find-your-device\">1. Find your device<\/h1>\n<p>First, you need to find your keyboard device. I used my usb keyboard(HHKB).<\/p>\n<p>With <code>cat \/proc\/bus\/input\/devices<\/code> command, you can confirm the information of your keyboard. In my case, the output was like below.<\/p>"},{"title":"Access to reserved memory in Linux kernel","link":"https:\/\/yulistic.github.io\/posts\/Access-to-reserved-memory-in-Linux-kernel\/","pubDate":"Wed, 06 Dec 2017 11:57:53 +0900","guid":"https:\/\/yulistic.github.io\/posts\/Access-to-reserved-memory-in-Linux-kernel\/","description":"<p>I would like to write a kernel module that uses some memory space for its own purpose.<\/p>\n<h1 id=\"reserve-memory-space-with-kernel-parameter\">Reserve memory space with kernel parameter<\/h1>\n<p>The memory space was reserved through linux kernel parameter by modifying <code>\/etc\/default\/grub<\/code> as below.<br>\n<code>sudo update-grub<\/code> and rebooting should follow to apply the modification.<br>\nThe reserved area was from <code>0x100000000<\/code> ~ <code>0x1ffffffff<\/code> (4GB~8GB).<\/p>\n<pre tabindex=\"0\"><code>GRUB_CMDLINE_LINUX_DEFAULT=&#34;memmap=4G\\\\\\$0x100000000&#34;\n<\/code><\/pre><p>After rebooting, you can confirm the reduced memory space with the command <code>cat \/proc\/meminfo<\/code>.<\/p>"},{"title":"Compiling kernel module only w\/o whole kernel compilation","link":"https:\/\/yulistic.github.io\/posts\/Compiling-kernel-module-only-w\/o-whole-kernel-compilation\/","pubDate":"Wed, 11 Oct 2017 14:43:18 +0900","guid":"https:\/\/yulistic.github.io\/posts\/Compiling-kernel-module-only-w\/o-whole-kernel-compilation\/","description":"<h1 id=\"intro\">Intro.<\/h1>\n<p>I was tried to modify a <code>kvm<\/code> kernel module for my research.\nBecause it was a built-in kernel module, I needed to build all the kernel source code after modifying <code>kvm<\/code> module which is located in path <code>arch\/x86\/kvm\/<\/code> from the linux kernel source root.<br>\nThe whole kernel compilation was a time consuming job, usually taking over 10 minutes even on my i7 desktop machine.\nI tried to find a way to compile modules only without the whole kernel compilation.\nThe solution and some troublesomes are described below.<\/p>"},{"title":"Exporting to cropped png image with transparent background in LibreOffice 5 Draw","link":"https:\/\/yulistic.github.io\/posts\/Exporting-to-cropped-png-image-with-transparent-background-in-LibreOffice-5-Draw\/","pubDate":"Thu, 31 Aug 2017 11:08:28 +0900","guid":"https:\/\/yulistic.github.io\/posts\/Exporting-to-cropped-png-image-with-transparent-background-in-LibreOffice-5-Draw\/","description":"<h1 id=\"problem\">Problem<\/h1>\n<p>I wanted to export a figure drawn with LibreOffice Draw to png file.\nThe two requirements below were my consideration.<\/p>\n<ol>\n<li>The exported image should have transparent background.<\/li>\n<li>The whitespace of page should be cropped out. Namely, the exported image should fit to the figure it contains.<\/li>\n<\/ol>\n<h1 id=\"solution\">Solution<\/h1>\n<p>Following instructions will lead you to export a right image.<\/p>\n<ol>\n<li>Check <code>Tools &gt; Options &gt; LibreOffice &gt; General &gt; Open\/Save Dialogs &gt; Use LibreOffice dialogs<\/code>.<\/li>\n<li>Select all your image. You can use shourtcut, <code>Ctrl+a<\/code>.<\/li>\n<li><code>File &gt; Export<\/code> will show you a dialog in which you can check <code>Selection<\/code>.<\/li>\n<li>Enter file name, select format as PNG, check <code>Selection<\/code> and click <code>Export...<\/code>.<\/li>\n<li><code>PNG Options<\/code> dialog will be displayed. Check <code>Save transparency<\/code> for transparent background.<\/li>\n<\/ol>\n<p>After clicking <code>OK<\/code>, you will get a png file as you want.<\/p>"},{"title":"TCP server\/client test in linux","link":"https:\/\/yulistic.github.io\/posts\/TCP-server\/client-test-in-linux\/","pubDate":"Thu, 10 Aug 2017 14:03:23 +0900","guid":"https:\/\/yulistic.github.io\/posts\/TCP-server\/client-test-in-linux\/","description":"<p><code>netcat<\/code> in Ubuntu, <code>nc<\/code> or <code>ncat<\/code> in Fedora, can be used to test a simple tcp(udp) server\/client connection.<\/p>\n<h3 id=\"example\">Example<\/h3>\n<p>In a server side, use following command to listen an incoming connection assuming that the port <code>3300<\/code> is used.<\/p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-shell\" data-lang=\"shell\"><span style=\"display:flex;\"><span>netcat -l -p <span style=\"color:#ae81ff\">3300<\/span>\n<\/span><\/span><\/code><\/pre><\/div><p>A client from another machine can make a connection to the server as below assuming that the ip address of server is <code>192.168.0.13<\/code>.<\/p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-shell\" data-lang=\"shell\"><span style=\"display:flex;\"><span>netcat 192.168.0.13 <span style=\"color:#ae81ff\">3300<\/span>\n<\/span><\/span><\/code><\/pre><\/div>"},{"title":"ctags tips","link":"https:\/\/yulistic.github.io\/posts\/ctags-tips\/","pubDate":"Mon, 08 May 2017 14:56:44 +0900","guid":"https:\/\/yulistic.github.io\/posts\/ctags-tips\/","description":"<ul>\n<li>Use <code>--exclude<\/code> option to exclude some directories or files from a <code>ctags<\/code> build.<\/li>\n<\/ul>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-bash\" data-lang=\"bash\"><span style=\"display:flex;\"><span>ctags -R --exclude<span style=\"color:#f92672\">=<\/span><span style=\"color:#e6db74\">&#34;build&#34;<\/span>\n<\/span><\/span><\/code><\/pre><\/div><ul>\n<li>Python could be traversed with the option <code>--python-kindes=-i<\/code><\/li>\n<\/ul>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-bash\" data-lang=\"bash\"><span style=\"display:flex;\"><span>ctags -R --python-kinds<span style=\"color:#f92672\">=<\/span>-i\n<\/span><\/span><\/code><\/pre><\/div>"},{"title":"Speccpu2006 FormatterToHTML.cpp memset was not declared error","link":"https:\/\/yulistic.github.io\/posts\/Speccpu2006-FormatterToHTML.cpp-memset-was-not-declared-error\/","pubDate":"Tue, 25 Apr 2017 00:03:27 +0900","guid":"https:\/\/yulistic.github.io\/posts\/Speccpu2006-FormatterToHTML.cpp-memset-was-not-declared-error\/","description":"<h1 id=\"problem\">Problem<\/h1>\n<p>Error occurs while compiling SPECCPU2006 benchmark, <code>483.xalancbmk<\/code> with following messages.<\/p>\n<pre tabindex=\"0\"><code>FormatterToHTML.cpp: In member function &#39;void xalanc_1_8::FormatterToHTML::initCharsMap()&#39;: \nFormatterToHTML.cpp:139:42: error: &#39;memset&#39; was not declared in this scope \nSpecmake: *** [FormatterToHTML.o] Error 1 \n<\/code><\/pre><p>The problem was because <code>string<\/code> library was not included in <code>FormatterToHTML.cpp<\/code> file.<\/p>\n<h2 id=\"solution\">Solution<\/h2>\n<p>One possible solution might be to add one line of code, <code>#include &lt;cstring&gt;<\/code> to the <code>FormatterToHTML.cpp<\/code> file.\nBut, SPECCPU2006 benchmark checks MD5 before the compilation, which prompts another error for the one-line modifying solution.<\/p>"},{"title":"Font-awesome CORS problem","link":"https:\/\/yulistic.github.io\/posts\/Font-awesome-CORS-problem\/","pubDate":"Fri, 15 Jul 2016 12:11:14 +0900","guid":"https:\/\/yulistic.github.io\/posts\/Font-awesome-CORS-problem\/","description":"<h1 id=\"problem\">Problem<\/h1>\n<p>Font-awesome icons were not displayed correctly when the website was hosted on GitLab page.<\/p>\n<p><a href=\"https:\/\/yulistic.github.io\/img\/fa_cors_problem.png\"><img src=\"https:\/\/yulistic.github.io\/img\/fa_cors_problem.png\" alt=\"Abnormal font-awesome icons\" title=\"Abnormal font-awesome icons\"><\/a>\n<em>Abnormal font-awesome icons<\/em><\/p>\n<p>You can figure out the reason of the problem with the console of your browser. The above figure is an example screenshot of my Chrome browser.<\/p>\n<p>The symptom was that the fa(font-awesome) icons were successfully loaded under the <code>https<\/code> connection, but it were not in the <code>http<\/code> connection.<\/p>"},{"title":"Autoload Cscope Database","link":"https:\/\/yulistic.github.io\/posts\/Autoload-Cscope-Database\/","pubDate":"Wed, 25 May 2016 10:58:46 +0900","guid":"https:\/\/yulistic.github.io\/posts\/Autoload-Cscope-Database\/","description":"<h1 id=\"problem\">Problem<\/h1>\n<p><code>Vim<\/code> could not find the <code>cscope<\/code> db file (<code>cscope.out<\/code>) from any subdirectories of the project root. Although I could use <code>cscope<\/code> by accessing all the files from the project root directory, some plugins (<code>SrcExpl<\/code>) set <code>autochdir<\/code> option to be on automatically. Once the option was turned on, I could not use <code>cscope<\/code> any more with the error message like &lsquo;Cannot find file.&rsquo;<\/p>\n<h1 id=\"solution\">Solution<\/h1>\n<ul>\n<li>Reference: <a href=\"http:\/\/vim.wikia.com\/wiki\/Autoloading_Cscope_Database\">Autoloading Cscope Database<\/a><\/li>\n<\/ul>\n<p>As mentioned in the reference site, the problem could be solved by adding the following script to the <code>~\/.vimrc<\/code> file which is the usual <code>vim<\/code> configuration file.<\/p>"},{"title":"[Gem5] CommMonitor is not defined","link":"https:\/\/yulistic.github.io\/posts\/Gem5-CommMonitor-is-not-defined\/","pubDate":"Thu, 12 May 2016 06:49:07 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Gem5-CommMonitor-is-not-defined\/","description":"<h1 id=\"1-problem\">1. Problem<\/h1>\n<p>While using CommMonitor in Gem5, the following error message prompted.<\/p>\n<pre><code>Traceback (most recent call last):\n File &quot;&lt;string&gt;&quot;, line 1, in &lt;module&gt;\n File &quot;\/home\/yulistic\/simulators\/gem5\/src\/python\/m5\/main.py&quot;, line 388, in main\n exec filecode in scope\n File &quot;configs\/example\/se_spec2006.py&quot;, line 285, in &lt;module&gt;\n system.monitor = CommMonitor(trace_file=trace_filename)\nNameError: name 'CommMonitor' is not defined\n<\/code><\/pre>\n<h1 id=\"2-cause\">2. Cause<\/h1>\n<p>The error was because of absence of <code>protobuf<\/code>. When <code>scon<\/code> tried to compile <code>CommMonitor<\/code>, it checks whether the protobuf is installed or not. If it is not installed, <code>scon<\/code> skip <code>CommMonitor<\/code> compilation, so we cannot use it.<\/p>"},{"title":"[Gem5] Make a new boot image","link":"https:\/\/yulistic.github.io\/posts\/Gem5-Make-a-new-boot-image\/","pubDate":"Thu, 12 May 2016 06:49:07 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Gem5-Make-a-new-boot-image\/","description":"<h1 id=\"0-intro\">0. Intro<\/h1>\n<p>I wanted to run a PARSEC\u00a03.0 benchmark on a Gem5 full system simulator.\nBecause the size of compiled PARSEC 3.0 benchmark was too large (about 10GB), the original full system disk image provided by Gem5 official site could not be used.<\/p>\n<p>At first, I tried to mount a secondary disk image that contains benchmark files after Gem5&rsquo;s full system was booted.\nI expected that, in this way, I could use the boot image (uploaded in the Gem5 official website) as it is mounting\/unmounting several other benchmark images as my wishes.<\/p>"},{"title":"[Linux] Login SSH without password input","link":"https:\/\/yulistic.github.io\/posts\/Linux-Login-SSH-without-password-input\/","pubDate":"Thu, 12 May 2016 06:49:07 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Linux-Login-SSH-without-password-input\/","description":"<h1 id=\"problem\">Problem<\/h1>\n<p>I want to access remote machine without typing password.<\/p>\n<h1 id=\"term\">Term.<\/h1>\n<p>Remote machine: target machine to which I want to access through <code>ssh<\/code>.<br>\nLocal machine: local machine from which I try to access to the remote machine.<\/p>\n<h1 id=\"solution\">Solution<\/h1>\n<p>In a word, We can do it by using\u00a0<strong>public-private key<\/strong>.<\/p>\n<ul>\n<li>Private key should be in local machine and it must not be exposed (keep it secret).<\/li>\n<li>Public key will be in remote machine not to prompt password in every ssh access.<\/li>\n<\/ul>\n<p><strong>1. Key generation in local machine<\/strong> (If you already have one, you don&rsquo;t need to regenerate key. Check <code>~\/.ssh\/id_rsa.pub<\/code>.)<br>\nUse <code>ssh-keygen<\/code>.<\/p>"},{"title":"Convert ext4 root(\/) partition to btrfs","link":"https:\/\/yulistic.github.io\/posts\/Convert-ext4-root\/-partition-to-btrfs\/","pubDate":"Thu, 12 May 2016 06:49:07 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Convert-ext4-root\/-partition-to-btrfs\/","description":"<h1 id=\"purpose\">Purpose<\/h1>\n<p>Let&rsquo;s make a root(<code>\/<\/code>) partition except <code>\/boot<\/code> directory be <code>btrfs<\/code>. <code>btrfs<\/code> supports a copy-on-write functionality.<\/p>\n<p>For the reason of excepting <code>\/boot<\/code> partition, the Ubuntu document warns against including <em>Grub<\/em> into <code>btrfs<\/code> partition.<\/p>\n<blockquote>\n<p>&hellip;\u00a0As of 11.04, it is possible to use only btrfs file systems with the caveat that grub &lsquo;MUST NOT&rsquo; be installed to the boot sector of the btrfs volume containing \/boot.<br>\n(<a href=\"https:\/\/help.ubuntu.com\/community\/btrfs\">link<\/a>)<\/p>\n<\/blockquote>\n<p>As a result, I decided to make the <code>\/boot<\/code> partition be separated from the root(<code>\/<\/code>) partition.<\/p>"},{"title":"Create boot partition after installation","link":"https:\/\/yulistic.github.io\/posts\/Create-boot-partition-after-installation\/","pubDate":"Thu, 12 May 2016 06:49:07 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Create-boot-partition-after-installation\/","description":"<h1 id=\"problem\">Problem<\/h1>\n<p>Make a boot partition be separated from the root partition without re-installation.<\/p>\n<h1 id=\"environment\">Environment<\/h1>\n<ul>\n<li>\n<p>Ubuntu 10.04.04<\/p>\n<\/li>\n<li>\n<p>Live USB (Burned with <em>UNetbootin<\/em>)<\/p>\n<\/li>\n<li>\n<p>Grub legacy<\/p>\n<\/li>\n<\/ul>\n<h1 id=\"solution\">Solution<\/h1>\n<p>Basically refer to <a href=\"https:\/\/help.ubuntu.com\/community\/CreateBootPartitionAfterInstall\">link<\/a>. The site mentions two methods: <em>Easy way<\/em> and <em>Manual way<\/em>. Firstly, I tried <em>Easy way<\/em>\u00a0but failed because of some problems in\u00a0a tool,\u00a0<code>boot-repair<\/code>. I recommend to follow\u00a0<em>Manual way<\/em> and the following explanations are also related to that way.<\/p>\n<ol>\n<li>\n<p>Boot Ubuntu with the Live USB or Live CD.<\/p>"},{"title":"Downgrade Grub2 to Grub Legacy","link":"https:\/\/yulistic.github.io\/posts\/Downgrade-Grub2-to-Grub-Legacy\/","pubDate":"Thu, 12 May 2016 06:49:07 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Downgrade-Grub2-to-Grub-Legacy\/","description":"<h2 id=\"1-backup-for-grub2-settings\">1. Backup for Grub2 settings<\/h2>\n<pre><code>$ sudo cp \/etc\/default\/grub \/etc\/default\/grub.old\n$ sudo cp -R \/etc\/grub.d \/etc\/grub.d.old\n$ sudo cp -R \/boot\/grub \/boot\/grub.old\n<\/code><\/pre>\n<h2 id=\"2-remove-grub2\">2. Remove Grub2<\/h2>\n<pre><code>$ sudo apt-get purge grub2 grub-pc\n<\/code><\/pre>\n<h2 id=\"3-install-grub-legacy\">3. Install Grub Legacy<\/h2>\n<pre><code>$ sudo apt-get install grub\n<\/code><\/pre>\n<h2 id=\"4-update-grub-settings\">4. Update Grub settings<\/h2>\n<pre><code>$ sudo update-grub\n$ sudo grub-install \/dev\/sdX\n<\/code><\/pre>\n<p>*sdX should be matched your machine state. Usually, it is <code>\/dev\/sda<\/code>.<\/p>\n<h2 id=\"5-block-the-update-of-grub-legacy\">5. Block the update of Grub Legacy<\/h2>\n<pre><code>$ echo \u201cgrub hold\u201d | sudo dpkg --set-selections\n<\/code><\/pre>"},{"title":"Get Linux Kernel source code","link":"https:\/\/yulistic.github.io\/posts\/Get-Linux-Kernel-source-code\/","pubDate":"Thu, 12 May 2016 06:49:07 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Get-Linux-Kernel-source-code\/","description":"<p>To get the source code of current Linux kernel,<\/p>\n<pre><code>$ sudo apt-get source linux-image-$(uname -r)\n<\/code><\/pre>\n<p>Reference:\u00a0<a href=\"https:\/\/wiki.ubuntu.com\/Kernel\/BuildYourOwnKernel\">Ubuntu wiki: BuildYourOwnKernel<\/a><\/p>"},{"title":"Install btrfs-prog on Ubuntu 10.04 from source","link":"https:\/\/yulistic.github.io\/posts\/Install-btrfs-prog-on-Ubuntu-10.04-from-source\/","pubDate":"Thu, 12 May 2016 06:49:07 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Install-btrfs-prog-on-Ubuntu-10.04-from-source\/","description":"<h1 id=\"1-purpose\">1. Purpose<\/h1>\n<p>To install btrfs-prog on Ubuntu 10.04 from the source.<\/p>\n<h1 id=\"2-reference\">2. Reference<\/h1>\n<p>btrfs wiki page:\u00a0<a href=\"https:\/\/btrfs.wiki.kernel.org\/index.php\/Btrfs_source_repositories\">wiki<\/a><\/p>\n<h1 id=\"3-problems\">3. Problems<\/h1>\n<h2 id=\"31-install-_autogen_-for-autogensh\">3.1. Install <em>autogen<\/em> for <code>.\/autogen.sh<\/code><\/h2>\n<pre><code>sudo apt-get install autoconf\n<\/code><\/pre>\n<h2 id=\"_32-e_rrors-during-configure\">_3.2. E_rrors during <code>.\/configure<\/code><\/h2>\n<p>Error message of <em>&ldquo;No package found&rdquo;<\/em> errors are like below.<\/p>\n<pre><code>...\nchecking for mv... \/bin\/mv\nchecking for a sed that does not truncate output... \/bin\/sed\nchecking for EXT2FS... configure: error: Package requirements (ext2fs) were not met:\n\nNo package 'ext2fs' found\n\nConsider adjusting the PKG_CONFIG_PATH environment variable if you\ninstalled software in a non-standard prefix.\n\nAlternatively, you may set the environment variables EXT2FS_CFLAGS\nand EXT2FS_LIBS to avoid the need to call pkg-config.\nSee the pkg-config man page for more details.\n<\/code><\/pre>\n<ul>\n<li><\/li>\n<\/ul>\n<h3 id=\"no-package-_ext2fs_-found\">No package <em>&rsquo;ext2fs&rsquo;<\/em> found<\/h3>\n<p>Install <em>&rsquo;e2fslibs-dev&rsquo;<\/em>.<\/p>"},{"title":"Install Gollum wiki on CentOS 6.5","link":"https:\/\/yulistic.github.io\/posts\/Install-Gollum-wiki-on-CentOS-6.5\/","pubDate":"Thu, 12 May 2016 06:49:07 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Install-Gollum-wiki-on-CentOS-6.5\/","description":"<h1 id=\"intro\">Intro.<\/h1>\n<p>I decided to use <a href=\"https:\/\/github.com\/gollum\/gollum\/wiki\">gollum<\/a> wiki, because of following reasons.<\/p>\n<ul>\n<li>\n<p>Bitbucket wiki supports poor searching functionality.<\/p>\n<\/li>\n<li>\n<p>Gollum gives us a nice view and a convenient navigating functionality.<\/p>\n<\/li>\n<li>\n<p>Gollum is easy to install, and light-weight.<\/p>\n<\/li>\n<li>\n<p>Gollum supports pure markdown language.<\/p>\n<\/li>\n<\/ul>\n<p>I tried to install gollum in two different system: Ubuntu 14.04 and CentOS 6.5. There was no special problem when installing in Ubuntu, but there were in CentOS.<\/p>\n<h1 id=\"basic-installation\">Basic installation<\/h1>\n<h2 id=\"rvm\">rvm<\/h2>\n<p><em>rvm<\/em> is <a href=\"https:\/\/rvm.io\/\">Ruby Version Manager<\/a> that is a ruby manager maintained by third party. Because <em>yum<\/em> in CentOS 6.5 supports only 1.8.x version <em>ruby<\/em>, we need another way to install higher version of <em>ruby<\/em>. Basically, you can follow the instructions mentioned on the <em>rvm<\/em> hompage.<\/p>"},{"title":"libtool version mismatch error","link":"https:\/\/yulistic.github.io\/posts\/libtool-version-mismatch-error\/","pubDate":"Thu, 12 May 2016 06:49:07 +0000","guid":"https:\/\/yulistic.github.io\/posts\/libtool-version-mismatch-error\/","description":"<h1 id=\"problem\">Problem<\/h1>\n<p>libtool version mismatch error<\/p>\n<h1 id=\"log-message\">Log message<\/h1>\n<pre><code>libtool: Version mismatch error. This is libtool 2.4.4, but the\nlibtool: definition of this LT_INIT comes from libtool 2.4.2.\nlibtool: You should recreate aclocal.m4 with macros from libtool 2.4.4\nlibtool: and run autoconf again.\n<\/code><\/pre>\n<h1 id=\"solution\">\u00a0Solution<\/h1>\n<pre><code>autoreconf --force --install\n.\/configure\nmake\n<\/code><\/pre>"},{"title":"Linux shell prompt decoration using fish shell","link":"https:\/\/yulistic.github.io\/posts\/Linux-shell-prompt-decoration-using-fish-shell\/","pubDate":"Thu, 12 May 2016 06:49:07 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Linux-shell-prompt-decoration-using-fish-shell\/","description":"<h1 id=\"prerequisite\">Prerequisite<\/h1>\n<ul>\n<li>Install **fish shell\u00a0**(<a href=\"http:\/\/fishshell.com\/\">site<\/a>\u00a0and\u00a0<a href=\"https:\/\/github.com\/fish-shell\/fish-shell\">git<\/a>)<\/li>\n<\/ul>\n<h1 id=\"method-1\">Method 1<\/h1>\n<ol>\n<li>\n<p>\u00a0Install\u00a0<strong>oh-my-shell<\/strong> (<a href=\"https:\/\/github.com\/oh-my-fish\">git<\/a>).<\/p>\n<\/li>\n<li>\n<p>Change theme. Agnoster and Bobthefish themes are quite useful.<\/p>\n<\/li>\n<\/ol>\n<h1 id=\"method-2\">Method 2<\/h1>\n<ol>\n<li>Install Powerline (<a href=\"https:\/\/github.com\/powerline\/powerline\">git<\/a>). It requires fish shell version over 2.1.<\/li>\n<\/ol>"},{"title":"Live Bootable USB for Ubuntu 10.04.04","link":"https:\/\/yulistic.github.io\/posts\/Live-Bootable-USB-for-Ubuntu-10.04.04\/","pubDate":"Thu, 12 May 2016 06:49:07 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Live-Bootable-USB-for-Ubuntu-10.04.04\/","description":"<h1 id=\"problem\">Problem<\/h1>\n<p>I made a Live bootable USB of Ubuntu 10.04.04 with <em>Startup Disk Creator<\/em> which was basically installed on my Mint 17 (distro. based on Ubuntu 14.04) machine.<\/p>\n<p>But, booting was failed. It was waiting permanently on startup screen.<\/p>\n<p>[caption id=&quot;&quot; align=&ldquo;aligncenter&rdquo; width=&ldquo;1024&rdquo;]<img src=\"http:\/\/1.bp.blogspot.com\/_4B7ZWQHqMpk\/TMcEEwqP88I\/AAAAAAAAAEc\/uVUzQyc32Ik\/s1600\/boot1.png\" alt=\"\"> Waiting permanently on startup screen[\/caption]<\/p>\n<h1 id=\"solution\">Solution<\/h1>\n<p>I used another program <em>UNetbootin<\/em>\u00a0which successfully booted Ubuntu 10.04.04. You can find the tool <a href=\"https:\/\/unetbootin.github.io\/\">here<\/a>.<\/p>\n<h1 id=\"tip\">Tip<\/h1>\n<p>To make a live USB that can maintain some changes, set &ldquo;<em>Space used to preserve files across reboots (Ubuntu only)<\/em>&rdquo; as\u00a0a\u00a0positive value.<\/p>"},{"title":"Numix theme desktop icon font color","link":"https:\/\/yulistic.github.io\/posts\/Numix-theme-desktop-icon-font-color\/","pubDate":"Thu, 12 May 2016 06:49:07 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Numix-theme-desktop-icon-font-color\/","description":"<h1 id=\"problem\">Problem<\/h1>\n<p>With\u00a0Numix theme, desktop icon font color is dark. It is hard to read icon label\u00a0when I changed my desktop background (wallpaper) to a dark\u00a0one.<\/p>\n<h1 id=\"solution\">Solution<\/h1>\n<p>Refer to the <a href=\"http:\/\/forums.linuxmint.com\/viewtopic.php?f=42&amp;t=118989#p868071\">link<\/a>.<\/p>\n<p>Briefly speaking, change the file, &ldquo;<code>\/usr\/share\/themes\/Numix\/gtk-3.0\/apps\/gnome-applications.css<\/code>&rdquo;, as below.<\/p>\n<p>Replace &ldquo;<code>nautilus<\/code>&rdquo; with &ldquo;<code>nemo<\/code>&rdquo;.<\/p>"},{"title":"Overlayroot not working with custom kernel","link":"https:\/\/yulistic.github.io\/posts\/Overlayroot-not-working-with-custom-kernel\/","pubDate":"Thu, 12 May 2016 06:49:07 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Overlayroot-not-working-with-custom-kernel\/","description":"<h1 id=\"problem\">Problem<\/h1>\n<p>Overlayroot is not working with my custom kernel.<\/p>\n<p>You can figure out the error message from \/dev\/.initramfs\/overlayroot.log<\/p>\n<pre><code>$ cat \/dev\/.initramfs\/overlayroot.log\nbuiltin set cfgdisk='disabled'\nswap=0 recurse=0 debug=0 dir=\/overlay\ndevice= mode=tmpfs\n[warning]: configuring overlayroot with mode=tmpfs opts='recurse=0' per \/dev\/disk\/by-uuid\/54bccbc9-642f-432a-ac58-e131b14babb9\/etc\/overlayroot.conf\n[failure]: missing kernel module overlayfs\n<\/code><\/pre>\n<h1 id=\"solution\">Solution<\/h1>\n<p>Replace the name of kernel module: &ldquo;overlayfs&rdquo; to &ldquo;overlay&rdquo;.<\/p>\n<p>You need to modify two script files: <strong><code>\/usr\/share\/initramfs-tools\/hooks\/overlayroot<\/code><\/strong> and <strong><code>\/usr\/share\/initramfs-tools\/scripts\/init-bottom\/overlayroot<\/code><\/strong>.<\/p>\n<p>Refer to the following two scripts.<\/p>\n<h2 id=\"overlayroot-hooksscript\">Overlayroot hooks\u00a0script<\/h2>\n<p>It will replace the file:\u00a0<strong><code>\/usr\/share\/initramfs-tools\/hooks\/overlayroot<\/code><\/strong>.<\/p>"},{"title":"Send email after job finished (including few lines of console results)","link":"https:\/\/yulistic.github.io\/posts\/Send-email-after-job-finished-including-few-lines-of-console-results\/","pubDate":"Thu, 12 May 2016 06:49:07 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Send-email-after-job-finished-including-few-lines-of-console-results\/","description":"<h1 id=\"purpose\">Purpose<\/h1>\n<p>Want to be notified remotely when a job has been finished (through email).<\/p>\n<p>Also, include a few lines of final results (<code>stdout<\/code> a.k.a. console output) as the content of the email.<\/p>\n<h1 id=\"solution\">Solution<\/h1>\n<p>Use <code>tee<\/code> command to make additional file with the content of <code>stdout<\/code>.<\/p>\n<p>Use <code>tail<\/code> command to get a few lines of the last printed output after the job finished.<\/p>\n<pre><code>&lt;job command&gt; | tee &lt;console output file path&gt;; tail &lt;console output file path&gt; | mail -s &quot;&lt;mail title&gt;&quot; &lt;mail address&gt;\n<\/code><\/pre>\n<p>For example,<\/p>"},{"title":"ssh login without typing password","link":"https:\/\/yulistic.github.io\/posts\/ssh-login-without-typing-password\/","pubDate":"Thu, 12 May 2016 06:49:07 +0000","guid":"https:\/\/yulistic.github.io\/posts\/ssh-login-without-typing-password\/","description":"<h1 id=\"purpose\">Purpose<\/h1>\n<p>Let&rsquo;s do ssh login without being prompted to enter the password.<\/p>\n<ol>\n<li>From client, generate key with the following command.<\/li>\n<\/ol>\n<pre><code>$ ssh-keygen\n<\/code><\/pre>\n<p>Type <code>enter<\/code>, without setting a passphrase.<\/p>\n<ol start=\"2\">\n<li>\n<p>From client, copy the generated key to the server.<\/p>\n<p>$ ssh-copy-id <a href=\"mailto:yulistic@123.456.789.123\">yulistic@123.456.789.123<\/a><\/p>\n<\/li>\n<li>\n<p>Login to the server without entering your password.<\/p>\n<\/li>\n<\/ol>\n<h1 id=\"tip\">Tip.<\/h1>\n<p>You can copy public key to remote server manually.<\/p>\n<p>In the local machine, by appending the key of local machine (content of file:\u00a0<em><strong>~\/.ssh\/id_rsa.pub<\/strong><\/em>) to the file in the remote machine (<strong><em>~\/.ssh\/authorized_keys<\/em><\/strong>).<\/p>"},{"title":"tmux commands","link":"https:\/\/yulistic.github.io\/posts\/tmux-commands\/","pubDate":"Thu, 12 May 2016 06:49:07 +0000","guid":"https:\/\/yulistic.github.io\/posts\/tmux-commands\/","description":"<p><code>tmux<\/code> is a useful tool:<\/p>\n<ul>\n<li>\n<p>to maintain sessions when ssh connection failed.<\/p>\n<\/li>\n<li>\n<p>to make\u00a0windows (tabs) and control them only with keyboard.<\/p>\n<\/li>\n<li>\n<p>to make panes (split windows vertically or horizontally&hellip;) and control them only with keyboard.<\/p>\n<\/li>\n<li>\n<p>and so on&hellip;<\/p>\n<\/li>\n<\/ul>\n<h1 id=\"basic-tmux-commands\">Basic <code>tmux<\/code> commands<\/h1>\n<p>From out of the <code>tmux<\/code> session.<\/p>\n<ul>\n<li>\n<p>tmux new -s [session_name] : make a new session.<\/p>\n<\/li>\n<li>\n<p>tmux ls : list current session list.<\/p>\n<\/li>\n<\/ul>\n<p>Inside of the\u00a0<code>tmux<\/code> session. You should press Ctrl and b simultaneously for [Ctrl+b]. And the other keys follow.<\/p>"},{"title":"[Linux Mint 17] Install NVIDIA driver","link":"https:\/\/yulistic.github.io\/posts\/Linux-Mint-17-Install-NVIDIA-driver\/","pubDate":"Thu, 12 May 2016 06:49:06 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Linux-Mint-17-Install-NVIDIA-driver\/","description":"<p>Refer to the following link.\nMy installation succeeded with second method in the site:&quot;<strong>FOR BINARY DRIVERS<\/strong>&quot; <a href=\"http:\/\/ubuntuforums.org\/showthread.php?t=2081649\">link<\/a><\/p>\n<p>&mdash;&ndash; Appended, 2015-10-15<\/p>\n<ol>\n<li>\n<p>Blacklist <em>nouveau<\/em>. Refer to <a href=\"http:\/\/askubuntu.com\/a\/481540\">link<\/a>.<\/p>\n<\/li>\n<li>\n<p>Download the proper Nvidia driver corresponding to your GPU.<\/p>\n<\/li>\n<li>\n<p>Install the driver.<\/p>\n<\/li>\n<\/ol>\n<ol>\n<li>Press <em>[Ctrl]+[Alt]+[F1]<\/em> and go to the terminal mode.<\/li>\n<li><code>sudo service mdm stop<\/code> (in the case of mint linux).<\/li>\n<li>Install Nvidia driver (sudo sh NVIDIA~~~).<\/li>\n<\/ol>\n<ol start=\"4\">\n<li>Reboot.<\/li>\n<\/ol>"},{"title":"[Mint Linux 17] Korean key problem","link":"https:\/\/yulistic.github.io\/posts\/Mint-Linux-17-Korean-key-problem\/","pubDate":"Thu, 12 May 2016 06:49:06 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Mint-Linux-17-Korean-key-problem\/","description":"<p>Mint Linux 17 \ud55c\uc601\ud0a4 \ubb38\uc81c\nMint Linux 17 Korean\/English convert key problem.<\/p>\n<p>\uc2dc\uc2a4\ud15c \ud658\uacbd: Mint Linux 17 64bit\nEnvironment: Mint Linux 17 64bit<\/p>\n<p>\ubb38\uc81c: ibus, nabi \ub4f1\uc744 \uc774\uc6a9\ud574 \ubcf4\uc558\uc9c0\ub9cc, Chromium \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c\uc758 \ud55c\uae00 \ubb38\uc81c\ub97c \ud574\uacb0\ud558\uae30 \uae4c\ub2e4\ub85c\uc6c0.\nProblem: I cannot use &ldquo;Korean\/English convert key&rdquo; in Chromium browser on Mint Linux 17.<\/p>\n<p>\ud574\uacb0: \uacb0\uad6d uim-byeoru \uc785\ub825\uae30\ub97c \uc774\uc6a9\ud558\uc5ec \ubb38\uc81c \ud574\uacb0.\nSolution: Use &ldquo;uim-byeoru&rdquo; input method.<\/p>\n<p>\uc790\uc138\ud55c \uc0ac\ud56d:\nDetails:<\/p>\n<ol>\n<li>\n<p>Software Manager\ub97c \uc774\uc6a9\ud558\ub358\uc9c0(\ucd94\ucc9c), apt install uim-byeoru\ub97c \ud130\ubbf8\ub110\uc5d0\uc11c \uc785\ub825\ud558\uc5ec uim-byeoru\ub97c \uc124\uce58.\nInstall uim-byeoru with Software Manager or typing &ldquo;apt install uim-byeoru&rdquo; at Terminal. (It is recommended to use Software Manager.)<\/p>"},{"title":"[Mint Linux] English system locale\uc5d0\uc11c \uc640\uc778\uc73c\ub85c \uc2e4\ud589\ud55c \uce74\uce74\uc624\ud1a1 \ud55c\uae00 \uae68\uc9d0\ubb38\uc81c (KakaoTalk cannot display Korean characters in English system locale.)","link":"https:\/\/yulistic.github.io\/posts\/Mint-Linux-English-system-locale%EC%97%90%EC%84%9C-%EC%99%80%EC%9D%B8%EC%9C%BC%EB%A1%9C-%EC%8B%A4%ED%96%89%ED%95%9C-%EC%B9%B4%EC%B9%B4%EC%98%A4%ED%86%A1-%ED%95%9C%EA%B8%80-%EA%B9%A8%EC%A7%90%EB%AC%B8%EC%A0%9C-KakaoTalk-cannot-display-Korean-characters-in-English-system-locale.\/","pubDate":"Thu, 12 May 2016 06:49:06 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Mint-Linux-English-system-locale%EC%97%90%EC%84%9C-%EC%99%80%EC%9D%B8%EC%9C%BC%EB%A1%9C-%EC%8B%A4%ED%96%89%ED%95%9C-%EC%B9%B4%EC%B9%B4%EC%98%A4%ED%86%A1-%ED%95%9C%EA%B8%80-%EA%B9%A8%EC%A7%90%EB%AC%B8%EC%A0%9C-KakaoTalk-cannot-display-Korean-characters-in-English-system-locale.\/","description":"<h1 id=\"problem\">Problem<\/h1>\n<p>\uc2dc\uc2a4\ud15c \ub85c\ucf00\uc77c(language)\ub97c English\ub85c \uc124\uc815\ud588\uc744 \ub54c \uc640\uc778\uc73c\ub85c \uc2e4\ud589 \uc911\uc778 \uce74\uce74\uc624\ud1a1 PC\ubc84\uc804\uc5d0\uc11c \ud55c\uae00\uc774 \uae68\uc9c0\ub294 \ubb38\uc81c \ubc1c\uc0dd. (\u3141\u3141\u3141\u3141\u3141\u3141\u3141 \uc774\ub7f0 \uc2dd\uc73c\ub85c \uae68\uc9d0)<br>\nI prefer to set my desktop system language(locale) as English. When the system locacle is changed to English, <code>KakaoTalk<\/code> messenger running on <code>Wine<\/code> does not display Korean correctly. It shows &lsquo;\u3141\u3141\u3141\u3141\u3141\u3141&rsquo; instead of Korean characters. (There is no problem when the system language is set to Korean.)<\/p>\n<h1 id=\"environment\">Environment<\/h1>\n<p>Mint Linux 17, Wine 1.7, System language (locale) = English<\/p>"},{"title":"[Mint Linux] Register a new program to Alt+f2","link":"https:\/\/yulistic.github.io\/posts\/Mint-Linux-Register-a-new-program-to-Alt-f2\/","pubDate":"Thu, 12 May 2016 06:49:06 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Mint-Linux-Register-a-new-program-to-Alt-f2\/","description":"<p>Environment: Mint Linux 17 64bit (on X86 machine)<\/p>\n<p>Problem: I want to register a new program - locally built so it was not registered to the alt+f2 automatically - to alt+f2 command.<\/p>\n<p>Solution: Symbolic link was used.\u00a0(<strong>-s<\/strong> option is make link to be symbolic.)<\/p>\n<p>$ sudo ln -s \/your\/program\/execution\/path \/usr\/bin\/commandname<\/p>\n<p>Example: I want to register mendeley program (paper management program) as alt+f2 \u00a0command.<\/p>\n<p>$ sudo ln -s \/home\/yulistic\/programs\/mendeley\/bin\/mendeleydesktop \/usr\/bin\/mendeley<\/p>"},{"title":"[Mint Linux] Samba client connection to Windows samba server","link":"https:\/\/yulistic.github.io\/posts\/Mint-Linux-Samba-client-connection-to-Windows-samba-server\/","pubDate":"Thu, 12 May 2016 06:49:06 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Mint-Linux-Samba-client-connection-to-Windows-samba-server\/","description":"<p>Problem: I want to connect to samba server (windows machine) from linux machine.<\/p>\n<p>Solution: use <em>smbclient<\/em>.<\/p>\n<p><strong>1. Check the available samba folder in samba server machine.<\/strong><\/p>\n<p><em>smbclient -L \/\/<\/em>[url of samba server or ip address]<em>\/<\/em><\/p>\n<p>Find the <em>sharename<\/em> that is used as samba share folder.<\/p>\n<p><strong>2. Connect to the samba folder.<\/strong><\/p>\n<p><em>smbclient \/\/<\/em>[url of samba server or ip address]<em>\/<\/em>[shared folder]_ -U [<em>username<\/em>]_<\/p>\n<p>If connected successfully, terminal shows as below.<\/p>\n<hr>\n<h2 id=\"_smb-_\"><em>Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.4.7]<\/em>\n<em>smb: &gt;<\/em><\/h2>\n<p><strong>3. If you want to mount remote samba folder to local directory, use following command.<\/strong><\/p>"},{"title":"[ODROID-XU] install kernel modules","link":"https:\/\/yulistic.github.io\/posts\/ODROID-XU-install-kernel-modules\/","pubDate":"Thu, 12 May 2016 06:49:06 +0000","guid":"https:\/\/yulistic.github.io\/posts\/ODROID-XU-install-kernel-modules\/","description":"<p>When you rebuild your own kernel and upload it on your ODROID-XU board with Android system, the kernel modules should be uploaded too.<\/p>\n<p>If not, the following message will be prompted in booting time.<\/p>\n<p><em>smsc95xx: version magic &lsquo;3.4.5 SMP preempt mod_unload ARMv7 p2v8 &rsquo; should be &lsquo;3.4.5-00019-gc81eeaf-dirty SMP preempt mod_unload ARMv7 p2v8 &lsquo;<\/em><\/p>\n<hr>\n<p>[Problem]<\/p>\n<p>The situation is that your kernel (including kernel modules) has been compiled and uploaded to your ODROID-XU successfully. But, the error message is prompted in booting time (like above) and network cannot be configured displaying message like:\n<em>init: no such service &lsquo;dhcpcd<\/em>&rsquo;_<\/p>"},{"title":"[Progress #1] Flicker: A Dynamically Adaptive Architecture for Power Limited Multicore Systems","link":"https:\/\/yulistic.github.io\/posts\/Progress-%231-Flicker-A-Dynamically-Adaptive-Architecture-for-Power-Limited-Multicore-Systems\/","pubDate":"Thu, 12 May 2016 06:49:06 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Progress-%231-Flicker-A-Dynamically-Adaptive-Architecture-for-Power-Limited-Multicore-Systems\/","description":"<ol start=\"0\">\n<li>\n<p>Environment\nFuture general purpose multicore system.<\/p>\n<\/li>\n<li>\n<p>Contribution\nIt suggests a new approach that efficiently finds a near-global optimum configuration of finer-grained power gating (unit of <em>lane<\/em>, explained below) without requiring offline training, microarchitecture state, or foreknowledge of the workload. Due to \u00a0its purely online black-box approach, the Flicker control algorithm (global optimization algorithm) adapts on-the-fly to different machine microarchitectures and to machines that run a wide variety of applications.<\/p>\n<\/li>\n<li>\n<p>Problem to solve\nThe paper deals with the problem of optimizing the performance of general-purpose multicore architectures that must efficiently adapt to varying, and at times highly stringent, power allocations.<\/p>"},{"title":"[Wordpress] FTP credential error","link":"https:\/\/yulistic.github.io\/posts\/Wordpress-FTP-credential-error\/","pubDate":"Thu, 12 May 2016 06:49:06 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Wordpress-FTP-credential-error\/","description":"<p>**In a word\n**Check whether the owner of wordpress directory is the same as that of web server process (<em>i.e.<\/em> apache or nginx).<\/p>\n<p><strong>Problem<\/strong>\nI cannot update plugins or theme in wordpress because of FTP credential failure.<\/p>\n<p><strong>Reason<\/strong>\nIt might occur because of diverse reasons. In my case, it is because of a permission mismatch between the owner of nginx service (substitute of apache) and the owner of wordpress directory.\nWhen you are trying to update wordpress stubs in administrator web page, <em>nginx (or apache\/daemon if you use apache),<\/em>\u00a0the owner of the process tries to change files in wordpress directory. But, the owner, <em>nginx<\/em>, does not have a permission to change the wordpress directory so the problem occurs.<\/p>"},{"title":"404 not found permalink error (wordpress with nginx)","link":"https:\/\/yulistic.github.io\/posts\/404-not-found-permalink-error-wordpress-with-nginx\/","pubDate":"Thu, 12 May 2016 06:49:06 +0000","guid":"https:\/\/yulistic.github.io\/posts\/404-not-found-permalink-error-wordpress-with-nginx\/","description":"<h1 id=\"problem\">Problem<\/h1>\n<p>I cannot see my posts. It shows &lsquo;404 not found&rsquo;.<\/p>\n<h1 id=\"solution\">Solution<\/h1>\n<p>Add <code>try_files $uri $uri\/ \/index.php;<\/code> to the <code>location \/<\/code> block in the nginx configuration file.<\/p>\n<p>Refer to the following example.<\/p>\n<pre tabindex=\"0\"><code>========================== \/etc\/nginx\/conf.d\/default.conf =======\n...\nlocation \/ {\nroot \/usr\/share\/nginx\/html\/yulistic;\nindex index.php index.html index.htm;\ntry_files $uri $uri\/ \/index.php;\n}\n...\n===========================================================\n<\/code><\/pre>"},{"title":"Firewall setting (Nginx does not show index.html)","link":"https:\/\/yulistic.github.io\/posts\/Firewall-setting-Nginx-does-not-show-index.html\/","pubDate":"Thu, 12 May 2016 06:49:06 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Firewall-setting-Nginx-does-not-show-index.html\/","description":"<p><strong>Environment<\/strong>: CentOS 6.5, nginx 1.5.9<\/p>\n<p><strong>Problem<\/strong>: <em>Nginx<\/em> is installed through <em>yum<\/em> but does not show <em>index.html<\/em>(the first page) in the web browser.<\/p>\n<p><strong>Reason of the problem<\/strong>: The problem was the firewall. You can check it from \/etc\/sysconfig\/iptables. Refer to the following solution.<\/p>\n<p><strong>Solution<\/strong>:<\/p>\n<ol>\n<li>\n<p>Open \u00a0<em>\/etc\/sysconfig\/iptables<\/em>.<\/p>\n<\/li>\n<li>\n<p>Append\u00a0<em>-A INPUT -m state &ndash;state NEW -m tcp -p tcp &ndash;dport 80 -j ACCEPT<\/em><\/p>\n<\/li>\n<li>\n<p><em>sudo service iptables restart<\/em><\/p>\n<\/li>\n<\/ol>"},{"title":"Install Wordpress with MySQL, PHP and Nginx.","link":"https:\/\/yulistic.github.io\/posts\/Install-Wordpress-with-MySQL-PHP-and-Nginx.\/","pubDate":"Thu, 12 May 2016 06:49:06 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Install-Wordpress-with-MySQL-PHP-and-Nginx.\/","description":"<p>Problem: To install <em>wordpress<\/em> based on the <em>mysql<\/em> database system and <em>nginx<\/em> web server.<\/p>\n<p><strong>1. Install MySQL.<\/strong><\/p>\n<p>1-1. If there exists any package installed already, erase it.<\/p>\n<p>1-2. Download all the mysql packages from the site.<\/p>\n<p>1-3. Install all the downloaded packages through the following order.<\/p>\n<ul>\n<li>\n<p>MySQL-client<\/p>\n<\/li>\n<li>\n<p>MySQL-devel<\/p>\n<\/li>\n<li>\n<p>MySQL-embedded<\/p>\n<\/li>\n<li>\n<p>MySQL-server<\/p>\n<\/li>\n<li>\n<p>MySQL-shared<\/p>\n<\/li>\n<li>\n<p>MySQL-shared-compat<\/p>\n<\/li>\n<li>\n<p>MySQL-test<\/p>\n<\/li>\n<\/ul>\n<p>**2. Install Nginx\n**<\/p>\n<p>2-1. Add repository<\/p>\n<p>Add a new file &ldquo;nginx.repo&rdquo; to the &ldquo;<em>\/etc\/yum.repos.d\/<\/em>&rdquo; with the following contents.<\/p>"},{"title":"Key mechanism: symmetric key and asymmetric key","link":"https:\/\/yulistic.github.io\/posts\/Key-mechanism-symmetric-key-and-asymmetric-key\/","pubDate":"Thu, 12 May 2016 06:49:06 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Key-mechanism-symmetric-key-and-asymmetric-key\/","description":"<p>There are two key mechanisms: symmetric and asymmetric key mechanisms.<\/p>\n<p>A symmetric key mechanism is not used recently because of difficulty of managing key. The key which\u00a0is shared between two (or several) parties should be kept as secret.<\/p>\n<p>An asymmetric key mechanism is also known as public-private key.\u00a0 A private key is kept as secret by the key owner whereas a public key is known to anyone. Two use cases are considered for this mechanism.<\/p>"},{"title":"Linux page table naming (PGD, PUD, PMD, PTE)","link":"https:\/\/yulistic.github.io\/posts\/Linux-page-table-naming-PGD-PUD-PMD-PTE\/","pubDate":"Thu, 12 May 2016 06:49:06 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Linux-page-table-naming-PGD-PUD-PMD-PTE\/","description":"<p>PGD -&gt; PUD -&gt; PMD -&gt; PTE<\/p>\n<p>PGD: Page Global Directory\nPUD: Page Upper Directory\nPMD: Page Mid-level Directory\nPTE: page table entry<\/p>"},{"title":"Mint Linux Bluetooth headphone connection problem","link":"https:\/\/yulistic.github.io\/posts\/Mint-Linux-Bluetooth-headphone-connection-problem\/","pubDate":"Thu, 12 May 2016 06:49:06 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Mint-Linux-Bluetooth-headphone-connection-problem\/","description":"<p>Problem: Bluetooth headphone (LG HBS730 in my case) has been connected but does not displayed in the sound output device list.<\/p>\n<p>Environment: Mint Linux 17<\/p>\n<p>Solution: Refer to following links.<\/p>\n<p><a href=\"http:\/\/askubuntu.com\/a\/223203\/318963\">http:\/\/askubuntu.com\/a\/223203\/318963<\/a>\n<a href=\"http:\/\/blog.gadr.me\/quick-tip-bluetooth-a2dp-on-linux-mint-17-qiana-mate\/\">http:\/\/blog.gadr.me\/quick-tip-bluetooth-a2dp-on-linux-mint-17-qiana-mate\/<\/a><\/p>"},{"title":"Nonce","link":"https:\/\/yulistic.github.io\/posts\/Nonce\/","pubDate":"Thu, 12 May 2016 06:49:06 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Nonce\/","description":"<p>Nonce is used to check data is the most recent one.<\/p>\n<p>Nonce is a randomly generated number when there is some modification.<\/p>\n<p><img src=\"http:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/4\/4f\/Nonce-cnonce-uml.svg\/345px-Nonce-cnonce-uml.svg.png\" alt=\"File:Nonce-cnonce-uml.svg\"><\/p>\n<p>The figure above (reference: wikipedia) describes an example of usage of nonce in client-server authentication. As seen in the figure, there are two nonces: a server nonce and a client nonce ( = cnonce).<\/p>"},{"title":"PARSEC 3.0 installation issues","link":"https:\/\/yulistic.github.io\/posts\/PARSEC-3.0-installation-issues\/","pubDate":"Thu, 12 May 2016 06:49:06 +0000","guid":"https:\/\/yulistic.github.io\/posts\/PARSEC-3.0-installation-issues\/","description":"<h1 id=\"0-refer-to-official-site\">0. Refer to official site<\/h1>\n<p>(<a href=\"http:\/\/parsec.cs.princeton.edu\/parsec3-doc.htm#simulation\">http:\/\/parsec.cs.princeton.edu\/parsec3-doc.htm#simulation<\/a>)<\/p>\n<h1 id=\"1-prerequisites-refer-to-requirements-section-in-download-page\">1. Prerequisites: refer to requirements section in download page<\/h1>\n<p>(<a href=\"http:\/\/parsec.cs.princeton.edu\/download.htm\">http:\/\/parsec.cs.princeton.edu\/download.htm<\/a>)<\/p>\n<h1 id=\"2-correct-smimepoderror\">2. correct <code>smime.pod<\/code>\u00a0error<\/h1>\n<p>Error message is like below.<\/p>\n<pre tabindex=\"0\"><code> installing man1\/smime.1\n smime.pod around line 272: Expected text after =item, not a number\n smime.pod around line 276: Expected text after =item, not a number\n smime.pod around line 280: Expected text after =item, not a number\n smime.pod around line 285: Expected text after =item, not a number\n smime.pod around line 289: Expected text after =item, not a number\n POD document had syntax errors at \/usr\/bin\/pod2man line 71.\n make: *** [install_docs] Error 255\n<\/code><\/pre><p>Modify files:\n<code>[parsec_root_dir]\/pkgs\/libs\/ssl\/src\/doc\/apps\/smime.pod [parsec_root_dir]\/pkgs\/libs\/ssl\/src\/doc\/ssl\/SSL_COMP_add_compression_method.pod<\/code>\n&hellip;\nand so on.<\/p>"},{"title":"Remove partition and format SD Card in Mint Linux","link":"https:\/\/yulistic.github.io\/posts\/Remove-partition-and-format-SD-Card-in-Mint-Linux\/","pubDate":"Thu, 12 May 2016 06:49:06 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Remove-partition-and-format-SD-Card-in-Mint-Linux\/","description":"<ol>\n<li>Find the name of the SD card. (ex&gt; <strong><em>\/dev\/sdd<\/em> in my case. You must enter your own SD card device name.<\/strong>)<\/li>\n<\/ol>\n<h1 id=\"sudo-fdisk--l\">sudo fdisk -l<\/h1>\n<p>If SD card is already mounted, unmount it.<\/p>\n<h1 id=\"sudo-umount-_devsdd_\">sudo umount <strong><em>[\/dev\/sdd]<\/em><\/strong><\/h1>\n<ol start=\"2\">\n<li>Remove partition.<\/li>\n<\/ol>\n<h1 id=\"sudo-fdisk-_devsdd_\">sudo fdisk <em><strong>[\/dev\/sdd]<\/strong><\/em><\/h1>\n<p>You can delete partition by entering d. (Refer to following info.)<\/p>\n<p>m: help.\nd: delete partition.\np: print current partition information.\nn: make new partition.\nw: save and exit.<\/p>\n<ol start=\"3\">\n<li>Format SD card.<\/li>\n<\/ol>\n<h1 id=\"sudo-mkfsext2-_devsdd_\">sudo mkfs.ext2 <strong><em>[\/dev\/sdd]<\/em><\/strong><\/h1>\n<ol start=\"4\">\n<li>Mount your SD card.<\/li>\n<\/ol>\n<h1 id=\"sudo-mount-_devsdd_-mount-directory\">sudo mount <em><strong>[\/dev\/sdd]<\/strong><\/em> [mount directory]<\/h1>"},{"title":"Scalability-Based Manycore Partitioning","link":"https:\/\/yulistic.github.io\/posts\/Scalability-Based-Manycore-Partitioning\/","pubDate":"Thu, 12 May 2016 06:49:06 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Scalability-Based-Manycore-Partitioning\/","description":"<ol start=\"0\">\n<li>\n<p>Environment\nMany-core system with multiple multi-threaded applications.<\/p>\n<\/li>\n<li>\n<p>Contribution<\/p>\n<\/li>\n<\/ol>\n<p>The paper suggests SBMP (Scalability-Based Manycore Partitioning) scheduler which considers the scalability of each application and allocates the best number of CPU cores in accordance with the scalability. SBMP scheduler outperformed the traditional Linux CPU scheduler (kernel version of 2.6.37.6) about 11%.<\/p>\n<ol start=\"2\">\n<li>\n<p>Problem to solve\nThe system is anticipated to get more number of cores. As the number of cores increases, multiple applications will run on the system simultaneously. Also, there are multiple threads in one application. On the other hand, all the applications have different scalability but\u00a0the traditional OS (Linux) CPU scheduler does not consider the scalability of each application, even though scalability of an application is one of the critical features to the CPU cores scheduling.\u00a0With the trends of multiple multi-threaded applications running on one machine, the scalability of applications gets more important, so a new CPU scheduler that considers the scalability of applications is required.<\/p>"},{"title":"Three components of the security: Confidentiality, Integrity, and Availability","link":"https:\/\/yulistic.github.io\/posts\/Three-components-of-the-security-Confidentiality-Integrity-and-Availability\/","pubDate":"Thu, 12 May 2016 06:49:06 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Three-components-of-the-security-Confidentiality-Integrity-and-Availability\/","description":"<p>The followings are the three components of the security.<\/p>\n<ul>\n<li>Confidentiality<\/li>\n<\/ul>\n<p>To \u00a0conserve the secrecy of the contents. The \u00a0contents should not be shown to an unauthorized user. Ex&gt; Encryption<\/p>\n<ul>\n<li>Integrity<\/li>\n<\/ul>\n<p>To prevent the contents of data from being modified or deleted by an unauthorized user. Ex&gt; checksum<\/p>\n<ul>\n<li>Availability<\/li>\n<\/ul>\n<p>Data should be read or used only by the authorized users with the owner&rsquo;s intention. In other words, the data should be available to an unauthorized users only when the owner allows it.<\/p>"},{"title":"Vim tips","link":"https:\/\/yulistic.github.io\/posts\/Vim-tips\/","pubDate":"Thu, 12 May 2016 06:49:06 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Vim-tips\/","description":"<ol>\n<li>divide window<\/li>\n<\/ol>\n<pre><code>* [Ctrl] + w \u00a0v =&gt; split vertically.\n\n\n* [Ctrl] + w \u00a0s =&gt; split horizontally.\n\n\n* :vs filename =&gt; split vertically and open file.\n\n\n* :sp filename =&gt; split horizontally and ope file.\n\n\n* :qa close all windows.\n\n\n* (in shell) vim -o txt.a txt.b =&gt; open txt.a and txt.b in two windows split horizontally.\n\n\n* (in shell) vim -O txt.a txt.b =&gt; open txt.a and txt.b in two windows split vertically.\n<\/code><\/pre>\n<ol start=\"2\">\n<li>tab<\/li>\n<\/ol>\n<pre><code>* :tabnew filename =&gt; open file in a new tab.\n\n\n* [Ctrl] + [Page Up\/Down] =&gt; move to the other tab.\n\n\n* :tabn =&gt; go to next tab.\n\n\n* :tabp =&gt; go to previous tab.\n\n\n* (in shell) vim -p txt.a txt.b txt.c =&gt; open txt.a, txt.b, and txt.c\u00a0in three respective tabs.\n<\/code><\/pre>\n<ol start=\"3\">\n<li>go to file<\/li>\n<\/ol>\n<pre><code>* gf =&gt; go to file under the cursor.\n\n\n* [Ctrl] + ^ =&gt; go back to the previous file.\n\n\n* :find filename =&gt; find and go to the file.\n\n\n* :tabf filename =&gt; find and open the file in a new tab.\n<\/code><\/pre>\n<ol start=\"4\">\n<li>Plug-ins<\/li>\n<\/ol>\n<pre><code>1. Auto Close([link](http:\/\/www.vim.org\/scripts\/script.php?script_id=1849)): Insert parentheses automatically.\n\n\n * Install: Download autoclose.vim from web site and save into ~\/.vim\/plugin directory.\n\n\n\n\n\n2. NERD commenter([link](http:\/\/www.vim.org\/scripts\/script.php?script_id=1218)): Toggle comment.\n\n\n * Install: Download file, unzip and move it to ~\/.vim directory(~\/.vim\/doc and ~\/.vim\/plugin).\n\n\n * Usage:\n\n\n 1. Select lines with visual block\n\n\n 2. [] + c + [Space] : Toggle comment.\n\n\n 3. [] + c +\u00a0[a] : Change comment style (e.g. &quot;\/* *\/&quot; &lt;-&gt; &quot;\/\/&quot;)\n<\/code><\/pre>"},{"title":"Virtualbox USB connection","link":"https:\/\/yulistic.github.io\/posts\/Virtualbox-USB-connection\/","pubDate":"Thu, 12 May 2016 06:49:06 +0000","guid":"https:\/\/yulistic.github.io\/posts\/Virtualbox-USB-connection\/","description":"<p>Problem: Virtualbox does not recognize host&rsquo;s USBs. Being different from the below screenshot, none of USBs\u00a0was recognized.<\/p>\n<p>Environment: Mint Linux 17, Virtualbox 4.3.10, Virtualbox Guest Additions 4.3.10 (not 4.3.14)<\/p>\n<p>[caption id=&ldquo;attachment_128&rdquo; align=&ldquo;aligncenter&rdquo; width=&ldquo;854&rdquo;]<a href=\"http:\/\/yulistic.com\/wp-content\/uploads\/2014\/08\/Selection_017.png\"><img src=\"http:\/\/yulistic.com\/wp-content\/uploads\/2014\/08\/Selection_017.png\" alt=\"Selection_017\"><\/a> After the problem had been fixed, the list of connected USBs were displayed. There was no USB detected before the problem had been solved.[\/caption]<\/p>\n<p>Solution: Add current user to the\u00a0<em>vboxusers<\/em>.<\/p>\n<p>Ex&gt;\u00a0<em>$ adduser <em>[user name]<\/em> vboxusers<\/em><\/p>"},{"title":"Publications","link":"https:\/\/yulistic.github.io\/publications\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/yulistic.github.io\/publications\/","description":"<style>\n.container {\n max-width: 1200px !important; \/* 1600px * 1.5 = 2400px *\/\n}\n.pubs { \n display: grid; \n grid-template-columns: 140px 1fr; \n gap: 0.8rem 1rem; \n margin-bottom: 2rem;\n}\n.pubs .venue { \n font-weight: 600; \n white-space: nowrap; \n text-align: right;\n padding-right: 0.5rem;\n}\n.pubs .title { \n line-height: 1.1;\n font-family: \"Times New Roman\", Times, serif;\n}\n.pubs .title {\n color: #555555;\n}\n.pubs .title a {\n color: #dc3545;\n}\n.pubs .title a {\n font-family: \"Times New Roman\", Times, serif !important;\n}\n.pubs .title strong {\n font-family: \"Times New Roman\", Times, serif !important;\n font-weight: normal;\n text-decoration: underline;\n color: #555555 !important;\n}\n.award {\n background: #e7f3ff;\n color: #084298;\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 0.9em;\n font-weight: 600;\n}\n.pubs .title em {\n color: #7d7590;\n font-weight: normal;\n font-style: normal;\n font-family: \"Times New Roman\", Times, serif;\n font-size: 0.9em;\n}\n.talk-link {\n font-family: \"Times New Roman\", serif !important;\n font-size: 0.9em !important;\n font-weight: normal !important;\n color: #6f42c1 !important;\n text-decoration: underline !important;\n text-decoration-style: dotted !important;\n}\n.talk-link:hover {\n text-decoration-style: solid !important;\n}\n<\/style>\n<h2 id=\"publications\">Publications<\/h2>\n<h3 id=\"conference-and-workshop-papers\">Conference and Workshop Papers<\/h3>\n<div class=\"pubs\">\n <div class=\"venue\">EuroSys 2026<\/div>\n <div class=\"title\"><a href=\"\">CofferOS: Hardening OS-level Virtualization with Rust<\/a><br\/>Minkyu Jung, Chanshin Kwak, Junho Ahn, Sunho Park, Changjun Lee, <strong>Jongyul Kim<\/strong>, Jeehoon Kang, and Youngjin Kwon<\/div>\n <div class=\"venue\">OSDI 2025<\/div>\n <div class=\"title\"><a href=\"https:\/\/www.usenix.org\/conference\/osdi25\/presentation\/chai-siyuan\">EMT: An OS Framework for New Memory Translation Architectures<\/a><br\/>Siyuan Chai, Jiyuan Zhang, <strong>Jongyul Kim<\/strong>, Alan Wang, Fan Chung, Jovan Stojkovic, Weiwei Jia, Dimitrios Skarlatos, Josep Torrellas, and Tianyin Xu<\/div>\n <div class=\"venue\">HotOS 2025<\/div>\n <div class=\"title\"><a href=\"https:\/\/dl.acm.org\/doi\/10.1145\/3713082.3730383\">Rethinking Tiered Storage: Talk to File Systems, Not Device Drivers<\/a><br\/>Jiyuan Zhang, <strong>Jongyul Kim<\/strong>, Chloe Alverti, Peizhe Liu, Weiwei Jia, and Tianyin Xu<\/div>\n <div class=\"venue\">ASPLOS 2025<\/div>\n <div class=\"title\"><a href=\"https:\/\/dl.acm.org\/doi\/10.1145\/3676641.3711999\">M5: Mastering Page Migration and Memory Management for CXL-based Tiered Memory Systems<\/a><br\/>Yan Sun, <strong>Jongyul Kim<\/strong>, Douglas Yu, Jiyuan Zhang, Siyuan Chai, Michael Jaemin Kim, Hwayong Nam, Jaehyun Park, Eojin Na, Yifan Yuan, Ren Wang, Jung Ho Ahn, Tianyin Xu, Nam Sung Kim<\/div>\n <div class=\"venue\">ASPLOS 2024<\/div>\n <div class=\"title\"><a href=\"https:\/\/dl.acm.org\/doi\/10.1145\/3620665.3640358\">Direct Memory Translation for Virtualized Clouds<\/a><br\/>Jiyuan Zhang, Weiwei Jia, Siyuan Chai, Peizhe Liu, <strong>Jongyul Kim<\/strong>, and Tianyin Xu<\/div>\n <div class=\"venue\">NVMW 2022<\/div>\n <div class=\"title\"><a href=\"http:\/\/nvmw.ucsd.edu\/onlineprogram\/#paper-32\">LineFS: Efficient SmartNIC Offload of a Distributed File System with Pipeline Parallelism<\/a><br\/><strong>Jongyul Kim<\/strong>, Insu Jang, Waleed Reda, Jaeseong Im, Marco Canini, Dejan Kosti\u0107, Youngjin Kwon, Simon Peter, and Emmett Witchel<\/div>\n <div class=\"venue\">SOSP 2021<\/div>\n <div class=\"title\"><a href=\"https:\/\/dl.acm.org\/doi\/10.1145\/3477132.3483565\">LineFS: Efficient SmartNIC Offload of a Distributed File System with Pipeline Parallelism<\/a><br\/><strong>Jongyul Kim<\/strong>, Insu Jang, Waleed Reda, Jaeseong Im, Marco Canini, Dejan Kosti\u0107, Youngjin Kwon, Simon Peter, and Emmett Witchel<br\/><span class=\"award\">\ud83c\udfc6 Best Paper Award<\/span><br\/><a href=\"https:\/\/yulistic.github.io\/files\/LineFS_slides_20min.ppsx\" class=\"talk-link\">Slides<\/a><\/div>\n <div class=\"venue\">NVMW 2021<\/div>\n <div class=\"title\"><a href=\"http:\/\/nvmw.ucsd.edu\/program\/#paper-29\">Assise: Performance and Availability via Client-local NVM in a Distributed File System<\/a><br\/>Thomas E. Anderson, Marco Canini, <strong>Jongyul Kim<\/strong>, Dejan Kosti\u0107, Youngjin Kwon, Simon Peter, Waleed Reda, Henry N. Schuh, and Emmett Witchel<br\/><span class=\"award\">Memorable Paper Award Finalists<\/span><\/div>\n <div class=\"venue\">OSDI 2020<\/div>\n <div class=\"title\"><a href=\"https:\/\/www.usenix.org\/conference\/osdi20\/presentation\/anderson\">Assise: Performance and Availability via Client-local NVM in a Distributed File System<\/a><br\/>Thomas E. Anderson, Marco Canini, <strong>Jongyul Kim<\/strong>, Dejan Kosti\u0107, Youngjin Kwon, Simon Peter, Waleed Reda, Henry N. Schuh, and Emmett Witchel<\/div>\n <div class=\"venue\">SoCC 2017<\/div>\n <div class=\"title\"><a href=\"https:\/\/dl.acm.org\/doi\/10.1145\/3127479.3129254\">On-demand virtualization for live migration in bare metal cloud<\/a><br\/>Jaeseong Im, <strong>Jongyul Kim<\/strong>, Jonguk Kim, Seongwook Jin, and Seungryoul Maeng<\/div>\n<\/div>\n<h3 id=\"journal-papers\">Journal Papers<\/h3>\n<div class=\"pubs\">\n <div class=\"venue\">IEEE TCC 2022<\/div>\n <div class=\"title\"><a href=\"https:\/\/ieeexplore.ieee.org\/document\/9786612\">On-demand Virtualization for Post-copy OS Migration in Bare-metal Cloud<\/a><br\/>Jaeseong Im, <strong>Jongyul Kim<\/strong>, Youngjin Kwon, Seungryoul Maeng<br\/><em>Impact factor: 5.938<\/em><\/div>\n<\/div>"}]}}